具有语义版本控制和通用版本格式的版本控制系统

enhanced-versioning的Python项目详细描述


版本控制包

版本控制包是实现语义版本控制的version包的派生。分叉version的主要原因是扩展功能以支持非语义版本控制模式。在

pip install enhanced-versioning==0.2.1

语义版本实现

Enhanced-Versioning包提供了SemanticVersion,它实现了Semantic Versioning spec 2.0.0-rc.1中描述的版本控制。在

简单X.Y.Z版本示例:

^{pr2}$

预发布和构建版本示例:

>>>v2=SemanticVersion('2.7.3-rc.2.15+19.e02afe3')>>>v2.major2>>>v2.minor7>>>v2.patch3>>>v2.pre_release['rc',2,15]>>>v2.build[19,'e02afe3']

SemanticVersion支持丰富的比较运算符(<;,<;=,>;,>;=,==!=), 因此可以进行排序:

>>>versions=[SemanticVersion('1.0.0+0.3.7'),...SemanticVersion('1.0.0'),...SemanticVersion('1.0.0-beta.11'),...SemanticVersion('0.9.0'),...SemanticVersion('1.0.0-rc.1'),...SemanticVersion('1.0.0-rc.1+build.1'),...SemanticVersion('1.0.0-alpha.1')]>>>print('\n'.join(map(str,sorted(versions))))0.9.01.0.0-alpha.11.0.0-beta.111.0.0-rc.11.0.0-rc.1+build.11.0.01.0.0+0.3.7

非语义版本实现

Versioning包提供了NonSematicVersion,它实现了如下所述的非语义版本控制系统。在

非语义版本规范

此规范继承了语义版本规范的大部分内容,除非另有说明。在

  1. 使用非语义版本的软件可以声明公共API,但不是必需的。在
  2. 一个或多个版本必须由一个或多个版本组成。修订必须至少包含一个非负整数或ASCII字母字符[0-9A-Za-z],其中整数(如果存在)必须位于字符之前。修订分为两部分。在比较中,整数值优先于字符值的整数值和字符值。每次修订都会增加很多。例如:1.2a.4->;1.2b.4->;1.3a.4。在
  3. Semantic Versioning Specification Rule 3
  4. 非语义版本控制没有定义稳定性的标准。在
  5. 非语义版本控制不需要定义公共API。在
  6. 左侧的修订必须比右侧的修订具有更大的权重,但非语义版本控制并不能精确定义每个修订必须意味着什么。在
  7. 当左侧的修订增加时,右侧的修订必须重置为适当的起始值。修订的整数值必须重置为0。字符值应重置为“a”。在
  8. 见上文第7条。在
  9. 有关预发布,请参见Semantic Versioning Specification Rule 9。在
  10. 有关生成,请参见Semantic Versioning Specification Rule 10。在
  11. 优先级必须通过分离各个版本和预发布标识符来计算。修订次数越少越好。如果修订数相等,则优先级由从左到右比较修订时的第一个差异确定,其中修订的整数值首先以数字形式进行比较,然后是按字母顺序比较的字符值。示例:1<;1.0<;1.1a<;1.1e<;1.2a。当所有修订都相同时,必须通过预发布确定优先级。请参阅Semantic Versioning Specification Rule 11以获取有关预发布优先级的完整详细信息。在

非语义版本控制示例:

>>>fromenhanced_versioningimportNonSemanticVersion>>>v=NonSemanticVersion('1')>>>vNonSemanticVersion('1')>>>str(v)'1'>>>v.revisions['1']>>>v.pre_release[]>>>v.build[]

预发布和构建版本示例:

>>>v2=NonSemanticVersion('1.4f.2c-rc.2.15+19.e02afe3')>>>v2NonSemanticVersion('1.4f.2c-rc.2.15+19.e02afe3')>>>str(v2)'1.4f.2c-rc.2.15+19.e02afe3'>>>v2.revisions['1','4f','2c']>>>v2.pre_release['rc',2,15]>>>v2.build[19,'e02afe3']

NonSemanticVersion支持丰富的比较运算符(<;,<;=,>;,>;=,==!=), 因此可以进行排序:

>>>versions=[NonSemanticVersion('1.0.4d.7f+0.3.7'),...NonSemanticVersion('1.0.4d.7f'),...NonSemanticVersion('1.0.4d.7f-beta.11'),...NonSemanticVersion('0.9.4d.7f'),...NonSemanticVersion('1.0.4d.7f-rc.1'),...NonSemanticVersion('1.0.4d.7f-rc.1+build.1'),...NonSemanticVersion('1.0.4d.7f-alpha.1'),...NonSemanticVersion('1.0.2f.12k+build.3')]>>>print('\n'.join(map(str,sorted(versions))))0.9.4d.7f1.0.2f.12k+build.31.0.4d.7f-alpha.11.0.4d.7f-beta.111.0.4d.7f-rc.11.0.4d.7f-rc.1+build.11.0.4d.7f1.0.4d.7f+0.3.7

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

推荐PyPI第三方库


热门话题
JavaBeanio如何将抽象类或接口映射为记录或段   java Jboss 4.2.2到Jboss 7.1.1的迁移问题   如果Java运行时高于给定版本,则强制Maven失败   java在部署时持久化实体   java如何使用jdatechooser从mysql数据库中保存和检索空日期   java Google Drive SDK如何获取文件所在的文件夹?   java使用spring mvc mybatis从oracle db获取失败用户登录结果的数量   数组如何在java中拆分数字文件?   创建对象期间出现安卓 Java空指针异常   java 安卓supportv4。jar在Eclipse中未正确导入   java如何在javafx中创建这种类型的按钮   关于Spring集成和原型范围的java之谜   java正则表达式:在2个标记之间提取DNA信息   使用getText()时出现java空指针异常。toString()。修剪();   java如何从spring控制器获取angularjs中的模型属性值