This commit is contained in:
Jo 2025-07-07 11:58:21 +08:00 committed by GitHub
commit c83ed59f79
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 960 additions and 2 deletions

View file

@ -95,7 +95,7 @@ pub enum Libc {
} }
impl Libc { impl Libc {
pub(crate) fn from_env() -> Result<Self, LibcDetectionError> { pub fn from_env() -> Result<Self, LibcDetectionError> {
match std::env::consts::OS { match std::env::consts::OS {
"linux" => Ok(Self::Some(match detect_linux_libc()? { "linux" => Ok(Self::Some(match detect_linux_libc()? {
LibcVersion::Manylinux { .. } => match std::env::consts::ARCH { LibcVersion::Manylinux { .. } => match std::env::consts::ARCH {

View file

@ -0,0 +1,642 @@
{
"cpython-3.14.0a6-darwin-aarch64-none": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 14,
"patch": 0,
"prerelease": "a6",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.14.0a6%2B20250409-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "ee5a7b630874554bae30b5f11bee55ef7ffd093f691cb7161cae34874c00ecf0",
"variant": null
},
"cpython-3.14.0a6-darwin-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 14,
"patch": 0,
"prerelease": "a6",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.14.0a6%2B20250409-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "a187d2c50f43095c8f51b34babae1c291ee1a42d6777ce8d8bcd58517652f987",
"variant": null
},
"cpython-3.14.0a6-linux-aarch64-gnu": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 14,
"patch": 0,
"prerelease": "a6",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.14.0a6%2B20250409-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "498849c92f28b6f1b1c5dfe83587660eff5ac574dc7974bada9ce68634ded6f1",
"variant": null
},
"cpython-3.14.0a6-linux-x86_64-gnu": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 14,
"patch": 0,
"prerelease": "a6",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.14.0a6%2B20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "a777bbf17e251cec96d14c3ab70f67cce752930a5542b8e04ce22e892470c594",
"variant": null
},
"cpython-3.14.0a6-windows-i686-none": {
"name": "cpython",
"arch": {
"family": "i686",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 14,
"patch": 0,
"prerelease": "a6",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.14.0a6%2B20250409-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "26c7fbad360c7c0e7296f453620691a8a36c710063741b9525a9e660ef25e79f",
"variant": null
},
"cpython-3.14.0a6-windows-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 14,
"patch": 0,
"prerelease": "a6",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.14.0a6%2B20250409-x86_64-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "1efb04f1441cab2f848cada6aad59ec396d5721dc5c426f2f4823df0345ca96a",
"variant": null
},
"cpython-3.13.3-darwin-aarch64-none": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "1326772bfdb61a136c6ede7955872636ff601bc0b33fca80bb2c81b3ca370931",
"variant": null
},
"cpython-3.13.3-darwin-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "466f2880f8ce065d51fe24be35b99011c54b4aff5461b1ed15cd2cbabd84e15b",
"variant": null
},
"cpython-3.13.3-linux-aarch64-gnu": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "640a37de9d0cf00a9b7173977f0752455a3a4dad8c938486c511370360f551bd",
"variant": null
},
"cpython-3.13.3-linux-x86_64-gnu": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "01d08b9bc8a96698b9d64c2fc26da4ecc4fa9e708ce0a34fb88f11ab7e552cbd",
"variant": null
},
"cpython-3.13.3-windows-i686-none": {
"name": "cpython",
"arch": {
"family": "i686",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "153ccf24ca68f575d97dca38ebe0c81d1f525ca678f6c4f6e757f25d3c65b51a",
"variant": null
},
"cpython-3.13.3-windows-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-x86_64-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "efe00d799923e7cdd54ad6014f160802964b3f9b9c2acaa2390ea26eac7b188e",
"variant": null
},
"cpython-3.13.3+freethreaded-darwin-aarch64-none": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-aarch64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst",
"sha256": "5f88cb204e745229f95a6b024dff500a4a4ec825786d192add6c43879c322fbb",
"variant": "freethreaded"
},
"cpython-3.13.3+freethreaded-darwin-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-x86_64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst",
"sha256": "5c0a566b641997e53713f4c76cb53835fda6220af41dfe4b99c2b3e0c16f3892",
"variant": "freethreaded"
},
"cpython-3.13.3+freethreaded-linux-aarch64-gnu": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-aarch64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst",
"sha256": "0878d9e9908da2124c12370e620d22f68fd4b50f427455afca132cecb20245c6",
"variant": "freethreaded"
},
"cpython-3.13.3+freethreaded-linux-x86_64-gnu": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-x86_64-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst",
"sha256": "d447be565ae006fd74eb86289086d3d0170bcf7527dccd64343f6aa88813f005",
"variant": "freethreaded"
},
"cpython-3.13.3+freethreaded-windows-i686-none": {
"name": "cpython",
"arch": {
"family": "i686",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-i686-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst",
"sha256": "148acee346ff79f0ed2f6046e4d35797d9bc35cbe4641fa7273d642b17d087c1",
"variant": "freethreaded"
},
"cpython-3.13.3+freethreaded-windows-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 3,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-x86_64-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst",
"sha256": "e81c6d067abf56ebf924cd03d8fe47f3cb1f0f407d17423d9bf8d10451330087",
"variant": "freethreaded"
},
"cpython-3.13.2-darwin-aarch64-none": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 2,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250317/cpython-3.13.2%2B20250317-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "9002e620e4113e7439b2de0db5ff9b2dc914cde4fba2f10134cce3a5cdebac81",
"variant": null
},
"cpython-3.13.2-darwin-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 2,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250317/cpython-3.13.2%2B20250317-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "e5a904ecfb4061389773dd655d3b5665447c80cbf2948fcb1c07e92716eed955",
"variant": null
},
"cpython-3.13.2-linux-aarch64-gnu": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 2,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250317/cpython-3.13.2%2B20250317-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "106bf4f243a2d02a1e3995ad0551bf15bdfb33abfc18f85138e6b8dd0d1923fc",
"variant": null
},
"cpython-3.13.2-linux-x86_64-gnu": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 13,
"patch": 2,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250317/cpython-3.13.2%2B20250317-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "ee909a9d0fb16375ebd3b3ca0322fd9cac0904b304e28ad68527036858e301e9",
"variant": null
},
"cpython-3.13.2-windows-i686-none": {
"name": "cpython",
"arch": {
"family": "i686",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 2,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250317/cpython-3.13.2%2B20250317-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "d6213591700d5ee5aeb37508c4f67cc3d751679f78962aabe6f6f5ba2170c71d",
"variant": null
},
"cpython-3.13.2-windows-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 13,
"patch": 2,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250317/cpython-3.13.2%2B20250317-x86_64-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "1d948860b5ddeff67a6fece81cc3354f9144161968d2128186d4e1a3562a4e76",
"variant": null
},
"cpython-3.12.10-darwin-aarch64-none": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 12,
"patch": 10,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.12.10%2B20250409-aarch64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "0be1fe0b35a4d3c382141764ef16ed3b8cc2b4620b657f678daa7b7f8df39699",
"variant": null
},
"cpython-3.12.10-darwin-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 12,
"patch": 10,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.12.10%2B20250409-x86_64-apple-darwin-install_only_stripped.tar.gz",
"sha256": "ad3bef94b6054adcf8e0a47886e21b00dfc6a37f22eea229cf0f8725bd0e1023",
"variant": null
},
"cpython-3.12.10-linux-aarch64-gnu": {
"name": "cpython",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 12,
"patch": 10,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.12.10%2B20250409-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "e1f450b77b81a250411855bb5e5cbd0f0acbc9ad46b5ea97f224452831bb3276",
"variant": null
},
"cpython-3.12.10-linux-x86_64-gnu": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 12,
"patch": 10,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.12.10%2B20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz",
"sha256": "8c59b9ac6bff2dc3934181d7bc82594f9f59a613afed8d72c9e89d7194e790ee",
"variant": null
},
"cpython-3.12.10-windows-i686-none": {
"name": "cpython",
"arch": {
"family": "i686",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 12,
"patch": 10,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.12.10%2B20250409-i686-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "77f7a21fe01c1e437e8ac7ba01299ff0647071e86449f6fdf824e58d0d019e42",
"variant": null
},
"cpython-3.12.10-windows-x86_64-none": {
"name": "cpython",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 12,
"patch": 10,
"prerelease": "",
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.12.10%2B20250409-x86_64-pc-windows-msvc-install_only_stripped.tar.gz",
"sha256": "08670ab68f041481b8127b2ea27e01ddf56131e61fcf845f489024fddcd3deec",
"variant": null
},
"pypy-3.11.11-darwin-aarch64-none": {
"name": "pypy",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 11,
"patch": 11,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.11-v7.3.19-macos_arm64.tar.bz2",
"sha256": "7704e0d5302e53920d32dcfe9afeeb10436d4c94233e8830cf603aa955a861c1",
"variant": null
},
"pypy-3.11.11-darwin-x86_64-none": {
"name": "pypy",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 11,
"patch": 11,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.11-v7.3.19-macos_x86_64.tar.bz2",
"sha256": "a2439f9d30dfdae96a5e9101c7dc54a8a68b56c9d7314ea399b0a25d3e87ebb2",
"variant": null
},
"pypy-3.11.11-linux-aarch64-gnu": {
"name": "pypy",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 11,
"patch": 11,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.11-v7.3.19-aarch64.tar.bz2",
"sha256": "13207dbf81ce24e96da760b1b863627b77bb20b1fb4c95191e02a0b72383df74",
"variant": null
},
"pypy-3.11.11-linux-x86_64-gnu": {
"name": "pypy",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 11,
"patch": 11,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.11-v7.3.19-linux64.tar.bz2",
"sha256": "9177d9e0bb91b05f921c642cb0ff71a0f3653b5d29a42d40d6a078c15b75720f",
"variant": null
},
"pypy-3.11.11-windows-x86_64-none": {
"name": "pypy",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 11,
"patch": 11,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.11-v7.3.19-win64.zip",
"sha256": "b61c7c1dbf879eda6f779c374bfbbeecd3f618ada08404705a1a19d39df48dbd",
"variant": null
},
"pypy-3.10.16-darwin-aarch64-none": {
"name": "pypy",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 10,
"patch": 16,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.10-v7.3.19-macos_arm64.tar.bz2",
"sha256": "3db8a03fc496164801646844d7f3b12baa0adb3ad9a0b7cb124521bc2e168a36",
"variant": null
},
"pypy-3.10.16-darwin-x86_64-none": {
"name": "pypy",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "darwin",
"libc": "none",
"major": 3,
"minor": 10,
"patch": 16,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.10-v7.3.19-macos_x86_64.tar.bz2",
"sha256": "2c5e5c2a33ac882551d7f28b98d19d486b8995aa50824a73b4edcc6aeec35c63",
"variant": null
},
"pypy-3.10.16-linux-aarch64-gnu": {
"name": "pypy",
"arch": {
"family": "aarch64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 10,
"patch": 16,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.10-v7.3.19-aarch64.tar.bz2",
"sha256": "af27a589178f11198e2244ab65ca510630ba97c131d7ccc4021eb5bc58de7f57",
"variant": null
},
"pypy-3.10.16-linux-x86_64-gnu": {
"name": "pypy",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "linux",
"libc": "gnu",
"major": 3,
"minor": 10,
"patch": 16,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.10-v7.3.19-linux64.tar.bz2",
"sha256": "c73ac2cc2380ac9227fd297482bf2a3e17a80618ba46db7544d535515321ec1e",
"variant": null
},
"pypy-3.10.16-windows-x86_64-none": {
"name": "pypy",
"arch": {
"family": "x86_64",
"variant": null
},
"os": "windows",
"libc": "none",
"major": 3,
"minor": 10,
"patch": 16,
"prerelease": "",
"url": "https://downloads.python.org/pypy/pypy3.10-v7.3.19-win64.zip",
"sha256": "c0d07bba6c8fb4e5804f4a8b3f8ef07cc3d89f6ad1db42a45ffb9be60bbb7cc2",
"variant": null
}
}

View file

@ -1,4 +1,8 @@
use uv_python::platform::{Arch, Os}; #![allow(dead_code, unused_imports)]
use anyhow::Result;
use assert_fs::prelude::{FileWriteBin, PathChild};
use uv_python::platform::{Arch, Libc, Os};
use uv_static::EnvVars; use uv_static::EnvVars;
use crate::common::{TestContext, uv_snapshot}; use crate::common::{TestContext, uv_snapshot};
@ -29,6 +33,17 @@ fn python_list() {
----- stderr ----- ----- stderr -----
"); ");
// Show only the installed interpreters
uv_snapshot!(context.filters(), context.python_list().arg("--only-installed"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.12.[X]-[PLATFORM] [PYTHON-3.12]
cpython-3.11.[X]-[PLATFORM] [PYTHON-3.11]
----- stderr -----
"#);
// Request Python 3.12 // Request Python 3.12
uv_snapshot!(context.filters(), context.python_list().arg("3.12"), @r" uv_snapshot!(context.filters(), context.python_list().arg("3.12"), @r"
success: true success: true
@ -126,6 +141,307 @@ fn python_list() {
"); ");
} }
/// A subset versions of the `uv-python/download-metadata.json` file for `uv python list` tests.
const PYTHON_DOWNLOADS_JSON: &[u8] = include_bytes!("python-downloads-metadata.json");
#[test]
#[cfg(unix)] // Windows does not have aarch64 yet, its output is different
fn python_list_downloads() -> Result<()> {
let context: TestContext = TestContext::new("3.11").with_collapsed_whitespace();
let downloads_json = context.temp_dir.child("python-downloads.json");
downloads_json.write_binary(PYTHON_DOWNLOADS_JSON)?;
let python_list = || {
let mut cmd = context.python_list();
cmd.arg("--only-downloads")
.env(EnvVars::UV_PYTHON_DOWNLOADS, "true")
.env(EnvVars::UV_PYTHON_DOWNLOADS_JSON_URL, &*downloads_json);
cmd
};
// Regex to match the current os, arch and libc
let platform = format!(
"((?:cpython|pypy)-(?:[^-]+))-{}-{}-{}",
Os::from_env(),
Arch::from_env(),
Libc::from_env()?
);
let platform_filters = [(platform.as_ref(), "$1-[OS]-[ARCH]-[LIBC]")]
.into_iter()
.chain(context.filters())
.collect::<Vec<_>>();
// `--only-downloads` only shows available downloads for the current platform.
uv_snapshot!(platform_filters, python_list(), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.14.0a6-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.13.3-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.13.3+freethreaded-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.12.10-[OS]-[ARCH]-[LIBC] <download available>
pypy-3.11.[X]-[OS]-[ARCH]-[LIBC] <download available>
pypy-3.10.16-[OS]-[ARCH]-[LIBC] <download available>
----- stderr -----
"#);
// `--all-versions` shows all versions for current platform, including old patch versions.
uv_snapshot!(platform_filters, python_list().arg("--all-versions"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.14.0a6-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.13.3-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.13.3+freethreaded-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.13.2-[OS]-[ARCH]-[LIBC] <download available>
cpython-3.12.10-[OS]-[ARCH]-[LIBC] <download available>
pypy-3.11.[X]-[OS]-[ARCH]-[LIBC] <download available>
pypy-3.10.16-[OS]-[ARCH]-[LIBC] <download available>
----- stderr -----
"#);
// TODO: enable `--all-arches` tests in https://github.com/astral-sh/uv/pull/12953
// `--all-arches` show all architectures for the current platform, with non-latest patch versions hidden.
// uv_snapshot!(platform_any_arch_filters, python_list().arg("--all-arches"), @r#"
// success: true
// exit_code: 0
// ----- stdout -----
// cpython-3.14.0a6-[OS]-aarch64-[LIBC] <download available>
// cpython-3.13.3-[OS]-aarch64-[LIBC] <download available>
// cpython-3.13.3+freethreaded-[OS]-aarch64-[LIBC] <download available>
// cpython-3.12.10-[OS]-aarch64-[LIBC] <download available>
// pypy-3.11.[X]-[OS]-aarch64-[LIBC] <download available>
// pypy-3.10.16-[OS]-aarch64-[LIBC] <download available>
//
// ----- stderr -----
// "#);
// --all-versions && --all-arches
// uv_snapshot!(platform_any_arch_filters, python_list().arg("--all-versions").arg("--all-arches"), @r#"
// success: true
// exit_code: 0
// ----- stdout -----
// cpython-3.14.0a6-[OS]-aarch64-[LIBC] <download available>
// cpython-3.13.3-[OS]-aarch64-[LIBC] <download available>
// cpython-3.13.3+freethreaded-[OS]-aarch64-[LIBC] <download available>
// cpython-3.13.2-[OS]-aarch64-[LIBC] <download available>
// cpython-3.12.10-[OS]-aarch64-[LIBC] <download available>
// pypy-3.11.[X]-[OS]-aarch64-[LIBC] <download available>
// pypy-3.10.16-[OS]-aarch64-[LIBC] <download available>
//
// ----- stderr -----
// "#);
// `--all-platforms` shows all platforms, its output is independent of the current platform.
uv_snapshot!(context.filters(), python_list().arg("--all-platforms"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.14.0a6-windows-x86_64-none <download available>
cpython-3.14.0a6-windows-x86-none <download available>
cpython-3.14.0a6-macos-x86_64-none <download available>
cpython-3.14.0a6-macos-aarch64-none <download available>
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6-linux-aarch64-gnu <download available>
cpython-3.13.3-windows-x86_64-none <download available>
cpython-3.13.3+freethreaded-windows-x86_64-none <download available>
cpython-3.13.3-windows-x86-none <download available>
cpython-3.13.3+freethreaded-windows-x86-none <download available>
cpython-3.13.3-macos-x86_64-none <download available>
cpython-3.13.3+freethreaded-macos-x86_64-none <download available>
cpython-3.13.3-macos-aarch64-none <download available>
cpython-3.13.3+freethreaded-macos-aarch64-none <download available>
cpython-3.13.3-linux-x86_64-gnu <download available>
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-aarch64-gnu <download available>
cpython-3.13.3+freethreaded-linux-aarch64-gnu <download available>
cpython-3.12.10-windows-x86_64-none <download available>
cpython-3.12.10-windows-x86-none <download available>
cpython-3.12.10-macos-x86_64-none <download available>
cpython-3.12.10-macos-aarch64-none <download available>
cpython-3.12.10-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-aarch64-gnu <download available>
pypy-3.11.[X]-windows-x86_64-none <download available>
pypy-3.11.[X]-macos-x86_64-none <download available>
pypy-3.11.[X]-macos-aarch64-none <download available>
pypy-3.11.[X]-linux-x86_64-gnu <download available>
pypy-3.11.[X]-linux-aarch64-gnu <download available>
pypy-3.10.16-windows-x86_64-none <download available>
pypy-3.10.16-macos-x86_64-none <download available>
pypy-3.10.16-macos-aarch64-none <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-aarch64-gnu <download available>
----- stderr -----
"#);
// --all-platforms && --all-versions
uv_snapshot!(context.filters(), python_list().arg("--all-platforms").arg("--all-versions"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.14.0a6-windows-x86_64-none <download available>
cpython-3.14.0a6-windows-x86-none <download available>
cpython-3.14.0a6-macos-x86_64-none <download available>
cpython-3.14.0a6-macos-aarch64-none <download available>
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6-linux-aarch64-gnu <download available>
cpython-3.13.3-windows-x86_64-none <download available>
cpython-3.13.3+freethreaded-windows-x86_64-none <download available>
cpython-3.13.3-windows-x86-none <download available>
cpython-3.13.3+freethreaded-windows-x86-none <download available>
cpython-3.13.3-macos-x86_64-none <download available>
cpython-3.13.3+freethreaded-macos-x86_64-none <download available>
cpython-3.13.3-macos-aarch64-none <download available>
cpython-3.13.3+freethreaded-macos-aarch64-none <download available>
cpython-3.13.3-linux-x86_64-gnu <download available>
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-aarch64-gnu <download available>
cpython-3.13.3+freethreaded-linux-aarch64-gnu <download available>
cpython-3.13.2-windows-x86_64-none <download available>
cpython-3.13.2-windows-x86-none <download available>
cpython-3.13.2-macos-x86_64-none <download available>
cpython-3.13.2-macos-aarch64-none <download available>
cpython-3.13.2-linux-x86_64-gnu <download available>
cpython-3.13.2-linux-aarch64-gnu <download available>
cpython-3.12.10-windows-x86_64-none <download available>
cpython-3.12.10-windows-x86-none <download available>
cpython-3.12.10-macos-x86_64-none <download available>
cpython-3.12.10-macos-aarch64-none <download available>
cpython-3.12.10-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-aarch64-gnu <download available>
pypy-3.11.[X]-windows-x86_64-none <download available>
pypy-3.11.[X]-macos-x86_64-none <download available>
pypy-3.11.[X]-macos-aarch64-none <download available>
pypy-3.11.[X]-linux-x86_64-gnu <download available>
pypy-3.11.[X]-linux-aarch64-gnu <download available>
pypy-3.10.16-windows-x86_64-none <download available>
pypy-3.10.16-macos-x86_64-none <download available>
pypy-3.10.16-macos-aarch64-none <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-aarch64-gnu <download available>
----- stderr -----
"#);
// --all-platforms && --all-arches
uv_snapshot!(context.filters(), python_list().arg("--all-platforms").arg("--all-arches"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.14.0a6-windows-x86_64-none <download available>
cpython-3.14.0a6-windows-x86-none <download available>
cpython-3.14.0a6-macos-x86_64-none <download available>
cpython-3.14.0a6-macos-aarch64-none <download available>
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6-linux-aarch64-gnu <download available>
cpython-3.13.3-windows-x86_64-none <download available>
cpython-3.13.3+freethreaded-windows-x86_64-none <download available>
cpython-3.13.3-windows-x86-none <download available>
cpython-3.13.3+freethreaded-windows-x86-none <download available>
cpython-3.13.3-macos-x86_64-none <download available>
cpython-3.13.3+freethreaded-macos-x86_64-none <download available>
cpython-3.13.3-macos-aarch64-none <download available>
cpython-3.13.3+freethreaded-macos-aarch64-none <download available>
cpython-3.13.3-linux-x86_64-gnu <download available>
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-aarch64-gnu <download available>
cpython-3.13.3+freethreaded-linux-aarch64-gnu <download available>
cpython-3.12.10-windows-x86_64-none <download available>
cpython-3.12.10-windows-x86-none <download available>
cpython-3.12.10-macos-x86_64-none <download available>
cpython-3.12.10-macos-aarch64-none <download available>
cpython-3.12.10-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-aarch64-gnu <download available>
pypy-3.11.[X]-windows-x86_64-none <download available>
pypy-3.11.[X]-macos-x86_64-none <download available>
pypy-3.11.[X]-macos-aarch64-none <download available>
pypy-3.11.[X]-linux-x86_64-gnu <download available>
pypy-3.11.[X]-linux-aarch64-gnu <download available>
pypy-3.10.16-windows-x86_64-none <download available>
pypy-3.10.16-macos-x86_64-none <download available>
pypy-3.10.16-macos-aarch64-none <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-aarch64-gnu <download available>
----- stderr -----
"#);
// --all-platforms && --all-versions && --all-arches
uv_snapshot!(context.filters(), python_list().arg("--all-platforms").arg("--all-versions").arg("--all-arches"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.14.0a6-windows-x86_64-none <download available>
cpython-3.14.0a6-windows-x86-none <download available>
cpython-3.14.0a6-macos-x86_64-none <download available>
cpython-3.14.0a6-macos-aarch64-none <download available>
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6-linux-aarch64-gnu <download available>
cpython-3.13.3-windows-x86_64-none <download available>
cpython-3.13.3+freethreaded-windows-x86_64-none <download available>
cpython-3.13.3-windows-x86-none <download available>
cpython-3.13.3+freethreaded-windows-x86-none <download available>
cpython-3.13.3-macos-x86_64-none <download available>
cpython-3.13.3+freethreaded-macos-x86_64-none <download available>
cpython-3.13.3-macos-aarch64-none <download available>
cpython-3.13.3+freethreaded-macos-aarch64-none <download available>
cpython-3.13.3-linux-x86_64-gnu <download available>
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-aarch64-gnu <download available>
cpython-3.13.3+freethreaded-linux-aarch64-gnu <download available>
cpython-3.13.2-windows-x86_64-none <download available>
cpython-3.13.2-windows-x86-none <download available>
cpython-3.13.2-macos-x86_64-none <download available>
cpython-3.13.2-macos-aarch64-none <download available>
cpython-3.13.2-linux-x86_64-gnu <download available>
cpython-3.13.2-linux-aarch64-gnu <download available>
cpython-3.12.10-windows-x86_64-none <download available>
cpython-3.12.10-windows-x86-none <download available>
cpython-3.12.10-macos-x86_64-none <download available>
cpython-3.12.10-macos-aarch64-none <download available>
cpython-3.12.10-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-aarch64-gnu <download available>
pypy-3.11.[X]-windows-x86_64-none <download available>
pypy-3.11.[X]-macos-x86_64-none <download available>
pypy-3.11.[X]-macos-aarch64-none <download available>
pypy-3.11.[X]-linux-x86_64-gnu <download available>
pypy-3.11.[X]-linux-aarch64-gnu <download available>
pypy-3.10.16-windows-x86_64-none <download available>
pypy-3.10.16-macos-x86_64-none <download available>
pypy-3.10.16-macos-aarch64-none <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-aarch64-gnu <download available>
----- stderr -----
"#);
// `--show-urls` also shows the download URLs
uv_snapshot!(context.filters(), python_list().arg("cpython-3.13.3-linux-aarch64-gnu").arg("--show-urls"), @r#"
success: true
exit_code: 0
----- stdout -----
cpython-3.13.3-linux-aarch64-gnu https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz
----- stderr -----
"#);
// `--output-format=json` outputs in JSON format
uv_snapshot!(context.filters(), python_list().arg("cpython-3.13.3-linux-aarch64-gnu").arg("--output-format=json"), @r#"
success: true
exit_code: 0
----- stdout -----
[{"key":"cpython-3.13.3-linux-aarch64-gnu","version":"3.13.3","version_parts":{"major":3,"minor":13,"patch":3},"path":null,"symlink":null,"url":"https://github.com/astral-sh/python-build-standalone/releases/download/20250409/cpython-3.13.3%2B20250409-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz","os":"linux","variant":"default","implementation":"cpython","arch":"aarch64","libc":"gnu"}]
----- stderr -----
"#);
Ok(())
}
#[test] #[test]
fn python_list_pin() { fn python_list_pin() {
let context: TestContext = TestContext::new_with_versions(&["3.11", "3.12"]) let context: TestContext = TestContext::new_with_versions(&["3.11", "3.12"])