Skip to content

Commit ee30d2c

Browse files
committed
Merge remote-tracking branch 'remotes/bignose-debian/wip/feature/make-version-info'
2 parents 3c0cf9b + fbeef38 commit ee30d2c

File tree

3 files changed

+50
-5
lines changed

3 files changed

+50
-5
lines changed

CHANGELOG

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,19 @@ All notable changes to this code base will be documented in this file,
99
in every released version.
1010

1111

12+
Version NEXT
13+
============
14+
15+
:Released: FUTURE
16+
:Maintainer: UNKNOWN <unknown>
17+
18+
Additions
19+
---------
20+
21+
* Add ‘parse_version_info’ to parse a version string to a version info
22+
tuple.
23+
24+
1225
Version 2.6.0
1326
=============
1427

README.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,20 @@ This module provides just couple of functions, main of which are:
4343
False
4444
>>> semver.format_version(3, 4, 5, 'pre.2', 'build.4')
4545
'3.4.5-pre.2+build.4'
46+
>>> version_parts = semver.parse("3.4.5-pre.2+build.4")
47+
>>> version_parts == {
48+
... 'major': 3, 'minor': 4, 'patch': 5,
49+
... 'prerelease': 'pre.2', 'build': 'build.4'}
50+
True
51+
>>> version_info = semver.parse_version_info("3.4.5-pre.2+build.4")
52+
>>> version_info
53+
VersionInfo(major=3, minor=4, patch=5, prerelease='pre.2', build='build.4')
54+
>>> version_info.major
55+
3
56+
>>> version_info > (1, 0)
57+
True
58+
>>> version_info < (3, 5)
59+
True
4660
>>> semver.bump_major("3.4.5")
4761
'4.0.0'
4862
>>> semver.bump_minor("3.4.5")

semver.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
"""
22
Python helper for Semantic Versioning (http://semver.org/)
33
"""
4+
5+
import collections
46
import re
57

8+
69
__version__ = '2.6.0'
710
__author__ = 'Konstantine Rybnikov'
811
__author_email__ = 'k-bx@k-bx.com'
@@ -28,13 +31,28 @@ def parse(version):
2831
if match is None:
2932
raise ValueError('%s is not valid SemVer string' % version)
3033

31-
verinfo = match.groupdict()
34+
version_parts = match.groupdict()
35+
36+
version_parts['major'] = int(version_parts['major'])
37+
version_parts['minor'] = int(version_parts['minor'])
38+
version_parts['patch'] = int(version_parts['patch'])
39+
40+
return version_parts
3241

33-
verinfo['major'] = int(verinfo['major'])
34-
verinfo['minor'] = int(verinfo['minor'])
35-
verinfo['patch'] = int(verinfo['patch'])
3642

37-
return verinfo
43+
VersionInfo = collections.namedtuple(
44+
'VersionInfo', 'major minor patch prerelease build')
45+
46+
def parse_version_info(version):
47+
"""
48+
Parse version string to a VersionInfo instance.
49+
"""
50+
parts = parse(version)
51+
version_info = VersionInfo(
52+
parts['major'], parts['minor'], parts['patch'],
53+
parts['prerelease'], parts['build'])
54+
55+
return version_info
3856

3957

4058
def compare(ver1, ver2):

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy