python的语义版本比较

semvercomp的Python项目详细描述


Semvercomp公司

python语义版本比较

具有比较功能的Version对象的实现,并按照semver约定进行标记验证。

安装

pip install semvercomp

用法

课程

Version(major=0 : int, minor=0 : int, patch=0 : int, pre_release="" : str, patch="" : str, has_v=False : str)

Version表示遵循semver约定的版本标记。 版本标记的结构如下:

X.Y.Z-pre+build
ValueNameDescription
^{}^{}Version when you make incompatible API changes
^{}^{}Version when you add functionality in a backwards-compatible manner
^{}^{}Version when you make backwards-compatible bug fixes
^{}^{}Version pre-release tag
^{}^{}Version build tag

来源:Semantic Versioning 2.0.0

  • 公共财产
KeyValueType
^{}^{}Flag for preceding ^{} or ^{} in version tag
^{}^{}Major member
^{}^{}Minor member
^{}^{}Patch member
^{}^{}Pre Release member
^{}^{}Build member
  • 版本实例
fromsemvercomp.VersionimportVersionver=Version(1,0,0,'beta','20191224')print(str(ver))# 1.0.0-beta+20191224
  • 从版本字符串创建版本对象:
fromsemvercomp.VersionimportVersionstr_v=Version()str_v.parse_version_number('v1.0.0-beta')# str_v.major == 1# str_v.minor == 0# str_v.patch == 0# str_v.has_v == True# str_v.pre_release == 'beta'

版本对象的比较

Version类实现__gt____lt____eq__内置方法来实现比较。

等于

fromsemvercomp.VersionimportVersiona=Version(1,0,0)b=Version(1,0,0)print(a==b)# True

大于

fromsemvercomp.VersionimportVersiona=Version(1,1,0)b=Version(1,0,0)print(a>b)# True

fromsemvercomp.VersionimportVersiona=Version(0,1,0)b=Version(1,0,0)print(a<b)# True

验证

可以使用semvercomp.validators中的validate version来验证和收集版本标记的不同成员。

validate_version(version: str): (parts: dict(), is_ok: bool)

将返回一个元组,其中,第一个元素是一个字典,其属性为给定的版本标记destructured。

元组中的第二个元素是作为验证结果的布尔标志。

fromsemvercomp.validatorsimportvalidate_versionver_str='v1.0.22'(parts,is_ok)=validate_version(ver_str)print(parts)# {'has_v': True, 'major': 1, 'minor': 0, 'patch': 22, 'pre_release': None, 'build': None}print(is_ok)# True

utils

to_version_list(coll: iterable): Version[]

以字符串形式从版本标记的iterable创建版本对象数组。

fromsemvercomp.utilsimportto_version_listall=['1.0.0-beta','0.1.0+1234','33.22.3']versions=to_version_list(all)

开发

要求

调试

  • 调试测试 这个包的测试是用pytest编写的。 下面的json是.vscode/settings.json的一个示例:
{"python.pythonPath":/*YourPythonBinaryAddress*/,"python.testing.pytestArgs":["tests"],"python.testing.unittestEnabled":false,"python.testing.nosetestsEnabled":false,"python.testing.pytestEnabled":true}

测试

  • 运行单元测试
# from repository root directory
pytest
  • 运行测试覆盖率
# from repository root directory
pytest --cov=semvercomp tests/

# or with html report
pytest --cov-report html --cov=semvercomp tests/

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

推荐PyPI第三方库


热门话题
具有x86javapath的x64机器上x86java上的java JNI未满足链接错误   java将Pixmap的一部分上传到GPU   图像Java位图RLE8格式   java Android studio谷歌广告崩溃应用程序   java如何创建包含未知数量对象的变量?   Java计算给定int数组的所有可能组合   java JDBC classnotfound异常   httpclient中的java将HttpEntity转换为字符串的最优雅/正确的方法是什么?   如何从Java程序运行nano?   java在安卓中调用自定义类/方法   调用方法和JOptionPane后,允许代码继续执行所需的java计时器或其他想法   关于侦听器的向量Java并发问题   线程池执行器Java线程池   java配置DTO上的Swagger javax验证约束   Java中用于按钮功能的swing操作命令   ServletOutputStream中的java设置状态代码   java打印输入数组的平均值