mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 04:34:28 +08:00
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:
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user