Merge remote-tracking branch 'remotes/bignose-debian/wip/feature/make-version-info'
This commit is contained in:
commit
ee30d2c9e7
13
CHANGELOG
13
CHANGELOG
@ -9,6 +9,19 @@ All notable changes to this code base will be documented in this file,
|
|||||||
in every released version.
|
in every released version.
|
||||||
|
|
||||||
|
|
||||||
|
Version NEXT
|
||||||
|
============
|
||||||
|
|
||||||
|
:Released: FUTURE
|
||||||
|
:Maintainer: UNKNOWN <unknown>
|
||||||
|
|
||||||
|
Additions
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Add ‘parse_version_info’ to parse a version string to a version info
|
||||||
|
tuple.
|
||||||
|
|
||||||
|
|
||||||
Version 2.6.0
|
Version 2.6.0
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
14
README.rst
14
README.rst
@ -43,6 +43,20 @@ This module provides just couple of functions, main of which are:
|
|||||||
False
|
False
|
||||||
>>> semver.format_version(3, 4, 5, 'pre.2', 'build.4')
|
>>> semver.format_version(3, 4, 5, 'pre.2', 'build.4')
|
||||||
'3.4.5-pre.2+build.4'
|
'3.4.5-pre.2+build.4'
|
||||||
|
>>> version_parts = semver.parse("3.4.5-pre.2+build.4")
|
||||||
|
>>> version_parts == {
|
||||||
|
... 'major': 3, 'minor': 4, 'patch': 5,
|
||||||
|
... 'prerelease': 'pre.2', 'build': 'build.4'}
|
||||||
|
True
|
||||||
|
>>> version_info = semver.parse_version_info("3.4.5-pre.2+build.4")
|
||||||
|
>>> version_info
|
||||||
|
VersionInfo(major=3, minor=4, patch=5, prerelease='pre.2', build='build.4')
|
||||||
|
>>> version_info.major
|
||||||
|
3
|
||||||
|
>>> version_info > (1, 0)
|
||||||
|
True
|
||||||
|
>>> version_info < (3, 5)
|
||||||
|
True
|
||||||
>>> semver.bump_major("3.4.5")
|
>>> semver.bump_major("3.4.5")
|
||||||
'4.0.0'
|
'4.0.0'
|
||||||
>>> semver.bump_minor("3.4.5")
|
>>> semver.bump_minor("3.4.5")
|
||||||
|
28
semver.py
28
semver.py
@ -1,8 +1,11 @@
|
|||||||
"""
|
"""
|
||||||
Python helper for Semantic Versioning (http://semver.org/)
|
Python helper for Semantic Versioning (http://semver.org/)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import collections
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
__version__ = '2.6.0'
|
__version__ = '2.6.0'
|
||||||
__author__ = 'Konstantine Rybnikov'
|
__author__ = 'Konstantine Rybnikov'
|
||||||
__author_email__ = 'k-bx@k-bx.com'
|
__author_email__ = 'k-bx@k-bx.com'
|
||||||
@ -28,13 +31,28 @@ def parse(version):
|
|||||||
if match is None:
|
if match is None:
|
||||||
raise ValueError('%s is not valid SemVer string' % version)
|
raise ValueError('%s is not valid SemVer string' % version)
|
||||||
|
|
||||||
verinfo = match.groupdict()
|
version_parts = match.groupdict()
|
||||||
|
|
||||||
verinfo['major'] = int(verinfo['major'])
|
version_parts['major'] = int(version_parts['major'])
|
||||||
verinfo['minor'] = int(verinfo['minor'])
|
version_parts['minor'] = int(version_parts['minor'])
|
||||||
verinfo['patch'] = int(verinfo['patch'])
|
version_parts['patch'] = int(version_parts['patch'])
|
||||||
|
|
||||||
return verinfo
|
return version_parts
|
||||||
|
|
||||||
|
|
||||||
|
VersionInfo = collections.namedtuple(
|
||||||
|
'VersionInfo', 'major minor patch prerelease build')
|
||||||
|
|
||||||
|
def parse_version_info(version):
|
||||||
|
"""
|
||||||
|
Parse version string to a VersionInfo instance.
|
||||||
|
"""
|
||||||
|
parts = parse(version)
|
||||||
|
version_info = VersionInfo(
|
||||||
|
parts['major'], parts['minor'], parts['patch'],
|
||||||
|
parts['prerelease'], parts['build'])
|
||||||
|
|
||||||
|
return version_info
|
||||||
|
|
||||||
|
|
||||||
def compare(ver1, ver2):
|
def compare(ver1, ver2):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user