adafruit / Adafruit_CircuitPython_CharLCD

Library code for character LCD interfacing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Missing Type Annotations

FoamyGuy opened this issue · comments

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_character_lcd/character_lcd_spi.py:56
  • adafruit_character_lcd/character_lcd_i2c.py:55
  • adafruit_character_lcd/character_lcd_rgb_i2c.py:65
  • adafruit_character_lcd/character_lcd.py:76
  • adafruit_character_lcd/character_lcd.py:87
  • adafruit_character_lcd/character_lcd.py:118
  • adafruit_character_lcd/character_lcd.py:196
  • adafruit_character_lcd/character_lcd.py:225
  • adafruit_character_lcd/character_lcd.py:232
  • adafruit_character_lcd/character_lcd.py:275
  • adafruit_character_lcd/character_lcd.py:305
  • adafruit_character_lcd/character_lcd.py:338
  • adafruit_character_lcd/character_lcd.py:451
  • adafruit_character_lcd/character_lcd.py:468
  • adafruit_character_lcd/character_lcd.py:486
  • adafruit_character_lcd/character_lcd.py:543
  • adafruit_character_lcd/character_lcd.py:597
  • adafruit_character_lcd/character_lcd.py:625
  • adafruit_character_lcd/character_lcd.py:693

This was added somewhere along the line. Thank you to @julianaklulo for noticing at the PyCon 2023 sprint!