简化您的setup.py
项目描述
简化您的setup.py
编写setup.py通常涉及大量的模板代码,以及在不同项目之间的复制粘贴。
这个包旨在简化这个过程,并将一些DRY原则引入Python的打包中。以下是使用setupmeta的(完整且准备上传到PyPI的)setup.py可能的样子:
from setuptools import setup setup( name="myproject", versioning="distance", # Optional, would activate tag-based versioning setup_requires="setupmeta" # This is where setupmeta comes in )
这就够了 - setupmeta会从这里开始,从你的项目其余部分提取所有其他内容(遵循常见的惯例)。
你可以使用explain命令(见命令)来查看setupmeta从你的项目中推断出的内容,对于上述内容,它看起来可能如下所示(你可以看到每个设置来自哪个文件和哪一行,请注意,通常可以从你的项目中提取大量信息,如果你遵循通常的惯例)
~/myproject: python setup.py explain author: (auto-adjust ) Your Name \_: (myproject.py:7 ) Your Name<your@email.com> author_email: (auto-adjust ) your@email.com description: (README.rst:1 ) First line of your README entry_points: (entry_points.ini) [console_scripts] ... install_requires: (requirements.txt) ["click", ... license: (auto-fill ) MIT long_description: (README.rst ) Long description would be your inlined README name: (explicit ) myproject py_modules: (auto-fill ) ["myproject"] setup_requires: (explicit ) ["setupmeta"] version: (git ) 1.2.3.post2 versioning: (explicit ) distance
更多示例请见这里。
注意:setupmeta的版本控制基于
git describe --dirty --tags --long --first-parent --match 'v*.*' # Then, if above yields nothing, we try the more vague '*.*' git describe --dirty --tags --long --first-parent --match '*.*'
如果你希望使用setupmeta的版本控制功能,则需要git版本 >= 1.8.4。
目标
这个项目的目标是
允许编写非常短(但完整)的setup.py,没有模板代码,并鼓励良好的通用打包实践
在setup.py explain中指出缺少的重要信息(例如:版本)
支持基于标签的版本控制(类似于setuptools_scm,但具有超级简单的配置/默认值和自动bump功能)
提供有用的命令,例如查看元数据(explain)、version(包括版本升级支持)、cleanall等
它是如何工作的?
你明确提供给你的原始setuptools.setup()调用中的所有内容都按原样保留(永远不会更改),并在内部标记为explicit。因此,如果你不喜欢setupmeta推断出的某些内容,你总是可以明确地声明它。
name将自动填写为你的setup.py的__title__(如果有的话,有时使用常量相当方便…)
如果有一个<name>/__init__.py或src/<name>/__init__.py文件,packages和package_dir将相应地自动填写
如果有一个<name>.py文件,py_modules将自动填写
entry_points将自动从文件entry_points.ini中填写(额外功能:像PyCharm这样的工具为这些内容提供了很好的语法高亮)
如果有requirements.txt(或pinned.txt)文件,install_requires将自动填写,默认情况下将按社区建议将锁定抽象化,有关更多信息,请参阅requirements。
如果有tests/requirements.txt、requirements-dev.txt、dev-requirements.txt或test-requirements.txt文件,tests_require将自动填写
描述将是您的README的第一行(除非第一行太短,或者仅仅是项目的名称),或者扫描到的文件中第一个docstring的第一行(见下文列表)
长描述将自动从您的README文件中填充(查找README.rst,README.md,然后README*,找到的第一个将被采用)。可以使用特殊标记(针对它们的符号旨在易于rst注释)
使用.. [[end long_description]]作为结束标记,这样您就不必使用整个文件作为长描述
如果想要包含另一个文件,请使用.. [[include <relative-path>]](例如,人们喜欢添加HISTORY.txt)
这些标记必须出现在行首/行尾,或者至少在空格字符之后/之前
version可以明确声明,也可以使用versioning=...从git标签计算(有关更多信息,请参阅版本控制)
使用versioning="distance",您的git标签将采用v{major}.{minor}.0的形式,将使用自最新版本标签以来的提交数来自动填充版本号的“补丁”部分
标签“v1.0.0”,自标签以来没有提交 -> 版本为“1.0.0”
标签“v1.0.0”,自标签以来有5个提交 -> 版本为“1.0.5”
如果签出有脏数据,将添加标记 -> 版本将是“1.0.5.post5.dirty”
使用versioning="post",您的git标签将采用v{major}.{minor}.{patch}的形式,如果自最新版本标签以来有提交,则将出现“post”后缀
标签“v1.0.0”,自标签以来没有提交 -> 版本为“1.0.0”
标签“v1.0.0”,自标签以来有5个提交 -> 版本为“1.0.0.post5”
如果签出有脏数据,将添加标记 -> 版本将是“1.0.0.post5.dirty”
使用versioning="build-id",您的git标签将采用v{major}.{minor}.0的形式,将使用自最新版本标签以来的提交数来自动填充版本号的“补丁”部分
标签“v1.0.0”,自标签以来没有提交,BUILD_ID=12 -> 版本为“1.0.0+h12.g123”
标签“v1.0.0”,自标签以来没有提交,BUILD_ID未定义 -> 版本为“1.0.0+hlocal.g123”
标签“v1.0.0”,自标签以来有5个提交,BUILD_ID=12 -> 版本为“1.0.5+h12.g456”
标签“v1.0.0”,自标签以来有5个提交,BUILD_ID未定义 -> 版本为“1.0.5+hlocal.g456”
如果签出有脏数据,将添加标记 -> 版本将是“1.0.5+hlocal.g456.dirty”
使用bump命令(见命令)可以轻松地增加(即:增加主要、次要或补丁 + 应用git标签)
版本格式可以自定义,有关更多信息,请参阅版本控制
version、versioning、url、download_url、bugtrack_url、license、keywords、author、contact、maintainer和platforms将自动从
您的模块中的__key__ = "value"行填充(仅限简单常量,表达式将被忽略 - 模块不会被导入,而是使用正则表达式进行扫描)
在您的文档字符串中,形式为 键: 值 的行
按照以下顺序检查文件(先找到的为准)
setup.py
<package>.py (例如:mccabe)
<package>/__about__.py (例如:cryptography)
<package>/__version__.py (例如:requests)
src/ 也会被检查(对于那些喜欢在 src 下存放包的人来说)
URL 可以简化
如果 url 指向您的通用 GitHub 仓库(例如:[https://github.com/codrsquad](https://github.com/codrsquad)),则项目名称将自动附加到它
相对 URL 将自动填充,通过在其前面添加 url
URL 可以使用 {name} 和/或 {version} 标记,将相应地展开
作者、维护者 和 联系方式 的姓名和电子邮件可以合并到一行(setupmeta 将找出电子邮件部分并自动填充它)
例如:作者: Bob D bob@example.com 将产生正确的 作者 和 作者_email 设置
这应该可以为绝大多数 Python 项目提供良好的支持。如果您需要高级功能,您仍然可以使用 setupmeta 来处理上面提到的所有常规功能,并在需要时明确指定。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建版本
setupmeta-3.6.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2989bd850bde578f7e3dd8878ce5488194d863e0fbbe76b18bc345a6e29fae8b |
|
MD5 | 548b8b5228b50874c45896e133b2f1bb |
|
BLAKE2b-256 | f68e5edc92b4f7eb385c585f54897c2ba640c7570cbf9106f3802f3ab876a7f5 |
setupmeta-3.6.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 90605a79dc91a35a27ea815e3d3313ffd1f796e66a9261784cca5e05c2377371 |
|
MD5 | 517280a5d326299aa392a04a5645dcea |
|
BLAKE2b-256 | 1f6100530ef4bbb9683afeffab5f863843b1332728a14248c1cc9beebb6636b2 |