Skip to content

Crowdsourced stub type files for third-party Python packages.

License

Notifications You must be signed in to change notification settings

hunterhogan/stubFileNotFound

Repository files navigation

stubFileNotFound: Crowdsourced Stub Type Files for Third-Party Python Packages

stubFileNotFound is a collaborative project for creating and sharing Python stub files (.pyi) for third-party Python packages. Stub files provide type hints and docstrings for modules, enabling better static analysis with tools like PyLance, pyright, and mypy and making it easier for developers to use the package.

How to Contribute

  1. Create or improve a stub file.

  2. Submit a Pull Request.

Usage

To use the stub files from this repository:

  1. Clone the repository.

    git clone https://github.com/hunterhogan/stubFileNotFound.git
  2. Tell your type checker about the stubs directory.

Visual Studio Code

Relevant settings may include

  • python.analysis.stubPath
  • mypy-type-checker.args "--custom-typeshed-dir=typings"

Virtual directories (symlinks)

(.venv) C:\apps\Z0Z_tools> MKLINK /D typings \apps\stubFileNotFound\stubs

Tools I might use to create a stub

  1. Copy and paste the signature into a stub file. Improve it.

  2. mypy stubgen

    stubgen --verbose --include-docstrings ^
    --include-private --output typings ^
    --package nameOfAnInstalledPackage

    VS Code: workbench.action.openGlobalKeybindingsFile

     {
         "args": {
             "text": "stubgen --include-private --include-docstrings --output typings --verbose -p ${selectedText}\n"
         },
         "command": "workbench.action.terminal.sendSequence",
         "key": "ctrl+shift+t"
     },
  3. pyright

    1. pyright --createstub nameOfAnInstalledPackage
    2. "Quick Fix" in VS Code.
  4. Pylance if reportMissingTypeStubs is enabled and the stub is missing: "Quick Fix"

Tools that can allegedly create a stub

  1. MonkeyType
  2. stubgen-pyx: stubgen-pyx /path/to/package
  3. stub-generator

Tools I probably won't use

  1. Nuitka-Stubgen: pip install AST-Stubgen

    import pathlib
    import Ast_Stubgen
    pathlib.Path('typings/Ast_Stubgen').mkdir(parents=True, exist_ok=True)
    Ast_Stubgen.generate_stub('.venv/Lib/site-packages/Ast_Stubgen/stubgen.py', 'typings/Ast_Stubgen/stubgen.pyi')
    Ast_Stubgen.generate_stub('.venv/Lib/site-packages/Ast_Stubgen/__init__.py', 'typings/Ast_Stubgen/__init__.pyi')

CC-BY-NC-4.0