跳过主要内容

强制执行Python包内和包间的导入规则。

项目描述

https://img.shields.io/pypi/v/import-linter.svg Python versions CI Status

Import Linter允许你定义和强制执行Python包内和包间的导入规则。

概述

Import Linter是一个命令行工具,用于检查你是否遵循在Python项目中的自定架构。它通过分析一个或多个Python包中所有模块之间的导入来实现,并将其与你在配置文件中提供的规则集进行比较。

配置文件包含一个或多个“合约”。每个合约具有特定的类型,这决定了它将应用哪种规则。例如,禁止 合约类型允许你检查某些模块或包是否未被项目部分导入。

如果你在一个团队中工作,并在复杂的代码库中强制执行特定的架构风格,Import Linter特别有用。在这种情况下,你可以将Import Linter添加到你的部署管道中,以便任何不遵循架构的代码都会失败测试。

如果没有内置的合约类型适合你的期望架构,你可以定义一个自定义合约。

快速入门

安装Import Linter

pip install import-linter

请决定要检查的依赖关系流。在本例中,我们已决定确保myproject.foo既不依赖于myproject.bar也不依赖于myproject.baz,因此我们将使用forbidden合同类型。

在您的项目根目录下创建一个.importlinter文件以定义您的合同。在本例中

[importlinter]
root_package = myproject

[importlinter:contract:1]
name=Foo doesn't import bar or baz
type=forbidden
source_modules=
    myproject.foo
forbidden_modules=
    myproject.bar
    myproject.baz

现在,从您的项目根目录运行

lint-imports

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

=============
Import Linter
=============

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

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

Foo doesn't import bar or baz BROKEN

Contracts: 1 broken.


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

Foo doesn't import bar or baz
-----------------------------

myproject.foo is not allowed to import myproject.bar:

-   myproject.foo.blue -> myproject.utils.red (l.16)
    myproject.utils.red -> myproject.utils.green (l.1)
    myproject.utils.green -> myproject.bar.yellow (l.3)

项目详细信息


下载文件

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

源分布

import-linter-2.0.tar.gz (28.7 kB 查看散列)

上传

构建分布

import_linter-2.0-py3-none-any.whl (41.0 kB 查看散列)

上传 Python 3