adafruit / adafruit/Adafruit_CircuitPython_seesaw

Missing Type Annotations

Open
#83 0 comments 0 reactions 0 assignees View on GitHub
documentation Hacktoberfest
Dominant language
Python
Stars
68
Forks
37
PR merge metrics
No merged PRs in 30d

Description

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:

```python
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:

```python
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_seesaw/samd09.py:16
- [ ] adafruit_seesaw/rotaryio.py:21
- [ ] adafruit_seesaw/rotaryio.py:34
- [ ] adafruit_seesaw/robohat.py:16
- [ ] adafruit_seesaw/pwmout.py:19
- [ ] adafruit_seesaw/pwmout.py:31
- [ ] adafruit_seesaw/pwmout.py:44
- [ ] adafruit_seesaw/pwmout.py:56
- [ ] adafruit_seesaw/crickit.py:16
- [ ] adafruit_seesaw/analoginput.py:24
- [ ] adafruit_seesaw/seesaw.py:42
- [ ] adafruit_seesaw/seesaw.py:136
- [ ] adafruit_seesaw/seesaw.py:189
- [ ] adafruit_seesaw/seesaw.py:196
- [ ] adafruit_seesaw/seesaw.py:203
- [ ] adafruit_seesaw/seesaw.py:209
- [ ] adafruit_seesaw/seesaw.py:217
- [ ] adafruit_seesaw/seesaw.py:224
- [ ] adafruit_seesaw/seesaw.py:232
- [ ] adafruit_seesaw/seesaw.py:238
- [ ] adafruit_seesaw/seesaw.py:253
- [ ] adafruit_seesaw/seesaw.py:288
- [ ] adafruit_seesaw/seesaw.py:310
- [ ] adafruit_seesaw/seesaw.py:314
- [ ] adafruit_seesaw/seesaw.py:318
- [ ] adafruit_seesaw/seesaw.py:326
- [ ] adafruit_seesaw/seesaw.py:335
- [ ] adafruit_seesaw/seesaw.py:362
- [ ] adafruit_seesaw/seesaw.py:372
- [ ] adafruit_seesaw/seesaw.py:378
- [ ] adafruit_seesaw/seesaw.py:383
- [ ] adafruit_seesaw/seesaw.py:389
- [ ] adafruit_seesaw/seesaw.py:393
- [ ] adafruit_seesaw/seesaw.py:413
- [ ] adafruit_seesaw/seesaw.py:424
- [ ] adafruit_seesaw/seesaw.py:428
- [ ] adafruit_seesaw/seesaw.py:432
- [ ] adafruit_seesaw/seesaw.py:436
- [ ] adafruit_seesaw/seesaw.py:441
- [ ] adafruit_seesaw/seesaw.py:445
- [ ] adafruit_seesaw/seesaw.py:451
- [ ] adafruit_seesaw/seesaw.py:462
- [ ] adafruit_seesaw/neopixel.py:20
- [ ] adafruit_seesaw/neopixel.py:59
- [ ] adafruit_seesaw/neopixel.py:91
- [ ] adafruit_seesaw/neopixel.py:111
- [ ] adafruit_seesaw/neopixel.py:154
- [ ] adafruit_seesaw/neopixel.py:157
- [ ] adafruit_seesaw/keypad.py:16
- [ ] adafruit_seesaw/keypad.py:42
- [ ] adafruit_seesaw/keypad.py:66
- [ ] adafruit_seesaw/keypad.py:76
- [ ] adafruit_seesaw/keypad.py:93
- [ ] adafruit_seesaw/keypad.py:98
- [ ] adafruit_seesaw/keypad.py:116
- [ ] adafruit_seesaw/digitalio.py:28
- [ ] adafruit_seesaw/digitalio.py:39
- [ ] adafruit_seesaw/digitalio.py:46
- [ ] adafruit_seesaw/digitalio.py:62
- [ ] adafruit_seesaw/digitalio.py:79
- [ ] adafruit_seesaw/digitalio.py:91
- [ ] adafruit_seesaw/digitalio.py:100
- [ ] adafruit_seesaw/tftshield18.py:19
- [ ] adafruit_seesaw/tftshield18.py:69
- [ ] adafruit_seesaw/tftshield18.py:79
- [ ] adafruit_seesaw/tftshield18.py:88
- [ ] adafruit_seesaw/tftshield18.py:97

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the listed functions in adafruit_seesaw/*.py, especially seesaw.py and the smaller device modules, and compare them with the existing wrap_text_to_pixels annotation example. Wrap the typing import for CircuitPython compatibility, add annotations at the reported lines, then run mypy and the documented pre-commit checks. Done means the checklist is complete and those checks pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
embedded-iot
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.