diff --git a/semver.py b/semver.py index db82585d..af7dec66 100644 --- a/semver.py +++ b/semver.py @@ -19,18 +19,18 @@ _REGEX = re.compile( r""" ^ - (?P(?:0|[1-9][0-9]*)) + (?P0|[1-9]\d*) \. - (?P(?:0|[1-9][0-9]*)) + (?P0|[1-9]\d*) \. - (?P(?:0|[1-9][0-9]*)) - (\-(?P - (?:0|[1-9A-Za-z-][0-9A-Za-z-]*) - (\.(?:0|[1-9A-Za-z-][0-9A-Za-z-]*))* + (?P0|[1-9]\d*) + (?:-(?P + (?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*) + (?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))* ))? - (\+(?P - [0-9A-Za-z-]+ - (\.[0-9A-Za-z-]+)* + (?:\+(?P + [0-9a-zA-Z-]+ + (?:\.[0-9a-zA-Z-]+)* ))? $ """, re.VERBOSE) diff --git a/setup.py b/setup.py index da0fab65..7c31635b 100755 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ def run_tests(self): class Clean(CleanCommand): def run(self): - super().run() + super(CleanCommand, self).run() delete_in_root = [ 'build', '.cache', diff --git a/test_semver.py b/test_semver.py index 023488da..053031f6 100644 --- a/test_semver.py +++ b/test_semver.py @@ -70,6 +70,30 @@ def test_fordocstrings(func): 'prerelease': 'alpha-1', 'build': 'build.11.e0f985a', }), + ("0.1.0-0f", + { + 'major': 0, + 'minor': 1, + 'patch': 0, + 'prerelease': '0f', + 'build': None, + }), + ("0.0.0-0foo.1", + { + 'major': 0, + 'minor': 0, + 'patch': 0, + 'prerelease': '0foo.1', + 'build': None, + }), + ("0.0.0-0foo.1+build.1", + { + 'major': 0, + 'minor': 0, + 'patch': 0, + 'prerelease': '0foo.1', + 'build': 'build.1', + }), ]) def test_should_parse_version(version, expected): result = parse(version)