版本¶
这是一个用于处理版本的辅助类,它基于点和连字符分割版本字符串。它将所有版本组件作为属性公开,并通过比较运算符提供完整的排序。
比较版本¶
compiler_lower_than_12 = Version(self.settings.compiler.version) < "12.0"
is_legacy = Version(self.version) < 2
- class Version(value, qualifier=False)¶
这并非语义化版本 (semver) 的实现,因为用户可以在其版本中使用任何模式。它只是一个用于解析“.”或“-”并尽可能考虑整数进行比较的辅助工具
属性¶
Version 类提供了一些访问版本号不同部分的方法
主版本¶
获取所有主版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert [str(i) for i in v.main] == ['1', '2', '3', '4', '5']
主要版本号¶
获取主要版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert str(v.major) == "1"
次要版本号¶
获取次要版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert str(v.minor) == "2"
补丁版本号¶
获取补丁版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert str(v.patch) == "3"
微版本号¶
获取微版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert str(v.micro) == "4"
预发布版本号¶
获取预发布版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert str(v.pre) == "alpha.3"
构建版本号¶
获取构建版本号。
v = Version("1.2.3.4-alpha.3+b1")
assert str(v.build) == "b1"
方法¶
Version 类实现了以下方法
在范围内¶
检查版本是否在指定的范围内。
assert Version("1.0").in_range(">=1.0 <2")
assert not Version("1.0").in_range(">1.0 <2")
assert not Version("1.0-rc").in_range(">=1.0 <2.0")
assert Version("1.0-rc").in_range(">=1.0 <2.0", resolve_prerelease=True)