stubsabot: fix legacy version parsing (#9866)

New `packaging` is strict and doesn't like paramiko's pokemon versioning
scheme from 2004

Fixes #9865
This commit is contained in:
Shantanu
2023-03-10 23:30:53 -08:00
committed by GitHub
parent 390058eb39
commit aac3863752

View File

@@ -82,6 +82,17 @@ VersionString: TypeAlias = str
ReleaseDownload: TypeAlias = dict[str, Any]
def _best_effort_version(version: VersionString) -> packaging.version.Version:
try:
return packaging.version.Version(version)
except packaging.version.InvalidVersion:
# packaging.version.Version no longer parses legacy versions
try:
return packaging.version.Version(version.replace("-", "+"))
except packaging.version.InvalidVersion:
return packaging.version.Version("0")
@dataclass
class PypiInfo:
distribution: str
@@ -104,7 +115,7 @@ class PypiInfo:
return self.get_release(version=self.info["version"])
def releases_in_descending_order(self) -> Iterator[PypiReleaseDownload]:
for version in sorted(self.releases, key=packaging.version.Version, reverse=True):
for version in sorted(self.releases, key=_best_effort_version, reverse=True):
yield self.get_release(version=version)