Merged upstream changes.

This commit is contained in:
Vinay Sajip 2012-02-27 11:03:55 +00:00
commit 01121f2d5a
3 changed files with 25 additions and 11 deletions

View file

@ -16,6 +16,7 @@ class VersionTestCase(unittest.TestCase):
(V('1.2'), '1.2'), (V('1.2'), '1.2'),
(V('1.2.3a4'), '1.2.3a4'), (V('1.2.3a4'), '1.2.3a4'),
(V('1.2c4'), '1.2c4'), (V('1.2c4'), '1.2c4'),
(V('4.17rc2'), '4.17rc2'),
(V('1.2.3.4'), '1.2.3.4'), (V('1.2.3.4'), '1.2.3.4'),
(V('1.2.3.4.0b3'), '1.2.3.4b3'), (V('1.2.3.4.0b3'), '1.2.3.4b3'),
(V('1.2.0.0.0'), '1.2'), (V('1.2.0.0.0'), '1.2'),
@ -146,6 +147,14 @@ class VersionTestCase(unittest.TestCase):
""" """
doctest.script_from_examples(comparison_doctest_string) doctest.script_from_examples(comparison_doctest_string)
# the doctest above is never run, so temporarily add real unit
# tests until the doctest is rewritten
self.assertLessEqual(V('1.2.0rc1'), V('1.2.0'))
self.assertGreater(V('1.0'), V('1.0c2'))
self.assertGreater(V('1.0'), V('1.0rc2'))
self.assertGreater(V('1.0rc2'), V('1.0rc1'))
self.assertGreater(V('1.0c4'), V('1.0c1'))
def test_suggest_normalized_version(self): def test_suggest_normalized_version(self):
self.assertEqual(suggest('1.0'), '1.0') self.assertEqual(suggest('1.0'), '1.0')

View file

@ -11,19 +11,20 @@ __all__ = ['NormalizedVersion', 'suggest_normalized_version',
# A marker used in the second and third parts of the `parts` tuple, for # A marker used in the second and third parts of the `parts` tuple, for
# versions that don't have those segments, to sort properly. An example # versions that don't have those segments, to sort properly. An example
# of versions in sort order ('highest' last): # of versions in sort order ('highest' last):
# 1.0b1 ((1,0), ('b',1), ('f',)) # 1.0b1 ((1,0), ('b',1), ('z',))
# 1.0.dev345 ((1,0), ('f',), ('dev', 345)) # 1.0.dev345 ((1,0), ('z',), ('dev', 345))
# 1.0 ((1,0), ('f',), ('f',)) # 1.0 ((1,0), ('z',), ('z',))
# 1.0.post256.dev345 ((1,0), ('f',), ('f', 'post', 256, 'dev', 345)) # 1.0.post256.dev345 ((1,0), ('z',), ('z', 'post', 256, 'dev', 345))
# 1.0.post345 ((1,0), ('f',), ('f', 'post', 345, 'f')) # 1.0.post345 ((1,0), ('z',), ('z', 'post', 345, 'z'))
# ^ ^ ^ # ^ ^ ^
# 'b' < 'f' ---------------------/ | | # 'b' < 'z' ---------------------/ | |
# | | # | |
# 'dev' < 'f' < 'post' -------------------/ | # 'dev' < 'z' ----------------------------/ |
# | # |
# 'dev' < 'f' ----------------------------------------------/ # 'dev' < 'z' ----------------------------------------------/
# Other letters would do, but 'f' for 'final' is kind of nice. # 'f' for 'final' would be kind of nice, but due to bugs in the support of
_FINAL_MARKER = ('f',) # 'rc' we must use 'z'
_FINAL_MARKER = ('z',)
_VERSION_RE = re.compile(r''' _VERSION_RE = re.compile(r'''
^ ^
@ -167,8 +168,9 @@ class NormalizedVersion:
if prerel is not _FINAL_MARKER: if prerel is not _FINAL_MARKER:
s += prerel[0] s += prerel[0]
s += '.'.join(str(v) for v in prerel[1:]) s += '.'.join(str(v) for v in prerel[1:])
# XXX clean up: postdev is always true; code is obscure
if postdev and postdev is not _FINAL_MARKER: if postdev and postdev is not _FINAL_MARKER:
if postdev[0] == 'f': if postdev[0] == _FINAL_MARKER[0]:
postdev = postdev[1:] postdev = postdev[1:]
i = 0 i = 0
while i < len(postdev): while i < len(postdev):

View file

@ -508,6 +508,9 @@ Core and Builtins
Library Library
------- -------
- Issue #11841: Fix comparison bug with 'rc' versions in packaging.version.
Patch by Filip Gruszczyński.
- Issue #13447: Add a test file to host regression tests for bugs in the - Issue #13447: Add a test file to host regression tests for bugs in the
scripts found in the Tools directory. scripts found in the Tools directory.