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第三方库


热门话题
javajavax。艾尔。PropertyNotFoundException:   java为什么通过TCP发送的文件比它本身包含的文件包含更多的数据?   java为什么字符开关/案例不起作用?   php到java连接器,在哪里可以找到好的连接器   需要帮助Java简单规则形状面积计算器和if语句吗   macos如何从newstyle Oracle Java OSX捆绑包结构启动帮助页?   java既然所有的类都扩展对象,而对象是一个类,那么对象如何扩展对象呢?   java从JavaPairdd<String,Tuple2<Integer,Integer>>转换为JavaPairdd<String,Integer>   java微调器值未从一个活动传递到另一个活动   参数化类型的java数组   java不提供类。getCanonicalName是否存在性能问题?   java输入键JTextField   为什么我不能在java中调用nextLine()方法两次?   JTextPane中的java JProgressBar   java如何获取Crudepository实例?   用于提取几个<div>标记的java正则表达式   java如何使用JUnit Testrunner生成html图像   Go中Java静态属性的等价性