Metadata-Version: 1.1
Name: layer-linter
Version: 0.7.2
Summary: Layer Linter checks that your project follows a custom-defined layered architecture.
Home-page: https://github.com/seddonym/layer_linter
Author: David Seddon
Author-email: david@seddonym.me
License: BSD license
Description: ============
        Layer Linter
        ============
        
        
        .. image:: https://img.shields.io/pypi/v/layer_linter.svg
                :target: https://pypi.python.org/pypi/layer_linter
        
        .. image:: https://img.shields.io/pypi/pyversions/layer-linter.svg
            :alt: Python versions
            :target: http://pypi.python.org/pypi/layer-linter/
        
        .. image:: https://api.travis-ci.org/seddonym/layer_linter.svg?branch=master
                :target: https://travis-ci.org/seddonym/layer_linter
        
        .. image:: https://codecov.io/gh/seddonym/layer_linter/branch/master/graph/badge.svg
                :target: https://codecov.io/gh/seddonym/layer_linter
        
        .. image:: https://readthedocs.org/projects/layer-linter/badge/?version=latest
                :target: https://layer-linter.readthedocs.io/en/latest/?badge=latest
                :alt: Documentation Status
        
        .. image:: https://pyup.io/repos/github/seddonym/layer_linter/shield.svg
             :target: https://pyup.io/repos/github/seddonym/layer_linter/
             :alt: Updates
        
        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 within a team,
        when you want to enforce a particular architectural style.
        
        To define how layers work within your project, you create a ``layers.yml`` 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.yml`` in the root of your project, in this format:
        
        .. code-block:: none
        
            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:
        
        .. code-block:: none
        
            ============
            Layer Linter
            ============
        
            ---------
            Contracts
            ---------
        
            Analyzed 23 files, 44 dependencies.
            -----------------------------------
        
            My layer contract BROKEN
        
            Contracts: 0 kept, 1 broken.
        
            ----------------
            Broken contracts
            ----------------
        
        
            My layer contract
            -----------------
        
        
            1. myproject.packagetwo.lowlevelmodule imports myproject.packagetwo.highlevelmodule:
        
                myproject.packagetwo.lowlevelmodule <-
                myproject.utils <-
                myproject.packagetwo.highlevelmodule
        
        
        =======
        History
        =======
        
        0.1.0 (2018-06-20)
        ------------------
        
        * First release on PyPI.
        
        0.2.0 (2018-06-23)
        ------------------
        
        * Look for ``layers.yml`` in current working directory.
        
        0.3.0 (2018-06-24)
        ------------------
        
        * Rename command to ``layer-lint``.
        * Changed order of layers in ``layers.yml`` to be listed high level to low level.
        
        0.4.0 (2018-07-22)
        ------------------
        
        * Made dependency analysis more efficient and robust.
        * Improved report formatting.
        * Removed illegal dependencies that were implied by other, more succinct illegal dependencies.
        * Added ``--debug`` command line argument.
        
        0.5.0 (2018-08-01)
        ------------------
        
        * Added count of analysed files and dependencies to report.
        * Fixed issues from running command in a different directory to the package.
        * Increased speed of analysis.
        * Changed ``--config_directory`` command line argument to ``--config-directory``.
        
        0.6.0 (2018-08-07)
        ------------------
        
        * Added ability to whitelist paths.
        
        0.6.1 (2018-08-07)
        ------------------
        
        * Add current working directory to path.
        
        0.6.2 (2018-08-17)
        ------------------
        
        * Don't analyse children of directories that aren't Python packages.
        * Prevented installing incompatible version of Pydeps (1.6).
        
        0.7.0 (2018-09-04)
        ------------------
        
        * Complete rewrite of static analysis used to build dependency graph.
        * Added quiet and verbose reporting.
        * Added type annotation and mypy.
        * Build earlier versions of Python using pybackwards.
        * Corrected docs to refer to ``layers.yml`` instead of ``layers.yaml``.
        
        0.7.1 (2018-09-04)
        ------------------
        
        * Fix packaging bug with 0.7.0.
        
        latest
        ------
        
        * Fix bug with not checking all submodules of layer.
        
Keywords: layer-linter layer-lint
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
