依赖的皮棉

deplint的Python项目详细描述


deplint-依赖关系linter
===============


python中/大型项目中的依赖关系管理往往很乏味而且不完美。项目倾向于采用以下两种约定之一:

*在"requirements.txt"中只列出顶级依赖项(要么锁定到
特定的版本,要么就版本而言完全自由),而不指定
可传递依赖项。当可传递依赖项以意外方式更改时,这可能会导致再现性问题。

*列出完整的依赖项闭包,包括整个依赖项闭包的确切版本,即"pip freeze>;requirements.txt"。这就破坏了
预期依赖(即顶层依赖)和
副产品(传递依赖)之间的区别。通过这种方式管理的项目使得
很难知道使用了哪些依赖项,以及用于哪些依赖项。查看所有依赖项以查看它们是否可以更新,这会让人非常
查看
它们是否可以安全删除等。


deplint从多个不同的来源收集信息:

*所需的依赖项(即"requirements.txt"的内容)。

*已安装的依赖项(即"pip freeze"中的内容)。

*包来自virtualenv"site packages"的元数据。

*包索引中提供的包(通过"PIP搜索")。

*源代码(导入语句)。

但它可以自动完成机械工作。





usage
==


deplint支持两种操作模式:

*将其安装到项目的virtualenv中,并从该virtualenv中运行它。您不必在磁盘上指定任何路径-deplint将推断出它们。


*在系统范围内安装它,并在多个不同项目的
virtualenv上运行它。在这种情况下,您需要指定路径。

\
-p~/.virtualenvs/project/bin/python
```



"packaging-16.8"
[要求安装的]调试:安装的"safety-1.5.1"满足所需依赖项"safety==1.5.1"
[要求安装的]调试:安装的"six-1.11.0"满足所需依赖项"six==1.11.0"
````

deplint检查您的要求并检查是否所有依赖项
都已安装并满足要求。这里的任何差异都应该可以使用简单的"pip install-r requirements.txt"修复。




"flake8-3.4.1"不是必需的
[isTransitiveDep]警告:不需要安装非传递依赖项"ipdb-0.10.3"
[isTransitiveDep]警告:不需要安装非传递依赖项"isort-4.2.15"
[isTransitiveDep]信息:必需依赖项"packaging==16.8"是"safety==1.5.1"的传递依赖项
[isTransitiveDep]警告:不需要安装非传递依赖项"pytest-cov-2.5.1"
[isTransitiveDep]信息:需要的依赖项"six==1.11.0"是"safety==1.5.1"的传递依赖项
[isTransitiveDep]警告:已安装不需要非传递依赖项tox-2.8.2我们的virtualenv的"站点包"。由此它将告诉您
关于:

*已安装但不是必需的包(也不是必需包的可传递依赖项)。这可能意味着您安装了一些不需要的
,或者您安装了一些应该是
要求的内容,但您还没有将其包含在"requirements.txt"中。

*是可传递依赖项的包(即由另一个
依赖项暗示的包)。这是一个提示,也许它们不需要是一个要求
(但这取决于您的决定)。




"unidecode==0.04.21"从未导入(unidecode)
````


deplint将扫描源代码中的导入语句。如果您的项目需要一个特定的包,但您的代码从未导入该包,那么您将在这里看到这一点。这可能意味着该包是一个命令行工具
,如"flake8"或"tox",通常安装在代码中,但不导入。如果
不需要,则可能意味着您不再需要此要求(可能在早期版本的代码中使用了它?).



检查可升级的依赖项
----------


示例:

``bash
$deplint upgrade
[can be upgraded]信息:必需的依赖项"botocore==1.7.13"可以升级到"botocore-1.7.28"
[canbeupgraded]信息:必需的依赖项"cryptography==2.0.3"可以升级到"cryptography-2.1.1"
```


*如果您有"project<;4.0"格式的要求,则安装的版本是"project-3.1",并且有"project-3.2"版本可用,如果您对'project==4.0'表格有要求,并且有可用的
`project-4.1'版本,我们会建议您更新此版本。建议升级。



2.2.1'
2.2.1之前版本的Tornado.web.requesthandler.set_header函数中存在CRLF注入漏洞,远程攻击者可借助特制的输入注入任意HTTP头并进行HTTP响应拆分攻击。
```

deplint将检查已安装的依赖项在其已安装版本中已知有
漏洞。





installation
==



install from pypi使用:


$pip install deplint




running tests
==

套件:

*单元测试。使用`./test`或`./test_with_coverage`运行以查看代码覆盖率。

*通过在自己的源代码上运行deplint来对cli进行集成测试。使用`./test_cli`.


*对另一个项目运行deplint,从而对cli运行
集成测试,包括virtualenv内部和virtualenv外部。使用:`./test_virtualenv`

*对使用tox的多个python版本进行测试。使用:`./test_with_tox`


请注意,目标是通过单元
测试保持接近100%的测试覆盖率,并且始终进行全面的集成测试。







contributors
==

pull requests,issues and comments welcome。对于拉取请求:

*添加新功能的测试和错误修复
*遵循现有样式
*将不相关的更改分离为多个拉取请求

查看现有问题,以便开始提供帮助。

通过创建问题
并解释预期的更改。

atlassian需要贡献者签署贡献者许可协议,称为cla。这是一份记录,表明出资人有权为项目贡献代码/文档/翻译,并愿意将其用于发行版和衍生作品(或愿意转让所有权)。


请按照下面的
链接对cla进行数字签名。公司cla是为
作为组织成员做出贡献的人,个人
cla是为作为个人做出贡献的人。

*[公司贡献者cla](https://na2.docusign.net/member/powerformsigning.aspx?powerformid=e1c17c66-ca4d-4aab-a953-2c231af4a20b)
*[cla针对个人](https://na2.docusign.net/member/powerformsigning.aspx?powerformid=3f94fbdc-2fbe-46ac-b14c-5d152700ae5d)






许可证
==


版权所有(c)2017 Atlasian和其他。
apache 2.0许可证,请参阅[license.txt](license.txt)文件。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用安卓 studio和mysql进行第二次照片更新的java   java是我的pom。xml安装和生成失败   获取并处理java异常行   java 2d平台冲突错误   java使用SSH exec通道调用shell脚本,但忽略对其他shell脚本的调用   java如何将postgresSql查询重写为Springdata jpa查询   java无法使用IP地址和端口登录liferay 6.2   爪哇1。按钮不显示文本2。逻辑正确吗   java如何在片段中使用谷歌地图视图?   如何在java中连接字符?   Java右移输出负值   java@PropertySource()在@ImportResource()导入的XML中定义的bean中不起作用   Java、SWT使窗口(shell)部分透明   回溯回溯java中的DUCU