Add support for managed Python 3.13 and update CPython versions (#7263)

Adds support for CPython 3.13.0rc2

Also bumps to the latest patch version of all the other CPython minor
versions we support.
This commit is contained in:
Zanie Blue 2024-09-10 14:36:16 -05:00 committed by GitHub
parent 0dc1f5db21
commit 0e9870078e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 2989 additions and 70 deletions

View file

@ -82,14 +82,23 @@ class Version(NamedTuple):
major: int
minor: int
patch: int
prerelease: str = ""
@classmethod
def from_str(cls, version: str) -> Self:
major, minor, patch = version.split(".", 3)
return cls(int(major), int(minor), int(patch))
prerelease = ""
for prerelease_kind in ("a", "b", "rc"):
parts = patch.split(prerelease_kind, 1)
if len(parts) == 2:
patch = parts[0]
prerelease = prerelease_kind + parts[1]
break
return cls(int(major), int(minor), int(patch), prerelease)
def __str__(self) -> str:
return f"{self.major}.{self.minor}.{self.patch}"
return f"{self.major}.{self.minor}.{self.patch}{self.prerelease}"
class ImplementationName(StrEnum):
@ -158,7 +167,7 @@ class CPythonFinder(Finder):
_filename_re = re.compile(
r"""(?x)
^
cpython-(?P<ver>\d+\.\d+\.\d+?)
cpython-(?P<ver>\d+\.\d+\.\d+(?:(?:a|b|rc)\d+)?)
(?:\+\d+)?
-(?P<triple>.*?)
(?:-[\dT]+)?\.tar\.(?:gz|zst)
@ -455,7 +464,9 @@ def render(downloads: list[PythonDownload]) -> None:
results = {}
for download in downloads:
key = download.key()
logging.info("Found %s (%s)", key, download.flavor)
logging.info(
"Found %s%s", key, (" (%s)" % download.flavor) if download.flavor else ""
)
results[key] = {
"name": download.implementation,
"arch": download.triple.arch,
@ -464,6 +475,7 @@ def render(downloads: list[PythonDownload]) -> None:
"major": download.version.major,
"minor": download.version.minor,
"patch": download.version.patch,
"prerelease": download.version.prerelease,
"url": download.url,
"sha256": download.sha256,
}