Skip to main content

Layer Linter checks that your project follows a custom-defined layered architecture.

Project description

Layer Linter

https://img.shields.io/pypi/v/layer_linter.svg Python versions https://img.shields.io/travis/seddonym/layer_linter.svg https://codecov.io/gh/seddonym/layer_linter/branch/master/graph/badge.svg Documentation Status Updates

Layer Linter checks that your project follows a custom-defined layered architecture.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

layer_linter-0.2.0.tar.gz (23.7 kB view hashes)

Uploaded Source

Built Distribution

layer_linter-0.2.0-py34,py35,py36-none-any.whl (7.3 kB view hashes)

Uploaded Python 3.4,py35,py36

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page