Layer Linter checks that your project follows a custom-defined layered architecture.
Project description
Layer Linter
Layer Linter checks that your project follows a custom-defined layered architecture.
Free software: BSD license
Documentation: https://layer-linter.readthedocs.io.
Overview
Layer Linter can be used as part of an automated test suite to check that you are following a self-imposed layered architecture within your Python project. This is particularly useful if you are working on a complex codebase with in a team, when you want to enforce a particular architectural style.
To define how layers work within your project, you create a layers.yaml file. This file prescribes the order in which different modules within your project may import from each other.
Running the layer-linter command will parse the file, analyse your project’s internal dependencies within your project, and error if you are violating your prescribed architecture.
Quick start
Install Layer Linter:
pip install layer_linter
Create a layers.yaml in the root of your project, in this format:
My Layers Contract:
packages:
- myproject.packageone
- myproject.packagetwo
- myproject.packagethree
layers:
- lowlevelmodule
- mediumlevelmodule
- highlevelmodule
From your project root, run:
layer-linter myproject
If your code violates the contract, you will see an error message as follows:
Contracts: 0 kept, 1 broken.
- Broken contract My Layers Contract:
- myproject.packagetwo.mediumlevelmodule not allowed to import myproject.packagetwo.highlevelmodule.
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2018-06-20)
First release on PyPI.
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
Hashes for layer_linter-0.2.0-py34,py35,py36-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d707646935b5efe5d1b6259aedbca6ff5985a26c824e964f2be8de4ab4bd337 |
|
MD5 | 1528897829a7812b9c9600c2a0f343e1 |
|
BLAKE2b-256 | 29ed9160e04090fbfd55f2d9c39f29f2381454e2b01e822f6b892147aad97930 |