Fix ordering of 3.0.0.dev1 and 3.0.0a1.dev1 versions (#5932)

This commit is contained in:
Jakub Kuczys 2022-12-27 23:22:56 +01:00 committed by GitHub
parent abb0101420
commit 99479342ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 5 deletions

View File

@ -149,12 +149,20 @@ class VersionInfo:
] ]
] = [] ] = []
for obj in (self, other): for obj in (self, other):
if (
obj.releaselevel == obj.FINAL
and obj.post_release is None
and obj.dev_release is not None
):
releaselevel = -1
else:
releaselevel = obj._RELEASE_LEVELS.index(obj.releaselevel)
tups.append( tups.append(
( (
obj.major, obj.major,
obj.minor, obj.minor,
obj.micro, obj.micro,
obj._RELEASE_LEVELS.index(obj.releaselevel), releaselevel,
obj.serial if obj.serial is not None else _inf, obj.serial if obj.serial is not None else _inf,
obj.post_release if obj.post_release is not None else -_inf, obj.post_release if obj.post_release is not None else -_inf,
obj.dev_release if obj.dev_release is not None else _inf, obj.dev_release if obj.dev_release is not None else _inf,

View File

@ -2,6 +2,7 @@ import importlib.metadata
import os import os
import sys import sys
from packaging.requirements import Requirement from packaging.requirements import Requirement
from packaging.version import Version
import pytest import pytest
@ -16,10 +17,20 @@ def test_version_working():
# When adding more of these, ensure they are added in ascending order of precedence # When adding more of these, ensure they are added in ascending order of precedence
version_tests = ( version_tests = (
"3.0.0.dev1",
"3.0.0.dev2",
"3.0.0a32.dev12",
"3.0.0a32",
"3.0.0a32.post10.dev12", "3.0.0a32.post10.dev12",
"3.0.0a32.post10",
"3.0.0b23.dev4",
"3.0.0b23",
"3.0.0b23.post5.dev16",
"3.0.0b23.post5",
"3.0.0rc1.dev1", "3.0.0rc1.dev1",
"3.0.0rc1", "3.0.0rc1",
"3.0.0", "3.0.0",
"3.0.0.post1.dev1",
"3.0.1.dev1", "3.0.1.dev1",
"3.0.1.dev2+gdbaf31e", "3.0.1.dev2+gdbaf31e",
"3.0.1.dev2+gdbaf31e.dirty", "3.0.1.dev2+gdbaf31e.dirty",
@ -37,9 +48,10 @@ def test_version_info_str_parsing():
def test_version_info_lt(): def test_version_info_lt():
for version_cls in (Version, VersionInfo.from_str):
for next_idx, cur in enumerate(version_tests[:-1], start=1): for next_idx, cur in enumerate(version_tests[:-1], start=1):
cur_test = VersionInfo.from_str(cur) cur_test = version_cls(cur)
next_test = VersionInfo.from_str(version_tests[next_idx]) next_test = version_cls(version_tests[next_idx])
assert cur_test < next_test assert cur_test < next_test