跳转到主要内容

Layer Linter会检查您的项目是否遵循自定义定义的分层架构。

项目描述

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

由于Import Linter的出现,Layer Linter已被弃用。

Import Linter具有与Layer Linter相同的功能,但功能更丰富,API略有不同。如果您已经在使用Layer Linter,迁移到Import Linter很简单:这里有一个指南

大纲

Layer Linter通过检查项目的内部依赖关系(即模块之间的导入)来确保您的项目遵循自定义定义的分层架构。

概述

Layer Linter是一个命令行工具,用于检查您是否在Python项目中遵循自我强加的架构。它通过分析代码库中所有模块之间的内部导入,并将其与您在文件中提供的简单规则集进行比较来实现。

例如,您可以使用它来检查myproject.foo内的任何模块都不应从myproject.bar内的任何模块导入,即使是通过间接方式。

这对于在团队中工作并希望强制执行特定架构风格的情况下特别有用。在这种情况下,您可以将Layer Linter添加到部署管道中,以便任何不遵循架构的代码都将导致测试失败。

快速入门

安装Layer Linter

pip install layer-linter

决定您希望检查的依赖项流。在这个例子中,我们将项目组织成了三个子包,myproject.highmyproject.mediummyproject.low。这些子包被称为。注意:层必须具有相同的父包(即所有都在同一目录下)。这个父包被称为容器

在项目的根目录中创建一个layers.yml文件。例如

My Layers Contract:
  containers:
    - myproject
  layers:
    - high
    - medium
    - low

(此合约告知Layer Linter,层的顺序从底部的low到顶部的high。高层的层可以导入低层的层,但不能反过来。)

注意,容器是Python包的绝对名称,而层相对于容器。

现在,从项目根目录运行

layer-lint myproject

如果您的代码违反了合约,您将看到类似以下错误消息

============
Layer Linter
============

---------
Contracts
---------

Analyzed 23 files, 44 dependencies.
-----------------------------------

My layer contract BROKEN

Contracts: 0 kept, 1 broken.

----------------
Broken contracts
----------------


My layer contract
-----------------


1. myproject.low.x imports myproject.high.y:

    myproject.low.x <-
    myproject.utils <-
    myproject.high.y

有关更多详细信息,请参阅用法

历史

0.1.0 (2018-06-20)

  • 首次在PyPI上发布。

0.2.0 (2018-06-23)

  • 在当前工作目录中查找layers.yml

0.3.0 (2018-06-24)

  • 将命令重命名为layer-lint

  • layers.yml中层的顺序改为从高层到低层。

0.4.0 (2018-07-22)

  • 提高了依赖项分析的效率和健壮性。

  • 改进了报告格式。

  • 删除了由其他更简洁的非法依赖项隐含的非法依赖项。

  • 添加了--debug命令行参数。

0.5.0 (2018-08-01)

  • 将分析的文件和依赖项的数量添加到报告中。

  • 修复了在包的不同目录中运行命令的问题。

  • 提高了分析的速度。

  • 将命令行参数--config_directory更改为--config-directory

0.6.0 (2018-08-07)

  • 添加了允许白名单路径的能力。

0.6.1 (2018-08-07)

  • 将当前工作目录添加到路径中。

0.6.2 (2018-08-17)

  • 不分析不是Python包的目录的子目录。

  • 防止安装不兼容的Pydeps(1.6)版本。

0.7.0 (2018-09-04)

  • 完成了用于构建依赖项图的静态分析的重写。

  • 添加了静默和详细报告。

  • 添加了类型注解和mypy。

  • 使用pybackwards构建Python的早期版本。

  • 更正文档,将layers.yml而不是layers.yaml

0.7.1 (2018-09-04)

  • 修复了0.7.0版本的打包错误。

0.7.2 (2018-09-05)

  • 修复了未检查层所有子模块的错误。

0.7.3 (2018-09-07)

  • 停止支持Python 3.4和3.5,并调整打包。

0.7.4 (2018-09-20)

  • 微调了命令行错误处理。

  • 改进了README和核心概念文档。

0.8.0 (2018-09-29)

  • --config-directory参数替换为--config参数,该参数接受一个文件名。

0.9.0 (2018-10-13)

  • 转移到测试版。

  • 改进了文档。

  • 更好地处理传递给命令行的无效包名称。

0.10.0 (2018-10-14)

  • 在合约中将“packages”重命名为“containers”。

0.10.1 (2018-10-14)

  • 改进了对无效容器的处理。

0.10.2 (2018-10-17)

  • 如果缺少层,则报错。

0.10.3 (2018-11-2)

  • 修复了PyPI上的RST渲染错误。

0.11.0 (2018-11-5)

  • 支持定义可选层。

0.11.1 (2019-1-16)

0.12.0 (2019-1-16)

  • 修复了__init__.py文件中相对导入的解析。

0.12.1 (2019-2-2)

  • 添加了对Click 7.x的支持。

0.12.2 (2019-3-20)

  • 修复了Windows文件路径的bug。

0.12.3 (2019-6-8)

  • 弃用Layer Linter,转而使用Import Linter。

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

layer-linter-0.12.3.tar.gz (121.1 kB 查看哈希值)

上传时间 源代码

构建分发

layer_linter-0.12.3-py36,py37-none-any.whl (19.8 kB 查看哈希值)

上传时间 Python 3.6,py37

支持