Skip to main content

A plugin for flake8 to enable linting .pyi stub files.

Project description

flake8-pyi

A plugin for Flake8 that provides specializations for type hinting stub files, especially interesting for linting typeshed.

Refer to this documentation for more details on stub files.

Functionality

  1. Adds the .pyi extension to the default value of the --filename command-line argument to Flake8. This means stubs are linted by default with this plugin enabled, without needing to explicitly list every file.

  2. Modifies PyFlakes runs for .pyi files to defer checking type annotation expressions after the entire file has been read. This enables support for first-class forward references that stub files use.

  3. Provides a number of .pyi-specific warnings that enforce typeshed's style guide.

Note: Be careful when using this plugin in the same environment as other flake8 plugins, as they might generate errors that are inappropriate for .pyi files (e.g., about missing docstrings). We recommend running flake8-pyi in a dedicated environment in your CI.

Lints provided

This plugin reserves codes starting with Y0. For a full list of lints currently provided by flake8-pyi, see the list of error codes.

Note that several error codes recommend using types from typing_extensions or _typeshed. Strictly speaking, these packages are not part of the standard library. However, these packages are included in typeshed's stdlib/ directory, meaning that type checkers believe them to be part of the standard library even if this does not reflect the reality at runtime. As such, since stubs are never executed at runtime, types from typing_extensions and _typeshed can be used freely in a stubs package, even if the package does not have an explicit dependency on either typing_extensions or typeshed.

Flake8-pyi's checks may produce false positives on stubs that aim to support Python 2.

License

MIT

Authors

Originally created by Łukasz Langa and now maintained by Jelle Zijlstra, Alex Waygood, Sebastian Rittau, Akuli, and Shantanu.

See also

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flake8_pyi-24.3.0.tar.gz (59.5 kB view details)

Uploaded Source

Built Distribution

flake8_pyi-24.3.0-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file flake8_pyi-24.3.0.tar.gz.

File metadata

  • Download URL: flake8_pyi-24.3.0.tar.gz
  • Upload date:
  • Size: 59.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for flake8_pyi-24.3.0.tar.gz
Algorithm Hash digest
SHA256 2d4e55a499b160a9eeb696ca42d693f340fc0cc4a028e0fc9e3aaf3987cb51a1
MD5 fae36fed3a43617359bf0e9ea4a8990e
BLAKE2b-256 6e16abec73996dbb9c16ab774fbedd6ae58aae4b85c210ba5cda9a454f50a652

See more details on using hashes here.

Provenance

File details

Details for the file flake8_pyi-24.3.0-py3-none-any.whl.

File metadata

  • Download URL: flake8_pyi-24.3.0-py3-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for flake8_pyi-24.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20afdfd27e4eaa9219fc1d0c4ff19fad8bd8eeae285d6a6fad7411044921034c
MD5 62ad7122457f59f633c010d4e519193d
BLAKE2b-256 0c1b1a339c6e2d3b367e6bedc8168f9ff181b2b57452dd8f1e0ace627152b6e7

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page