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
Value | Name | Description |
---|---|---|
^{ | ^{ | 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 |
- 公共财产
Key | Value | Type |
---|---|---|
^{ | ^{ | Flag for preceding ^{ |
^{ | ^{ | 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/