]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Fix cyclic import and Pin class type
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Fri, 4 Mar 2022 19:09:51 +0000 (11:09 -0800)
committerMelissa LeBlanc-Williams <melissa@adafruit.com>
Fri, 4 Mar 2022 19:09:51 +0000 (11:09 -0800)
src/adafruit_blinka/microcontroller/esp8266/pin.py
src/adafruit_blinka/microcontroller/generic_micropython/__init__.py
src/adafruit_blinka/microcontroller/rp2040/pin.py
src/adafruit_blinka/microcontroller/stm32/stm32f405/pin.py
src/microcontroller/__init__.py

index dbc14c153c21d9b7b11260bd79dd09abbba9ce3d..5f57036e7bc4c08ff42948e747dae8e4fba57c47 100755 (executable)
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: MIT
 """ESP8266 pin names"""
 
-from microcontroller import Pin
+from ..generic_micropython import Pin
 
 GPIO0 = Pin(0)
 GPIO1 = Pin(1)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cb3683c4e69fc246c70335d69424d9b945859d90 100644 (file)
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Genereic Pin class for use with MicroPython boards"""
+from adafruit_blinka import Enum
+
+
+class Pin(Enum):
+    """
+    Identifies an IO pin on the microcontroller.
+
+    They are fixed by the hardware so they cannot be constructed on demand. Instead, use board or
+    microcontroller.pin to reference the desired pin.
+    """
+
+    def __init__(self, pin_id):
+        """Identifier for pin, referencing platform-specific pin id"""
+        self.id = pin_id
+
+    def __repr__(self):
+        # pylint: disable=import-outside-toplevel, cyclic-import
+        import board
+        import microcontroller.pin
+
+        for key in dir(board):
+            if getattr(board, key) is self:
+                return "board.{}".format(key)
+        # pylint: enable=import-outside-toplevel, cyclic-import
+
+        for key in dir(microcontroller.pin):
+            if getattr(microcontroller.pin, key) is self:
+                return "microcontroller.pin.{}".format(key)
+        return repr(self)
index 309008c8d384f704aea730cf048f9f818b2b72a0..518090d38a18d280dbbab8c7717a15cad4a35fd5 100755 (executable)
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: MIT
 """RP2040 pins"""
 
-from microcontroller import Pin
+from ..generic_micropython import Pin
 
 GP0 = Pin(0)
 GP1 = Pin(1)
index da57d0b3601a7250ac9fe8664e1592c099ea0b5d..f967b2b9343afe53a1c0ed9f92ec6f216cb7cab6 100755 (executable)
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: MIT
 """STM32F405 pins"""
 
-from microcontroller import Pin
+from ...generic_micropython import Pin
 
 A0 = Pin("A0")
 A1 = Pin("A1")
index cb38486681992da038bbe3b85761e2c30081c592..3d71f8a8ffa0cfa9271dad37e952aa89bd308d9d 100755 (executable)
@@ -12,9 +12,9 @@ import sys
 import time
 
 from adafruit_platformdetect.constants import chips as ap_chip
-from adafruit_blinka import Enum
 from adafruit_blinka.agnostic import board_id, chip_id
-import microcontroller.pin
+from microcontroller import pin  # pylint: disable=unused-import
+from microcontroller.pin import Pin  # pylint: disable=unused-import
 
 
 def delay_us(delay):
@@ -22,33 +22,6 @@ def delay_us(delay):
     time.sleep(delay / 1e6)
 
 
-class Pin(Enum):
-    """
-    Identifies an IO pin on the microcontroller.
-
-    They are fixed by the hardware so they cannot be constructed on demand. Instead, use board or
-    microcontroller.pin to reference the desired pin.
-    """
-
-    def __init__(self, pin_id):
-        """Identifier for pin, referencing platform-specific pin id"""
-        self.id = pin_id
-
-    def __repr__(self):
-        # pylint: disable=import-outside-toplevel, cyclic-import
-        import board
-
-        for key in dir(board):
-            if getattr(board, key) is self:
-                return "board.{}".format(key)
-        # pylint: enable=import-outside-toplevel, cyclic-import
-
-        for key in dir(microcontroller.pin):
-            if getattr(microcontroller.pin, key) is self:
-                return "microcontroller.pin.{}".format(key)
-        return repr(self)
-
-
 # We intentionally are patching into this namespace so skip the wildcard check.
 # pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports