diff --git a/CHANGELOG b/CHANGELOG index 2603dd4..43fbd7d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -21,6 +21,14 @@ Additions * Add ‘parse_version_info’ to parse a version string to a version info tuple. +Bug Fixes +--------- + +* Refine parsing to conform more strictly to SemVer 2.0.0. + + SemVer 2.0.0 specification §9 forbids leading zero on identifiers in + the prerelease version. + Version 2.6.0 ============= diff --git a/semver.py b/semver.py index 21b4d10..4b6fdb5 100644 --- a/semver.py +++ b/semver.py @@ -10,11 +10,24 @@ __version__ = '2.6.0' __author__ = 'Konstantine Rybnikov' __author_email__ = 'k-bx@k-bx.com' -_REGEX = re.compile('^(?P(?:0|[1-9][0-9]*))' - '\.(?P(?:0|[1-9][0-9]*))' - '\.(?P(?:0|[1-9][0-9]*))' - '(\-(?P[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?' - '(\+(?P[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?$') +_REGEX = re.compile( + r""" + ^ + (?P(?:0|[1-9][0-9]*)) + \. + (?P(?:0|[1-9][0-9]*)) + \. + (?P(?:0|[1-9][0-9]*)) + (\-(?P + [1-9A-Za-z-][0-9A-Za-z-]* + (\.[1-9A-Za-z-][0-9A-Za-z-]*)* + ))? + (\+(?P + [0-9A-Za-z-]+ + (\.[0-9A-Za-z-]+)* + ))? + $ + """, re.VERBOSE) _LAST_NUMBER = re.compile(r'(?:[^\d]*(\d+)[^\d]*)+')