Skip to content

Missing Type Annotations #17

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

Closed
12 tasks
FoamyGuy opened this issue Sep 27, 2021 · 4 comments · Fixed by #22
Closed
12 tasks

Missing Type Annotations #17

FoamyGuy opened this issue Sep 27, 2021 · 4 comments · Fixed by #22
Labels

Comments

@FoamyGuy
Copy link
Contributor

There are missing type annotations for some functions in this library.

The typing module does not exist on CircuitPython devices so the import needs to be wrapped in try/except to catch the error for missing import. There is an example of how that is done here:

try:
    from typing import List, Tuple
except ImportError:
    pass

Once imported the typing annotations for the argument type(s), and return type(s) can be added to the function signature. Here is an example of a function that has had this done already:

def wrap_text_to_pixels(
    string: str, max_width: int, font=None, indent0: str = "", indent1: str = ""
) -> List[str]:

If you are new to Git or Github we have a guide about contributing to our projects here: https://learn.adafruit.com/contribute-to-circuitpython-with-git-and-github

There is also a guide that covers our CI utilities and how to run them locally to ensure they will pass in Github Actions here: https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/check-your-code In particular the pages: Sharing docs on ReadTheDocs and Check your code with pre-commit contain the tools to install and commands to run locally to run the checks.

If you are attempting to resolve this issue and need help, you can post a comment on this issue and tag both @FoamyGuy and @kattni or reach out to us on Discord: https://adafru.it/discord in the #circuitpython-dev channel.

The following locations are reported by mypy to be missing type annotations:

  • adafruit_hue.py:41
  • adafruit_hue.py:58
  • adafruit_hue.py:133
  • adafruit_hue.py:140
  • adafruit_hue.py:155
  • adafruit_hue.py:164
  • adafruit_hue.py:177
  • adafruit_hue.py:186
  • adafruit_hue.py:208
  • adafruit_hue.py:221
  • adafruit_hue.py:231
  • adafruit_hue.py:241
@adafruit-adabot adafruit-adabot added the Hacktoberfest DigitalOcean's Hacktoberfest label Oct 26, 2021
@FoamyGuy FoamyGuy removed the Hacktoberfest DigitalOcean's Hacktoberfest label Nov 4, 2021
@tcfranks
Copy link
Contributor

oh boy, so many questions. Black does not like line 122 in main version, 128 in mine - "error: cannot format adafruit_hue.py: Cannot parse: 124:8: resp = self._wifi.post(self._bridge_url, json=data)"

also, id's according to hue interface appear to be able to be a string or int? groups definitely string, it appears. Also all the returns from the api calls appear to be a json body, which i've tentatively typehinted as 'str'. Is there a better way?

@FoamyGuy
Copy link
Contributor Author

@tcfranks thanks for working on this. Is your version pushed to a branch in github somewhere? If so I can take a look later tonight to try to see if I can figure out what the black formatting issue might be.

for things that can be multiple types there a Union declaration that can be used like this: Union[string, int].

string does sound correct to me for json data.

@tcfranks
Copy link
Contributor

I think i introduced the line error - fixing it now.

@tcfranks
Copy link
Contributor

yep, totes mine. that's fixed. if you don't mind, look at line 41 here - how to type wifi_manager? Seems like a cheat to use 'Any' but also it's literally expecting the wifimanager object from one of two specific libraries, or it just raises a typeerror

@tekktrik tekktrik linked a pull request Aug 20, 2022 that will close this issue
FoamyGuy added a commit that referenced this issue Aug 22, 2022
correct Missing Type Annotations #17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants