跳转到主要内容

一个实现'SemVer'方案的库。

项目描述

简介

这个小巧的Python库提供了一些处理SemVer的工具。它严格遵循SemVer方案的2.0.0版本。

https://github.com/rbarrois/python-semanticversion/actions/workflows/test.yml/badge.svg Latest Version Supported Python versions Wheel status License

入门

使用pip从PyPI安装此包

pip install semantic-version

或从GitHub安装

$ git clone git://github.com/rbarrois/python-semanticversion.git

在您的代码中导入它

import semantic_version

此模块提供了处理语义版本的类

  • Version表示版本号(0.1.1-alpha+build.2012-05-15

  • BaseSpec派生类表示需求规范(>=0.1.1,<0.3.0

    • SimpleSpec 描述了一种自然描述语法

    • NpmSpec 用于 NPM 风格的范围描述。

版本

定义一个 Version 非常简单

>>> import semantic_version
>>> v = semantic_version.Version('0.1.1')
>>> v.major
0
>>> v.minor
1
>>> v.patch
1
>>> v.prerelease
[]
>>> v.build
[]
>>> list(v)
[0, 1, 1, [], []]

如果提供的版本字符串无效,将引发 ValueError

>>> semantic_version.Version('0.1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/rbarrois/dev/semantic_version/src/semantic_version/base.py", line 64, in __init__
    major, minor, patch, prerelease, build = self.parse(version_string, partial)
  File "/Users/rbarrois/dev/semantic_version/src/semantic_version/base.py", line 86, in parse
    raise ValueError('Invalid version string: %r' % version_string)
ValueError: Invalid version string: '0.1'

还可以使用命名组件创建一个 Version

>>> semantic_version.Version(major=0, minor=1, patch=2)
Version('0.1.2')

在这种情况下,majorminorpatch 是必需的,必须是整数。如果提供,prereleasebuild 必须是字符串元组

>>> semantic_version.Version(major=0, minor=1, patch=2, prerelease=('alpha', '2'))
Version('0.1.2-alpha.2')

某些用户提供的输入可能与语义版本方案不匹配。对于此类情况,Version.coerce 方法将尝试将任何类似版本的字符串转换为有效的 semver 版本

>>> Version.coerce('0')
Version('0.0.0')
>>> Version.coerce('0.1.2.3.4')
Version('0.1.2+3.4')
>>> Version.coerce('0.1.2a3')
Version('0.1.2-a3')

处理版本

显然,可以比较版本

>>> semantic_version.Version('0.1.1') < semantic_version.Version('0.1.2')
True
>>> semantic_version.Version('0.1.1') > semantic_version.Version('0.1.1-alpha')
True
>>> semantic_version.Version('0.1.1') <= semantic_version.Version('0.1.1-alpha')
False

还可以获取一个新版本,表示版本级别的提升

>>> v = semantic_version.Version('0.1.1+build')
>>> new_v = v.next_major()
>>> str(new_v)
'1.0.0'
>>> v = semantic_version.Version('1.1.1+build')
>>> new_v = v.next_minor()
>>> str(new_v)
'1.2.0'
>>> v = semantic_version.Version('1.1.1+build')
>>> new_v = v.next_patch()
>>> str(new_v)
'1.1.2'

需求规范

python-semanticversion 提供了几种方法来描述接受的版本范围

  • SimpleSpec 类提供了一种简单、易于理解的方案 - 从 PyPI 范围表示法中汲取了灵感;

  • NpmSpec 类支持整个 NPM 范围规范方案

    >>> Version('0.1.2') in NpmSpec('0.1.0-alpha.2 .. 0.2.4')
    True
    >>> Version('0.1.2') in NpmSpec('>=0.1.1 <0.1.3 || 2.x')
    True
    >>> Version('2.3.4') in NpmSpec('>=0.1.1 <0.1.3 || 2.x')
    True

SimpleSpec 方案

基本用法只是一个比较器和基本版本

>>> s = SimpleSpec('>=0.1.1')  # At least 0.1.1
>>> s.match(Version('0.1.1'))
True
>>> s.match(Version('0.1.1-alpha1'))  # pre-release doesn't satisfy version spec
False
>>> s.match(Version('0.1.0'))
False

结合规范可以表示如下

>>> SimpleSpec('>=0.1.1,<0.3.0')

还可用 in 关键字提供更简单的测试语法

>>> s = SimpleSpec('==0.1.1')
>>> Version('0.1.1+git7ccc72') in s  # build variants are equivalent to full versions
True
>>> Version('0.1.1-alpha1') in s     # pre-release variants don't match the full version.
False
>>> Version('0.1.2') in s
False

有关 SimpleSpec 方案更详细的信息,请参阅完整文档:[https://python-semanticversion.readthedocs.io/en/latest/](https://python-semanticversion.readthedocs.io/en/latest/)

使用规范

SimpleSpec.filter 方法过滤 Version 的可迭代序列

>>> s = SimpleSpec('>=0.1.0,<0.4.0')
>>> versions = (Version('0.%d.0' % i) for i in range(6))
>>> for v in s.filter(versions):
...     print v
0.1.0
0.2.0
0.3.0

也可以从这样的可迭代序列中选择“最佳”版本

>>> s = SimpleSpec('>=0.1.0,<0.4.0')
>>> versions = (Version('0.%d.0' % i) for i in range(6))
>>> s.select(versions)
Version('0.3.0')

贡献

为了对源代码做出贡献

在提交补丁或拉取请求时,应遵守以下规则

  • 编码约定基于 PEP 8

  • 添加更改后,整个测试套件必须通过

  • 新功能必须达到 100% 的测试覆盖率

  • 新功能和方法的文档应在 reference 部分中记录,并包含在 changelog

  • contributors 部分中包含您的姓名

项目详细信息


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

semantic_version-2.10.0.tar.gz (52.3 kB 查看哈希值)

上传时间: 源代码

构建发行版

semantic_version-2.10.0-py2.py3-none-any.whl (15.6 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面