Enforces rules for the internal and external imports within your Python project.
Import Linter allows you to define and enforce rules for the internal and external imports within your Python project.
- Free software: BSD license
- Documentation: https://import-linter.readthedocs.io.
Warning: This software is currently in beta. It is undergoing active development, and breaking changes may be introduced between versions. However, due to it being a development tool (rather than something that needs to be installed on a production system), it may be suitable for inclusion in your testing pipeline. It also means we actively encourage people to try it out and submit bug reports.
Import Linter is a command line tool to check that you are following a self-imposed architecture within your Python project. It does this by analysing the imports between all the modules in a Python package, and compares this against a set of rules that you provide in a configuration file.
The configuration file contains one or more ‘contracts’. Each contract has a specific type, which determines the sort of rules it will apply. For example, the forbidden contract type allows you to check that certain modules or packages are not imported by parts of your project.
Import Linter is particularly useful if you are working on a complex codebase within a team, when you want to enforce a particular architectural style. In this case you can add Import Linter to your deployment pipeline, so that any code that does not follow the architecture will fail tests.
If there isn’t a built in contract type that fits your desired architecture, you can define a custom one.
Install Import Linter:
pip install import-linter
Decide on the dependency flows you wish to check. In this example, we have decided to make sure that myproject.foo has dependencies on neither myproject.bar nor myproject.baz, so we will use the forbidden contract type.
Create an .importlinter file in the root of your project to define your contract(s). In this case:
[importlinter] root_package = myproject [importlinter:contract:1] name=Foo doesn't import bar or baz type=forbidden source_modules= myproject.foo forbidden_modules= myproject.bar myproject.baz
Now, from your project root, run:
If your code violates the contract, you will see an error message something like this:
============= Import Linter ============= --------- Contracts --------- Analyzed 23 files, 44 dependencies. ----------------------------------- Foo doesn't import bar or baz BROKEN Contracts: 1 broken. ---------------- Broken contracts ---------------- Foo doesn't import bar or baz ----------------------------- myproject.foo is not allowed to import myproject.bar: - myproject.foo.blue -> myproject.utils.red (l.16) myproject.utils.red -> myproject.utils.green (l.1) myproject.utils.green -> myproject.bar.yellow (l.3)
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size import-linter-1.0b4.tar.gz (15.6 kB)||File type Source||Python version None||Upload date||Hashes View hashes|