Merge remote-tracking branch 'remotes/bignose-debian/wip/feature/make-version-info'

This commit is contained in:
Kostiantyn Rybnikov 2016-10-20 08:58:57 +03:00
commit ee30d2c9e7
3 changed files with 50 additions and 5 deletions

@ -9,6 +9,19 @@ All notable changes to this code base will be documented in this file,
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
=============

@ -43,6 +43,20 @@ This module provides just couple of functions, main of which are:
False
>>> semver.format_version(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")
'4.0.0'
>>> semver.bump_minor("3.4.5")

@ -1,8 +1,11 @@
"""
Python helper for Semantic Versioning (http://semver.org/)
"""
import collections
import re
__version__ = '2.6.0'
__author__ = 'Konstantine Rybnikov'
__author_email__ = 'k-bx@k-bx.com'
@ -28,13 +31,28 @@ def parse(version):
if match is None:
raise ValueError('%s is not valid SemVer string' % version)
verinfo = match.groupdict()
version_parts = match.groupdict()
verinfo['major'] = int(verinfo['major'])
verinfo['minor'] = int(verinfo['minor'])
verinfo['patch'] = int(verinfo['patch'])
version_parts['major'] = int(version_parts['major'])
version_parts['minor'] = int(version_parts['minor'])
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):