Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Python prerelease sorting #7884

Merged
merged 1 commit into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
216 changes: 108 additions & 108 deletions crates/uv-python/download-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,6 @@
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "685ef71882f16eabab0bc838094727978370f0ad95c29f7f5c244ffa31316aeb"
},
"cpython-3.13.0rc2-darwin-aarch64-none": {
"name": "cpython",
"arch": "aarch64",
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "9e17f9fcc314a5dd489089a7502a525c4dd08af862f9cf33b52161a752f2a5b7"
},
"cpython-3.13.0rc3-linux-aarch64-gnu": {
"name": "cpython",
"arch": "aarch64",
Expand All @@ -35,18 +23,6 @@
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "1414c6b37f37e8fd9d14e48d81e313eb9c965cb0330747d5d2d689dd7e0c7043"
},
"cpython-3.13.0rc2-linux-aarch64-gnu": {
"name": "cpython",
"arch": "aarch64",
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "d99a663d3b9f8792a659e366372e685550045cad12aef11645c06a9b6edcd071"
},
"cpython-3.13.0rc3-linux-armv7-gnueabi": {
"name": "cpython",
"arch": "armv7",
Expand All @@ -59,18 +35,6 @@
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz",
"sha256": "11befeaf4768c2ebbb258f5b07f94b7700f16424f858d6d2c250b434e99ce07c"
},
"cpython-3.13.0rc2-linux-armv7-gnueabi": {
"name": "cpython",
"arch": "armv7",
"os": "linux",
"libc": "gnueabi",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz",
"sha256": "4ca7f2aeaabf8dbb2193f0fa86f869525a5c209eb403a39a73f4cf7040cf3613"
},
"cpython-3.13.0rc3-linux-armv7-gnueabihf": {
"name": "cpython",
"arch": "armv7",
Expand All @@ -83,18 +47,6 @@
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz",
"sha256": "b7180d5ea5fda2f397d04e2e6e11a2a7e0d732542bf54c484afb81d087a7b927"
},
"cpython-3.13.0rc2-linux-armv7-gnueabihf": {
"name": "cpython",
"arch": "armv7",
"os": "linux",
"libc": "gnueabihf",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz",
"sha256": "0db2d263bdbb3af1e8dc0677fa44a5cda992ba989551346ccbbfd50a86135c3d"
},
"cpython-3.13.0rc3-windows-i686-none": {
"name": "cpython",
"arch": "i686",
Expand All @@ -107,18 +59,6 @@
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "873905b3e5e8cba700126e8d6ed28ad3aef0dd102f730f8ca196018477dd2da6"
},
"cpython-3.13.0rc2-windows-i686-none": {
"name": "cpython",
"arch": "i686",
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "759f600b27a6a0ef2638cb02e8bbcc6de726dd1c896759f78da3e412f6c992e9"
},
"cpython-3.13.0rc3-linux-powerpc64le-gnu": {
"name": "cpython",
"arch": "powerpc64le",
Expand All @@ -131,125 +71,185 @@
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "59a2a81991d78bd658742d69b577a2b4c0734628ed42bff68615686eaf96f2ab"
},
"cpython-3.13.0rc2-linux-powerpc64le-gnu": {
"cpython-3.13.0rc3-linux-s390x-gnu": {
"name": "cpython",
"arch": "powerpc64le",
"arch": "s390x",
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "70073333f7d3f0b900c7299659fec069bbefd5e04808b3729d2434b2232ac729"
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-s390x-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "2769182e58b0dddec15222bfeecbd4b12fde61c38f23a90aa942514f3545fb9b"
},
"cpython-3.13.0rc3-linux-s390x-gnu": {
"cpython-3.13.0rc3-darwin-x86_64-none": {
"name": "cpython",
"arch": "s390x",
"arch": "x86_64",
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "0f5f9fcf82093c428b80c552165544439f4adcdbe5129ecf721d619e532e9b5e"
},
"cpython-3.13.0rc3-linux-x86_64-gnu": {
"name": "cpython",
"arch": "x86_64",
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-s390x-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "2769182e58b0dddec15222bfeecbd4b12fde61c38f23a90aa942514f3545fb9b"
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "445156c61e1cc167f7b8777ad08cc36e5598e12cd27e07453f6e6dc0f62e421e"
},
"cpython-3.13.0rc2-linux-s390x-gnu": {
"cpython-3.13.0rc3-linux-x86_64-musl": {
"name": "cpython",
"arch": "s390x",
"arch": "x86_64",
"os": "linux",
"libc": "gnu",
"libc": "musl",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-s390x-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "50a2080e30d1504e76e5471e46830f0b4974c66b538ed8ec7df416975133ff89"
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-unknown-linux-musl-install_only_stripped.tar.gz",
"sha256": "4df6b7665c735a728d72e6f49034f1a6b7d9a54b0fbc472dc2ca525eb3dd513f"
},
"cpython-3.13.0rc3-darwin-x86_64-none": {
"cpython-3.13.0rc3-windows-x86_64-none": {
"name": "cpython",
"arch": "x86_64",
"os": "darwin",
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "0f5f9fcf82093c428b80c552165544439f4adcdbe5129ecf721d619e532e9b5e"
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "b59317828ef88f138ee122d420b60f2705bc72ae846ff69562e79e6c5cbc3177"
},
"cpython-3.13.0rc2-darwin-x86_64-none": {
"cpython-3.13.0rc2-darwin-aarch64-none": {
"name": "cpython",
"arch": "x86_64",
"arch": "aarch64",
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "971668ac7f3168efc4d2b589e9d36247ab8ca9f9525c56c8aa7bfd374060105b"
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "9e17f9fcc314a5dd489089a7502a525c4dd08af862f9cf33b52161a752f2a5b7"
},
"cpython-3.13.0rc3-linux-x86_64-gnu": {
"cpython-3.13.0rc2-linux-aarch64-gnu": {
"name": "cpython",
"arch": "x86_64",
"arch": "aarch64",
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "445156c61e1cc167f7b8777ad08cc36e5598e12cd27e07453f6e6dc0f62e421e"
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "d99a663d3b9f8792a659e366372e685550045cad12aef11645c06a9b6edcd071"
},
"cpython-3.13.0rc2-linux-x86_64-gnu": {
"cpython-3.13.0rc2-linux-armv7-gnueabi": {
"name": "cpython",
"arch": "x86_64",
"arch": "armv7",
"os": "linux",
"libc": "gnueabi",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz",
"sha256": "4ca7f2aeaabf8dbb2193f0fa86f869525a5c209eb403a39a73f4cf7040cf3613"
},
"cpython-3.13.0rc2-linux-armv7-gnueabihf": {
"name": "cpython",
"arch": "armv7",
"os": "linux",
"libc": "gnueabihf",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz",
"sha256": "0db2d263bdbb3af1e8dc0677fa44a5cda992ba989551346ccbbfd50a86135c3d"
},
"cpython-3.13.0rc2-windows-i686-none": {
"name": "cpython",
"arch": "i686",
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "759f600b27a6a0ef2638cb02e8bbcc6de726dd1c896759f78da3e412f6c992e9"
},
"cpython-3.13.0rc2-linux-powerpc64le-gnu": {
"name": "cpython",
"arch": "powerpc64le",
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "1893a218709d3664b7a2b80f5598b5f25c0c3fe2bcc8d0a1c75eec6bbb93d602"
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "70073333f7d3f0b900c7299659fec069bbefd5e04808b3729d2434b2232ac729"
},
"cpython-3.13.0rc3-linux-x86_64-musl": {
"cpython-3.13.0rc2-linux-s390x-gnu": {
"name": "cpython",
"arch": "x86_64",
"arch": "s390x",
"os": "linux",
"libc": "musl",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-unknown-linux-musl-install_only_stripped.tar.gz",
"sha256": "4df6b7665c735a728d72e6f49034f1a6b7d9a54b0fbc472dc2ca525eb3dd513f"
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-s390x-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "50a2080e30d1504e76e5471e46830f0b4974c66b538ed8ec7df416975133ff89"
},
"cpython-3.13.0rc2-linux-x86_64-musl": {
"cpython-3.13.0rc2-darwin-x86_64-none": {
"name": "cpython",
"arch": "x86_64",
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "971668ac7f3168efc4d2b589e9d36247ab8ca9f9525c56c8aa7bfd374060105b"
},
"cpython-3.13.0rc2-linux-x86_64-gnu": {
"name": "cpython",
"arch": "x86_64",
"os": "linux",
"libc": "musl",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-x86_64-unknown-linux-musl-install_only_stripped.tar.gz",
"sha256": "6f09aa5ba6aab8bf21955dbc3d6bab19125130ef0ebe29242b0e5ac1eebb3161"
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "1893a218709d3664b7a2b80f5598b5f25c0c3fe2bcc8d0a1c75eec6bbb93d602"
},
"cpython-3.13.0rc3-windows-x86_64-none": {
"cpython-3.13.0rc2-linux-x86_64-musl": {
"name": "cpython",
"arch": "x86_64",
"os": "windows",
"libc": "none",
"os": "linux",
"libc": "musl",
"major": 3,
"minor": 13,
"patch": 0,
"prerelease": "rc3",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20241002/cpython-3.13.0rc3%2B20241002-x86_64-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "b59317828ef88f138ee122d420b60f2705bc72ae846ff69562e79e6c5cbc3177"
"prerelease": "rc2",
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240909/cpython-3.13.0rc2%2B20240909-x86_64-unknown-linux-musl-install_only_stripped.tar.gz",
"sha256": "6f09aa5ba6aab8bf21955dbc3d6bab19125130ef0ebe29242b0e5ac1eebb3161"
},
"cpython-3.13.0rc2-windows-x86_64-none": {
"name": "cpython",
Expand Down
12 changes: 12 additions & 0 deletions crates/uv-python/fetch-download-metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,14 +448,26 @@ async def _fetch_checksums(self, downloads: list[PythonDownload]) -> None:
def render(downloads: list[PythonDownload]) -> None:
"""Render `download-metadata.json`."""

def prerelease_sort_key(prerelease: str) -> tuple[int, int]:
if prerelease.startswith("a"):
return 0, int(prerelease[1:])
if prerelease.startswith("b"):
return 1, int(prerelease[1:])
if prerelease.startswith("rc"):
return 2, int(prerelease[2:])
return 3, 0

def sort_key(download: PythonDownload) -> tuple:
# Sort by implementation, version (latest first), and then by triple.
impl_order = [ImplementationName.CPYTHON, ImplementationName.PYPY]
prerelease = prerelease_sort_key(download.version.prerelease)
return (
impl_order.index(download.implementation),
-download.version.major,
-download.version.minor,
-download.version.patch,
-prerelease[0],
-prerelease[1],
download.triple,
)

Expand Down
Loading
Loading