A flake8 plugin to enforce specific import policies in your Python codebase.
- Validate built-in, third-party, and local module import styles
- Enforce policies on absolute imports, relative imports, and aliasing
- Easily configurable through
flake8
configuration or CLI
NOTE: __future__
imports are ignored.
Not published to pypi.org yet, install directly from github.
You can configure the plugin using the standard flake8
configuration methods.
Below are the supported configuration options:
--forbid-stdlib-absolute
: Forbid absolute imports for standard library modules--allow-stdlib-from-module
: Allowfrom module import ...
for standard library modules--forbid-third-party-absolute
: Forbid absolute imports for third-party modules--allow-third-party-from-module
: Allowfrom module import ...
for third-party modules--forbid-local-absolute
: Forbid absolute imports for local library modules--forbid-local-from-module
: Forbidfrom module import ...
for local modules--forbid-relative-from-module
: Forbidfrom .module import ...
for relative modules--max-relative-level
: Specify the maximum level for relative imports. Default:1
--init-must-follow-import-policy
: Whether__init__.py
shall follow import policies. Default:False
--register-import-aliases
: Register allowed aliases for modules. Format:original=alias,module.nested=another_alias
You can override rules for specific modules:
--allow-absolute
: List of modules to always allowimport module.nested
--forbid-absolute
: List of modules to always forbidimport module.nested
--allow-from-module
: List of modules to always allowfrom module import ...
--forbid-from-module
: List of modules to always forbidfrom module import ...
Example configuration in setup.cfg
:
[flake8]
register-import-aliases = numpy=np, redis.asyncio=aioredis, sqlalchemy=sa
allow-from-module = typing, backports, redis