-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add typing #23
Add typing #23
Conversation
Used strings for the typing of RGBLED.init(). Reverted the Sphinx conf.py, requirements.txt and optional_requirements.txt. Now passes CI |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added feedback below, thanks for the submission!
adafruit_rgbled.py
Outdated
def __init__(self, red_pin, green_pin, blue_pin, invert_pwm=False): | ||
def __init__( | ||
self, | ||
red_pin: Union["microcontroller.Pin", PWMOut, "PWMChannel"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any reason you're using quotes instead of importing within the try
/except
block?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the "microcontroller.Pin" I was getting "Not Implemented" exceptions in my PyCharm environment. That now happens with the from pwmio import PWMOut
which makes this moot. I've changed this to use from microcontroller import Pin
For the "PWMChannel" I couldn't find a library with PWMChannel
that I can import on my laptop. The #circuitpython-dev
Discord channel suggested using quotes. If you know of a library that I can use, I'm happy to make that change too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
…and the CI is failing with
File "/home/runner/work/Adafruit_CircuitPython_RGBLED/Adafruit_CircuitPython_RGBLED/adafruit_rgbled.py", line 98, in RGBLED
red_pin: Union[microcontroller.Pin, PWMOut, "PWMChannel"],
^^^^^^^^^^^^^^^
NameError: name 'microcontroller' is not defined
Error: Process completed with exit code 2.
Which may be why I used the quotes. Can't remember TBH!
adafruit-blinka
is in requirements.txt
and that's where I thought the microcontroller
module lives.
I'll push a commit with quotes to have something that passes the CI.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like it's failing because it isn't actually imported in the file. If you add it as an import to the try
/except
block, it should work fine without quotes. Same thing for PWMChannel
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With import statements in the try/except
block I can get Pin
to pass CI but not PWMChannel
.
try:
from typing import Union, Optional, Type
from types import TracebackType
from microcontroller import Pin
from adafruit_pca9685 import PWMChannel
from circuitpython_typing.led import ColorBasedColorUnion
except ImportError:
pass
...
def __init__(
self,
red_pin: Union[Pin, PWMOut, PWMChannel],
green_pin: Union[Pin, PWMOut, PWMChannel],
blue_pin: Union[Pin, PWMOut, PWMChannel],
invert_pwm: bool = False,
) -> None:
I've added adafruit-pca9685
to requirements.txt
but this did not help.
Warning, treated as error:
autodoc: failed to import module 'adafruit_rgbled'; the following exception was raised:
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/sphinx/ext/autodoc/importer.py", line 60, in import_module
return importlib.import_module(modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/runner/work/Adafruit_CircuitPython_RGBLED/Adafruit_CircuitPython_RGBLED/adafruit_rgbled.py", line 36, in <module>
class RGBLED:
File "/home/runner/work/Adafruit_CircuitPython_RGBLED/Adafruit_CircuitPython_RGBLED/adafruit_rgbled.py", line 100, in RGBLED
red_pin: Union[Pin, PWMOut, PWMChannel],
^^^^^^^^^^
NameError: name 'PWMChannel' is not defined
Error: Process completed with exit code 2.```
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the changes! I've added followup to the points above.
…und PWMChannel in doc-string.
Your welcome, thanks for taking the time to review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I took a look at the actions failure and found that it was just missing the module that PWMChannel is imported from. The pip name was slightly different from what was in the requirements.txt file.
I pushed a new commit that changes and now the docs build is suceeding.
These changes look good to me. Thanks for working on this @BiffoBear!
Updating https://github.com/adafruit/Adafruit_CircuitPython_MCP9808 to 3.3.21 from 3.3.20: > Merge pull request adafruit/Adafruit_CircuitPython_MCP9808#37 from jposada202020/updating_example Updating https://github.com/adafruit/Adafruit_CircuitPython_AdafruitIO to 5.7.2 from 5.7.1: > Merge pull request adafruit/Adafruit_CircuitPython_AdafruitIO#98 from ForgottenProgramme/mahe-typehint Updating https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer to 4.2.0 from 4.1.0: > Merge pull request adafruit/Adafruit_CircuitPython_HTTPServer#63 from michalpokusa/external-routes-websockets-sse Updating https://github.com/adafruit/Adafruit_CircuitPython_NeoKey to 1.1.0 from 1.0.12: > Merge pull request adafruit/Adafruit_CircuitPython_NeoKey#11 from EAGrahamJr/all-the-buttons Updating https://github.com/adafruit/Adafruit_CircuitPython_RGBLED to 1.1.17 from 1.1.16: > Merge pull request adafruit/Adafruit_CircuitPython_RGBLED#23 from BiffoBear/Add_typing Updating https://github.com/adafruit/Adafruit_CircuitPython_TinyLoRa to 2.2.16 from 2.2.15: > Merge pull request adafruit/Adafruit_CircuitPython_TinyLoRa#50 from samatjain/type-annotations Updating https://github.com/adafruit/Adafruit_CircuitPython_Bundle/circuitpython_library_list.md to NA from NA: > Updated download stats for the libraries
closes #17 Added typing. Sphinx compiles the docs.