在semver range和maven version range之间转换

unified-range的Python项目详细描述


统一范围

该库将输入semver范围转换为统一模型,并提供更易于编程使用的对象。

支持范围的示例

  1. npm风格的semver-<1.2.3 >=2.0.0
  2. 红宝石风格的semver-<1.2.3, >=2.0.0
  3. Maven样式的版本范围-[1.2.3,2.1.1), [3.0.0,4.1.1)

此外,使用此库可以在任何输入版本范围上运行算法,并计算此范围中是否包含特定版本。

先决条件

  1. 确保已安装PIP或PIPENV

  2. 安装: pipenv install unified-rangepip install unified-range

  3. 导入api模块: from unified_range import api

如何使用

以下是可以使用此库执行的不同功能。

要将范围转换为统一字符串范围,请使用semver格式:

ver_rng = api.from_semver(semver_str)

结果:均匀范围结构

从统一范围结构转换为semver字符串(返回str):

semver = api.to_semver(unified_spec_str)

要将versionrange对象转换为字符串:

version_range_str = str(ver_rng)

从统一字符串转换为统一模型对象(versionrange对象):

ver_rng = api.unified_range(unified_spec_str)

>>> api.unified_range('[1.2.3,4.5.6)')
<unified_range.models.UnifiedVersionRange at 0x7f7e4dc17320>

在范围列表中,检索未包含的版本:

filtered_lst = api.filter_versions(ascending_version_list, ranges)

>>> api.filter_versions(['0.1', '0.2', '1.0', '1.1', '2.0'], ['[,0.2]', '[1.1]'])
['1.0', '2.0']

ascending_version_list中的版本应按升序排序, 从最旧到最新,包含包的所有版本。

从版本范围列表中,检索列表中最接近当前版本的版本(下一个):

从版本和范围列表中筛选下一版本和最大版本。

next_version = api.next_filtered_version(current_version, ascending_version_list, ranges) 当前版本必须包含在升序版本列表中。

>>> api.next_filtered_version(current_version='0.2', ascending_version_list=['0.1', '0.2', '1.0', '1.1', '2.0'], ranges=['[,0.2]', '[1.1]'])
'1.0'

>>> api.next_filtered_version(current_version='1.1', ascending_version_list=['0.1', '0.2', '1.0', '1.1', '2.0'], ranges=['[,0.2]', '[1.1]'])
'2.0'

检索未包含的最新版本:

max_version = api.maximum_filtered_version(ascending_version_list, ranges)

>>> api.maximum_filtered_version(ascending_version_list=['0.1', '0.2', '1.0', '1.1', '2.0'], ranges=['[,0.2]', '[1.1]'])
'2.0'

均匀结构示例

以下是此库中使用的统一结构:

统一字符串结构示例:(,1.2.3)

统一模型示例:

UnifiedVersionRange.constraints -> List[Restrictions]

Restriction.bounds -> Tuple[Bound, Bound]

Bound.version -> str

Bound.inclusive -> boolean

参考文献和以前的工作

这个库是用以下方法构建的:

  1. Maven的版本范围: ^马文的{a1}和spec
  2. https://semver.org/
  3. npm’s semver library

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

推荐PyPI第三方库


热门话题
安卓在java中加入字符串组以创建复合字符串   java系统甚至不点击“下一步”或“上一步”按钮就将我返回到上一页,而不是进入下一页   java如何在arrayList中获取特定列的不同值   CXF GZIP REST JAVA   Java:使用大量半恒定标志检查优化循环中的循环?   java如何在两个应用程序之间进行会话管理?   java SVG文件使用蜡染(但没有轴线)转换为PNG   使用协议缓冲区和内部数据模型的java   java如何在logtag 安卓中打印和查看字符串的值   javascript如何在NodeJs中应用Java/Spring的分层架构?   java Spring URL在JSP中编码不正确   模式对话框后面的java工具提示   java WSRPC生成日历对象而不是日期   在对象外部无法识别类变量   java将图像从文件读/写到BuffereImage的最快方法?   JavaSpring数据存储库对具有不同Id的子类使用抽象超类   安全在Java 5.0上运行web应用程序服务器有危险吗?