libversion的python绑定

libversion的Python项目详细描述


libversion的python绑定

py-libversion packaging status

Build StatusPyPI downloadsPyPI versionPyPI pythonsGithub commits (since latest release)

目的

libversion的python绑定,它提供了fastpowerful 以及correct通用版本字符串比较算法。

参见libversion存储库 关于算法的更多细节。

性能

libversion比其他版本快10到100倍 在python世界中广泛使用的工具。

Facilitycomps/sec
libversion.version_compare23492.81K
libversion.version_compare3219.02K
libversion.Version374.08K
tuple(map(int, (v.split('.'))))206.02K
cmp_version.cmp_version189.15K
cmp_version.VersionString156.42K
distutils.version.StrictVersion75.00K
version.Version71.39K
distutils.version.LooseVersion51.38K
pkg_resources.parse_version22.26K

正确性

libversion比其他版本更好地处理某些复杂版本的情况 版本比较工具。下面是一些例子 失败:

Test caselibversiontupleStrictVersionLooseVersionparse_versioncmp_version
1.0 == 1.0.0okincorrect (<)okincorrect (<)okok
1.2_3 == 1.2-3okfailfailincorrect (>)incorrect (<)ok
1.2.3 == 1.2-3okfailfailfailincorrect (>)incorrect (<)
1.0alpha1 == 1.0.alpha1okfailfailokokincorrect (>)
1.0rc1 < 1.0okfailfailincorrect (>)okincorrect (>)
1.0 < 1.0patch1okfailfailokincorrect (>)ok
1.0.2a < 1.0.2gokfailfailokincorrect (>)ok

注1:fail表示尝试比较版本时 异常,通常是因为库无法分析特定版本 弦。

注2:version模块无法完成任何测试 一个严格的语义版本实现,需要3个版本 组件。另外,它不支持未经修改的python 3。

python包装特性

  • 提供类似于c库的api,version_compare(a, b)函数
  • 提供更多pythonic(但速度较慢)Version类 比较运算符

要求

示例代码

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

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

推荐PyPI第三方库


热门话题
java如何使用“Wed,01 Jul 2015 17:32:41 EDT”解析字符串   java Storm apache升级(1.0.0到2.0.0)   java类驻留在不同的目录中,而不是包指定的目录。为什么?   将Java中的图像缩放到非常小的维度   java如何通过子文档从自定义方面访问ElasticSearch parentdoc字段   java如何在RationalSoftwareArchitect中使用findbugs?   Java中的事件提升处理   java值被添加到arrayList的所有索引中,而不是在“”时添加到最后一个索引中。正在使用arraylist的add()方法   JFrame中的java JPanel派生类   java如何用循环和异步方法模拟类   java Android阻止可绘制背景超出视图范围   为客户排序Java阵列   java Apache poi如何将工作表设置为枚举位置值属性?   java Rhino在使用自定义类参数调用javascript函数时出错   java格式化日期从年月日到年月日   spring如何修复java。lang.illegalargumentexception在此特定场景中是否尝试创建具有null实体的合并事件?   java如何创建更好的对象