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://api.travis-ci.org/seddonym/layer_linter.svg?branch=master 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 within 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-lint 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:
    - highlevelmodule
    - mediumlevelmodule
    - lowlevelmodule

From your project root, run:

layer-lint 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.

History

0.1.0 (2018-06-20)

  • First release on PyPI.

0.2.0 (2018-06-23)

  • Look for layers.yaml in current working directory.

0.3.0 (2018-06-24)

  • Rename command to layer-lint.

  • Changed order of layers in layers.yaml to be listed high level to low level.

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.4.0.tar.gz (21.8 kB view hashes)

Uploaded Source

Built Distribution

layer_linter-0.4.0-py34,py35,py36-none-any.whl (8.7 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