Skip to content

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
  4. pytype

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')

My recovery

Static Badge YouTube Channel Subscribers

How to code

Coding One Step at a Time:

  1. WRITE CODE.
  2. Don't write stupid code that's hard to revise.
  3. Write good code.
  4. When revising, write better code.

CC-BY-NC-4.0