符合PEP-440的版本控制帮助程序

setupext-gitversion的Python项目详细描述


VersionDownloadsStatusLicenseDocs

等等…为什么?什么??

PEP440编码python包的版本方案。这个setuptools 扩展将生成Developmental ReleaseLocal Version Label 标识正在生成的修订的段。PEP440定义 python包版本的以下格式:

version         = [epoch "!"] public-version ["+" local-version]
epoch           = digit+
public-version  = release-segment [pre-segment] [post-segment] [dev-segment]
local-version   = (letter | digit)+ ["." (letter|digit)+]
release-segment = digit+ ("." digit+)*
pre-segment     = "a" digit+ | "b" digit+ | "rc" digit+
post-segment    = ".post" digit+
dev-segment     = ".dev" digit+

它还建议包索引只接受final releases 定义为只有一个发布段和 一个可选的纪元。为什么我要费尽周折创造一个 管理不应提交到包的版本的扩展 索引?如果开发的python包在 业务,那么您可能知道确切的原因-使用本地python包 保存非公共包的索引很常见。这也是常见的 从内部索引中的CI服务器准备预发布包和生成。 这就是这个分机发挥作用的地方。它提供了一种一致的方式 在开发的所有阶段管理包版本。

让我们看看这个项目的状态,因为我正在写这个文件。这个 git历史记录如下:

* 3fdc192 - (HEAD, origin/initial-implementation, initial-implementation)
###### 9 more commits here
* 7ca1fd2 - (origin/master, master)
*   87d944e - Merge pull request #1 from dave-shawley/reorg (6 days ago)
|\
| * 04d0cca - (origin/reorg, reorg)
| ###### 9 more commits here
|/
* bd7ad3c - (tag: 0.0.0) SYN (4 months ago)

当我运行setup.py git_version时,它会将版本设置为0.0.0.post1.dev110.0.0部分是传递给^{tt3}的释放段$ 函数在setup.py中。扩展在历史记录中找到该标记,并 统计自标记之后发生的合并数–此值 成为post版本段。在这种情况下 合并。然后它统计自上次合并以来提交的次数- 此值成为development版本段。

怎么做?

使用此扩展的最简单方法是将其安装到您的生成中 环境,然后在生成和上载时从命令行使用它 你的分配。

  1. pip install setupext-gitversion进入构建环境
  2. 将以下行添加到setup.cfg
[git_version]version-file=LOCAL-VERSION
  1. 将以下行添加到manifest.in

    include LOCAL-VERSION
    
  2. 修改setup.py以附加local-version的内容 发送到您的version关键字:

    version_suffix=''try:withopen('LOCAL-VERSION')asf:version_suffix=f.readline().strip()exceptIOError:passsetup(# normal keywordsversion='1.2.3'+version_suffix,)

    其中1.2.3是最后一个发布包的标记

  3. git_version添加到upload或分发生成中 命令。您需要使用以下内容:

    setup.py git_version sdist upload
    setup.py git_version bdist_egg upload
    

就这样当 你建立一个发行版它也足够聪明,可以生成一个空的 标记提交生成的后缀。

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

推荐PyPI第三方库


热门话题
http POST请求Java CouchDB   java删除带有大量尾随0的浮点字符串上的科学符号   JavaEE5和Hibernate   java如何在Spring Social中获得比特定id更早的tweet   java是框架。revalidate()在事件后获取输出是否重要?   java为什么不能返回通用映射?   java如何理解和优化工厂方法的高自时间   java Eclipse 202006错误由于项目的生成路径不完整,因此未生成该项目   多线程是java。util。向量序列化线程安全?   在Eclipse和java中使用不同的构建配置。属性文件   编译Java:从命令行运行的问题   java如何知道消息是否已确认/取消?   Java铸造一套   java Android Seekbar progress已更改变量,给出错误