Skip to content

hunterhogan/stubFileNotFound

Repository files navigation

stubFileNotFound: Stub Type Files that reduce complaints from Pylance and Ruff

  • I usually run stubdefaulter.
  • I sometimes add missing annotations.
  • I sometimes use Any for missing annotations so type checkers don't complain about "UNKNOWN".
  • Most changes are automated, but not sophisticated.

This is a useful tool for me, but I haven't really figured out how to make it useful for more people.

How to Contribute

  1. Create or improve a stub file.
  2. Submit a Pull Request.

Usage

The following might work for you, but I don't really know for sure.

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