A flake8 plugin that flags imports exclusively used for type annotations
Project description
flake8-typing-only-imports
flake8 plugin that flags imports which are exclusively used for type hinting.
Installation
pip install flake8-typing-only-imports
Codes
| Code | Description |
|---|---|
| TYO100 | Local import '{module}' only used for type hinting |
| TYO101 | Remote import '{module}' only used for type hinting |
Rationale
A common trade-off for annotating large code bases is you will end up with a large number of extra imports. In some cases, this can lead to import circularity problems.
One (good) solution, as proposed in PEP484 is to use forward references and type checking blocks, like this:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from app.models import foo
def bar() -> 'foo':
...
At the same time, this is often easier said than done, because in larger code bases you can be dealing with hundreds of lines of imports for thousands of lines of code.
This plugin solves the issue of figuring out which imports to put inside your type-checking blocks 🚀
As a pre-commit hook
See pre-commit for instructions
Sample .pre-commit-config.yaml:
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.8
hooks:
- id: flake8
additional_dependencies: [flake8-typing-only-imports]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flake8-typing-only-imports-0.1.2.tar.gz.
File metadata
- Download URL: flake8-typing-only-imports-0.1.2.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.4.0-1039-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e470fec4afbbb9143d4aaded7c8399d96d12713ee9a7c83d997ad7f6426dd03
|
|
| MD5 |
985f5da5e54788537e1599fbdc3d3bb8
|
|
| BLAKE2b-256 |
243f8ebb5160afe583be4e165b4bd108ecd7e3d8bcbff75338505c819baa8dbb
|
File details
Details for the file flake8_typing_only_imports-0.1.2-py3-none-any.whl.
File metadata
- Download URL: flake8_typing_only_imports-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.4.0-1039-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1061b03103639ebfef84d06e56a3b85e6cc215424557dc6c5656d2f76fc9cfa8
|
|
| MD5 |
94724f6373f180be72f51c74f89faa96
|
|
| BLAKE2b-256 |
548e5b1cbedd8f0ff2a3d219fb5c00073e1f93204d116b3142d9817ddac9c79e
|