测试您的项目打包友好性
项目描述
pyroma
Pyroma押韵于aroma,是一款旨在对Python项目的打包与Python打包生态系统(主要指PyPI、pip、Distribute等)的最佳实践遵守情况进行评分的产品,同时也列出了可能需要改进的问题。
其目的是帮助人们创建既美观又易于使用的项目,同时也提高Python第三方软件的质量,使得使用大量可用的Python模块变得更加容易和愉快。
它编写得可以有一个库,其中包含可以从Python调用的方法,以及一个脚本,也称为pyroma。
可以在发布前在项目目录中运行
$ pyroma .
在分发文件上传到CheeseShop之前
$ pyroma pyroma-1.0.tar.gz
或者您可以在CheeseShop中给出包名
$ pyroma pyroma
在CheeseShop中给出名称是最全面的测试,因为它将测试几件事情,这些事情在其他情况下可能不会被测试。
所有情况下输出都类似
------------------------------ Checking . Found pyroma ------------------------------ The packages long_description is quite short. ------------------------------ Final rating: 9/10 Cottage Cheese ------------------------------
测试
这是目前执行的检查列表
包应该有一个名称、一个版本和一个描述。如果没有,它将获得0的评分。
版本号应该是一个字符串。浮点数可以用distutils使用,但大多数其他工具都会失败。
版本号应遵守PEP386规范。
描述应超过10个字符,而long_description应超过100个字符。
Pyroma将使用Docutils将您的long_description转换为HTML,以验证其可行性。这保证了您的描述在PyPI上的格式化。只要Docutils可以转换,即使转换过程中有警告或错误,这也将通过。这些警告和错误将打印到stdout,所以您会看到它们。
注意!目前这不会改变评分,这是因为Docutils在过程中不再引发错误,所以我要重写测试。一旦恢复,错误的语法将是致命的。
您应该填写以下元数据字段:classifiers、keywords、author、author_email、url和license。
您应该有指定支持的Python版本的classifiers。
您应该有requires-python/python_requires指定您支持的Python版本。
您应该有指定项目许可的classifier。
如果您正在检查PyPI上的包,而不是本地目录或本地包,pyroma将检查该包在PyPI上的所有者数量。它应该是三个或更多,以最小化“Bus factor”,即索引所有者因任何原因突然离线的风险。
如果您正在检查PyPI上的包,而不是本地目录或本地包,pyroma将检查您是否已上传源分发版,而不仅仅是二进制分发版。
版本控制集成
使用pre-commit,您可以在提交工作后运行pyroma,只需将以下内容添加到您的.pre-commit-config.yaml
repos:
- repo: https://github.com/regebro/pyroma
rev: "3.2"
hooks:
- id: pyroma
鸣谢
该项目由Lennart Regebro创建,regebro@gmail.com
“Pyroma”这个名字是由Wichert Akkerman提出的,wichert@wiggy.net
贡献者
David Andreoletti
Godefroid Chapelle
Dmitry Vakhrushev
Hugo van Kemenade
Jeff Quast
Maurits van Rees
Hervé Beraud
Érico Andrei
Jakub Wilk
Andreas Lutro
Scott Colby
Andrew Murray
Nikita Sobolev
Charles Tapley Hoyt
Max Tyulin
Michael Howitz
Florian Bruhin
Christopher A.M. Gerlach
RuRo
Wesley Barroso Lopes
Alexander Bessman
变更日志
4.2 (2023-02-25)
如果当前环境中未安装兼容版本,则回退到在隔离环境中安装项目的构建后端 [CAM-Gerlach]
修复当项目long_description作为METADATA文件中的标题而不是有效负载时元数据提取失败的问题 [CAM-Gerlach]
添加回退以恢复与Setuptools <61的兼容性 [CAM-Gerlach]
修复由于Setuptools >=66中的无效版本而导致测试失败的问题 [CAM-Gerlach]
添加python_requires,更新classifiers,在Pyroma自己的打包元数据中添加隐式依赖项并删除未使用的依赖项 [CAM-Gerlach]
4.1 (2022-11-24)
从自定义trove classifiers列表移动到使用trove-classifiers包 [hugovk]
支持检查Requires-Python元数据 [davidandreoletti]
在构建元数据时静音嘈杂的构建后端输出 [CAM-Gerlach, wesleybl]
官方支持Python 3.11 [hugovk, radarhere]
一些字符串格式化错误 [hugovk, CAM-Gerlach]
现在遵循black和flake8规则
检查作者_email字段是否包含作者名称 [bessman]
4.0 (2022-04-14)
自4.0b2以来没有变化。
4.0b2 (2022-03-29)
test_suite的弃用测试不再需要,因为用于收集元数据的修补过的setuptools方法已被弃用。
描述内容类型(description_content_type)也需要在元数据映射中进行映射。
4.0b1(2022-03-28)
通过使用build构建元数据,增加了对PEP517的支持,这是相较于旧版修补的setuptools方法的推荐构建方法。旧方法已弃用,将在5.0版本中移除,同时也计划支持PEP621。感谢Christopher A.M. Gerlach对现代打包系统的宝贵见解。
3.3 (2022-03-28)
对test_suite添加了弃用警告。
3.2.1 (2022-03-27)
修复了在python3.7测试中与__getattr__相关的崩溃问题 [Robert T. McGibbon]
3.2 (2021-06-22)
添加了对pre-commit的支持 [CAM Gerlach]
重新编写了部分PyPI支持代码,以避免使用xmlrpc API,因为目前它正受到严重的速率限制。现在只有一个调用使用它,似乎工作正常。
向后不兼容的更改:由于上述更改,在PyPI上查找包时,现在必须拼写包名完全正确,包括大小写。
一些代码清理/现代化 [CAM Gerlach]
添加了–quiet选项,只输出评分 [Hugo van Kemenade]
Pyroma现在是一个可执行模块,可以使用python -m pyroma调用 [RuRo]
3.1 (2021-03-06)
增加了对setup.py编码的正确检测
代码清理 [CAM Gerlach]
3.0.1 (2021-03-02)
停止支持Python 2 [Florian Bruhin]
重新支持Python 3.6,我没有意识到它仍然官方支持
2.6.1 (2021-02-16)
更新到当前的Trove分类器列表。
正式支持Python 3.8和3.9
停止正式支持Python 3.5和3.6(尽管仍然可以使用)。
2.6 (2019-11-02)
在代码上运行flake8和black,为classifiers.py生成更好的格式。
支持PEP 517,仅使用setup.cfg的包。 [Max Tyulin]
如果将long_description_content_type设置为‘text/markdown’,则添加对Markdown长描述的支持
安装Pygments以避免在long_description中包含语法高亮代码时的错误消息。
2.5 (2019-06-01)
修复了#35:正确恢复sys.argv。 [maurits]
重新添加了BusFactor测试,XMLRPC API支持它。
#26:添加一个测试来检查开发状态分类器。
#21:接受新的project_urls发行数据。
现在验证分类器是否有效,以及许可证字段和许可证分类器是否匹配。
评分现在再次反映了如果长描述不是有效的ReST。
#38:许可证字段的建议已更改。
2.4 (2018-08-15)
删除依赖于HTML抓取的测试,它太脆弱了。
更新到使用pypi.org而不是pypi.python.org [Andreas Lutro, Lennart Regebro]
添加-n命令行选项来设置pyroma返回成功所需的最小评分,这在脚本中很有用。 [Scott Colby]
2.3.1 (2018-05-28)
修复了#12:在Python 3下,如果区域设置不是UTF-8,则安装失败。 [ericof, 4383, regebro]
2.3 (2017-11-28)
检查分类器是否指定了项目许可证。 [4383]
停止支持Python 2.6、3.3和3.4。
修复了Unicode问题 [gotcha]
停止推荐存放文档的位置。
2.2 (2016-10-26)
删除了TestSuite评分。我决定它太接近查看代码质量。Pyroma不再关心你是否拥有测试。
修复了#36:PyPI现在要求使用https。
2.1 (2016-10-18)
#35:支持PEP-440。
2.0.2 (2016-03-06)
伪造了__name__变量,允许你在setup.py中使用“if __name__”结构。
2.0.1 (2016-03-06)
修复了Python 3下某些导入的bug。
2.0.0 (2016-02-28)
稳定版发布。
2.0.0b2(2015-11-09)
使其在Python 3下再次运行。
PEP8
2.0.0b1(2015-11-08)
重写了从Distutils/Setuptools提取数据的方法。
1.8.3 (2015-11-08)
问题#26:在Python 3下检查PyPI包可能会失败。
1.8.2 (2015-06-14)
当它是basestring时,不要抱怨版本号应该是字符串。 [maurits]
1.8.1 (2015-04-27)
这是在合并后不运行测试时会发生的事情。
1.8 (2015-04-27)
更稳健的评分。 [Jeff Quast]
关闭#24。
1.7 (2014-10-19)
包名查找现在是不区分大小写的。 [Dmitry Vakhrushev]
修复了返回值中的另一个错误。[Dmitry Vakhrushev]
1.6 (2014-04-17)
修复了问题 #17:与 zest.releaser 的集成停止工作。
修复了问题 #18:Pyroma 返回评分为退出代码,这是一个错误。现在它在成功时返回 0,在选项不正确时返回 1,如果评分低于 8 则返回 2。
修复了问题 #19:实现自定义测试类被视为有测试。
8:根据实践经验,费城现在被视为“成功”。
1.5 (2013-10-18)
修复了问题 #13:如果没有描述,Pyroma 会失败。
停止支持 Python 3.1。它仍然可以工作,但不再受支持。
增加了对命令行选项的支持,实现了 #14 和 #15。
1.4 (2013-05-29)
问题 #13:如果没有找到源分布,Pyroma 会失败。
增加了一个检查,以确保包在 PyPI 上有一个源分布。
1.3.1 (2013-05-29)
问题 #11:如果 long_description 不是字符串,pyroma 会失败。
zest.releaser 现在仅在 Python 包上运行 Pyroma。
由于使用外部测试运行器的包无法获得超过 9/10 的评分,因此这个值现在在通过 zest.releaser 运行 Pyroma 时也被视为可接受。
1.3 (2013-03-15)
增加了一个测试,以确保版本号是字符串。
确保在遇到致命错误时也打印了错误信息。
改进了日志消息。
现在在打标签之前完成 zest.releaser 插件,因为它在那里更有用。特别是与 check-manifest 结合使用时。
没有 long_description 也不再导致 pyroma 失败。
1.2 (2013-03-06)
删除了运行测试的操作。我总是觉得这有点不确定,去掉它解决了许多问题。Pyroma 现在专注于打包质量。
PyPI 上的具有多个版本的包将不再返回错误。
现在会查找 pythonhosted.org 或 readthedocs.org 上的文档。
为 zest.releaser 添加了一个钩子,以便在签出后、上传到 PyPI 之前运行。
1.1 (2013-03-05)
改进了对没有包数据的处理,例如如果 setup.py 除非将其作为“__main__”脚本运行,否则不调用 setup()。
如果 setup.py 没有调用 setup(),则寻找 main() 脚本并尝试运行它。
1.0 (2013-03-05)
支持 Python 3.3
增加了对 PEP 386 兼容性的测试。
0.9.3 (2011-03-17)
现在在测试期间使用 ProxyStub 对 PyPI xmlrpclib 进行代理。
删除了依赖性评分。
增加了一个评分,用于运行测试,以查看它们是否运行。这将还负责检查依赖项。
0.9.2 (2011-03-13)
注释掉了依赖性测试,因为它太不可靠。
修复了 ReST。
支持 Python 3。
0.9.1 (2011-03-08)
初始发布
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。