Skip to main content

flake8 plugin which checks that typing imports are properly guarded

Project description

Build Status Azure DevOps coverage

flake8-typing-imports

flake8 plugin which checks that typing imports are properly guarded

installation

pip install flake8-typing-imports

rationale

unfortunately, the typing module has been pretty unstable -- it has seen api changes in 3.5.0, 3.5.2, 3.5.3, 3.5.4, 3.6.0, 3.6.1, 3.6.2, and 3.7.0!

depending on your supported version of python, you may need to guard your imports by if TYPE_CHECKING: (3.5.2+) or if False: if the things you are importing aren't available in all the pythons you support.

as it's pretty difficult to keep track of what version things changed and you can't always test against particular patch versions of python, this plugin helps you statically check this automatically!

# default / --min-python-version 3.5.0
from typing import Type  # TYP001
# default / --min-python-version 3.5.0
if False:
    from typing import Type  # OK!
# --min-python-version 3.7.0
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from typing import OrderedDict  # OK!

configuration

this plugin has a single configuration point (beyond those provided by flake8) which is the --min-python-version option.

by default, this option is 3.5.0. this includes all versions of python which have the typing module present.

you can also set this option in the flake8 configuration if you don't want to use the commandline:

[flake8]
min_python_version = 3.6.2

if a >= is set for python_requires in setup.cfg, that value will be used:

# setup.cfg setuptools metadata

[options]
python_requires = >=3.6

as a pre-commit hook

See pre-commit for instructions

Sample .pre-commit-config.yaml:

-   repo: https://gitlab.com/pycqa/flake8
    rev: 3.7.7
    hooks:
    -   id: flake8
        additional_dependencies: [flake8-typing-imports==1.1.0]

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_typing_imports-1.1.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

flake8_typing_imports-1.1.0-py2.py3-none-any.whl (5.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flake8_typing_imports-1.1.0.tar.gz.

File metadata

  • Download URL: flake8_typing_imports-1.1.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for flake8_typing_imports-1.1.0.tar.gz
Algorithm Hash digest
SHA256 8978da94e8bfed1bffcda1b2b8a717f7d149379dd6363267a0c3417787692c05
MD5 7c95d355ad98aadd83864c123bffd0dc
BLAKE2b-256 7d87c3e0a419af19ff26e0351d49aed66af2bfce32d46540f646632656009d96

See more details on using hashes here.

File details

Details for the file flake8_typing_imports-1.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: flake8_typing_imports-1.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for flake8_typing_imports-1.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 214b28acac57c10051793478333703889fcfbecf11c07c50be77c430e2dd2353
MD5 1187a27834b67e866fc033c6c28bfd3d
BLAKE2b-256 d3fea9db8f7629e37664c915e4f58a8bf10a977cf3d2d00d7cc57468628cb95d

See more details on using hashes here.

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