Skip to content

Commit aac3863

Browse files
authored
stubsabot: fix legacy version parsing (#9866)
New `packaging` is strict and doesn't like paramiko's pokemon versioning scheme from 2004 Fixes #9865
1 parent 390058e commit aac3863

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

scripts/stubsabot.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,17 @@ class PypiReleaseDownload:
8282
ReleaseDownload: TypeAlias = dict[str, Any]
8383

8484

85+
def _best_effort_version(version: VersionString) -> packaging.version.Version:
86+
try:
87+
return packaging.version.Version(version)
88+
except packaging.version.InvalidVersion:
89+
# packaging.version.Version no longer parses legacy versions
90+
try:
91+
return packaging.version.Version(version.replace("-", "+"))
92+
except packaging.version.InvalidVersion:
93+
return packaging.version.Version("0")
94+
95+
8596
@dataclass
8697
class PypiInfo:
8798
distribution: str
@@ -104,7 +115,7 @@ def get_latest_release(self) -> PypiReleaseDownload:
104115
return self.get_release(version=self.info["version"])
105116

106117
def releases_in_descending_order(self) -> Iterator[PypiReleaseDownload]:
107-
for version in sorted(self.releases, key=packaging.version.Version, reverse=True):
118+
for version in sorted(self.releases, key=_best_effort_version, reverse=True):
108119
yield self.get_release(version=version)
109120

110121

0 commit comments

Comments
 (0)