libversion的python绑定
libversion的Python项目详细描述
libversion的python绑定
目的
libversion的python绑定,它提供了fast,powerful 以及correct通用版本字符串比较算法。
参见libversion存储库 关于算法的更多细节。
性能
libversion比其他版本快10到100倍 在python世界中广泛使用的工具。
Facility | comps/sec |
---|---|
libversion.version_compare2 | 3492.81K |
libversion.version_compare | 3219.02K |
libversion.Version | 374.08K |
tuple(map(int, (v.split('.')))) | 206.02K |
cmp_version.cmp_version | 189.15K |
cmp_version.VersionString | 156.42K |
distutils.version.StrictVersion | 75.00K |
version.Version | 71.39K |
distutils.version.LooseVersion | 51.38K |
pkg_resources.parse_version | 22.26K |
正确性
libversion比其他版本更好地处理某些复杂版本的情况 版本比较工具。下面是一些例子 失败:
Test case | libversion | tuple | StrictVersion | LooseVersion | parse_version | cmp_version |
---|---|---|---|---|---|---|
1.0 == 1.0.0 | ok | incorrect (<) | ok | incorrect (<) | ok | ok |
1.2_3 == 1.2-3 | ok | fail | fail | incorrect (>) | incorrect (<) | ok |
1.2.3 == 1.2-3 | ok | fail | fail | fail | incorrect (>) | incorrect (<) |
1.0alpha1 == 1.0.alpha1 | ok | fail | fail | ok | ok | incorrect (>) |
1.0rc1 < 1.0 | ok | fail | fail | incorrect (>) | ok | incorrect (>) |
1.0 < 1.0patch1 | ok | fail | fail | ok | incorrect (>) | ok |
1.0.2a < 1.0.2g | ok | fail | fail | ok | incorrect (>) | ok |
注1:fail表示尝试比较版本时 异常,通常是因为库无法分析特定版本 弦。
注2:version模块无法完成任何测试 一个严格的语义版本实现,需要3个版本 组件。另外,它不支持未经修改的python 3。
python包装特性
- 提供类似于c库的api,
version_compare(a, b)
函数 - 提供更多pythonic(但速度较慢)
Version
类 比较运算符
要求
- Python3.6+
- 包配置
- libversion2.7.0+
示例代码
fromlibversionimportVersion,version_compareassert(version_compare("0.9","1.1")<0)assert(version_compare("1.0","1.0.0")==0)assert(version_compare("1.1","0.9")>0)assert(Version("0.9")<Version("1.1"))assert(Version("1.0")==Version("1.0.0"))assert(Version("1.1")>Version("0.9"))assert(Version("0.999")<Version("1.0alpha1"))assert(Version("1.0alpha1")<Version("1.0alpha2"))assert(Version("1.0alpha2")<Version("1.0beta1"))assert(Version("1.0beta1")<Version("1.0pre1"))assert(Version("1.0pre1")<Version("1.0rc1"))assert(Version("1.0rc1")<Version("1.0"))assert(Version("1.0")<Version("1.0patch1"))
许可证
麻省理工学院许可证,版权所有(c)2017-2018 dmitry marakasovamdmi3@amdmi3.ru。