MyPy - limited functionality¶
This section is preliminary and needs to be expanded. While MyPy used to work quite well with the .PY stubs, it is now not working anymore now that the stubs are type-only stubs.
MyPy and stub-only packages installed in a virtual environment¶
MyPy should automatically detect and use all Micropython packages installed in a virtual environment as they follow the PEP-561 standard for stub-only packages.
However MyPy fails to detect the stubs installed in a venv
:-(
This will need to be investigated in more detail, and possibly an issue to be raised with MyPy. In addition it has not been tested if MyPy is able to detect and allow an override by the MicroPython stdlib packages.
MyPy and stub-only packages installed in a typings
folder¶
MyPy can be configured to use stubs located in a folder, usually a folder named typings
for details see: https://mypy.readthedocs.io/en/stable/stubs.html
Although the documentation also states that stub-only packages cannot be located though a provided path this seems to work on intitial testing, with a few workarounds neede. (possibly the MyPy detecttion or definiton of a stub-only package does not flag the microspython-stub packages as stub-only packages)
Therefore after installing the stubs into a typings
folder, MyPy can be configured to use the stubs by setting the MYPYPATH
environment variable to the path of the typings
folder.
Linux/MacOS:
export MYPYPATH=./typings
Windows:
$env:MYPYPATH="./typings"
Workarounds for some mypy warnings and errors¶
mypy: "typings\sys.pyi" shadows library module "sys"
note: A user-defined top-level module with name "sys" is not supported
Partial workaround:
del typings/os.pyi
del typings/sys.pyi