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
flake8configuration 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__.pyshall 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