Closed
Description
The ideal situation is where a file is annotated. The other obvious choice if there is a module.pyi stub file alongside module.py. However, since package maintainers are free not to add type hinting to their packages, there has to be support for third-party stubs installable by pip
from PyPI. This opens the following questions:
- should there be a recommended naming scheme for those stubs? "No, a package maintainer can always trump third-party implementations by including types in his own module.".
- should there be a default install place for those stubs? "Yes, this makes the type checker's stub discovery much easier. We are proposing using
data_files=('share/typehinting/', pathlib.Path(SRC_PATH).glob('**/*.pyi'))
in setup.py. We are proposing to add a setup.cfg hook to do the right thing automatically." - should third-party stubs be versioned? "Yes, they should be versioned as the lowest version of the source package that they are describing. Example: FooPackage has versions 1.1, 1.2, 1.3, 2.0, 2.1, 2.2, 2.3, 2.4. There are API changes in versions 1.1, 2.0 and 2.4. We need only those three versions of stubs, in which case the user should install the closest lower version of stubs available. If the user lives dangerously and does not pin versions, running both the source package and the stubs as latest will generally work (as long as the stubs are regularly updated)."
- as mentioned previously, the package itself might provide *.pyi files. There will be a directory (
shared/typehinting/
) where third-party packages can put their implementation of stubs for external packages. Also, tools like type checkers or IDEs might provide their own custom paths for stubs they themselves populate, etc. The type checker itself is expected to only load one *.pyi file per corresponding *.py module.
Metadata
Metadata
Assignees
Labels
No labels