diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9987cf20e87..15832801ff77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -579,10 +579,6 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "pypy3.9" - - name: "Download binary" uses: actions/download-artifact@v4 with: @@ -591,12 +587,12 @@ jobs: - name: "Prepare binary" run: chmod +x ./uv - - name: PyPy info - run: which pypy + - name: "Install PyPy" + run: ./uv python install pypy3.9 - name: "Create a virtual environment" run: | - ./uv venv -p $(which pypy) + ./uv venv -p pypy3.9 --python-preference only-managed - name: "Check for executables" run: | @@ -645,22 +641,17 @@ jobs: runs-on: windows-latest steps: - - uses: actions/setup-python@v5 - with: - python-version: "pypy3.9" - - name: "Download binary" uses: actions/download-artifact@v4 with: name: uv-windows-${{ github.sha }} - - name: PyPy info - run: Get-Command pypy + - name: "Install PyPy" + run: .\uv.exe python install pypy3.9 - name: "Create a virtual environment" run: | - $pypy = (Get-Command pypy).source - .\uv.exe venv -p $pypy + .\uv.exe venv -p pypy3.9 --python-preference only-managed - name: "Check for executables" shell: python diff --git a/crates/uv-python/download-metadata.json b/crates/uv-python/download-metadata.json index 2adae4acadec..04c56ce22bbb 100644 --- a/crates/uv-python/download-metadata.json +++ b/crates/uv-python/download-metadata.json @@ -5685,5 +5685,1303 @@ "patch": 1, "url": "https://github.com/indygreg/python-build-standalone/releases/download/20181218/cpython-3.7.1-linux64-20181218T1905.tar.zst", "sha256": null + }, + "pypy-3.10.14-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-macos_arm64.tar.bz2", + "sha256": "6c003376667a95c7a228544649677b9927b8210d6444b901817aad24b8719b93" + }, + "pypy-3.10.14-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-aarch64.tar.bz2", + "sha256": "fc720999bc5050e1d3706b3b6445e695cf42bfc71ebc7c88ed6bb88828b1d385" + }, + "pypy-3.10.14-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-linux32.tar.bz2", + "sha256": "0df48aa780159e879ac89a805d143e4a6cd1b842f98046f5a3f865814bfaa2a4" + }, + "pypy-3.10.14-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-s390x.tar.bz2", + "sha256": "af97efe498a209ba18c7bc7d084164a9907fb3736588b6864955177e19d5216a" + }, + "pypy-3.10.14-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-macos_x86_64.tar.bz2", + "sha256": "490f2c6ba2489f405444f3b4ad42166da6e2eb73489a9535b206067eaaf21737" + }, + "pypy-3.10.14-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-linux64.tar.bz2", + "sha256": "404e6180d6caf9258eaab0c02c72018e9aa8eb03ab9094a0ff17ee5e3b265ac1" + }, + "pypy-3.10.14-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 14, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.16-win64.zip", + "sha256": "e08415a2f35c6ecf2342b504bdfde11e4c5eca3fc5ef7fd2214ff064a5a54396" + }, + "pypy-3.10.13-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-macos_arm64.tar.bz2", + "sha256": "d927c5105ea7880f7596fe459183e35cc17c853ef5105678b2ad62a8d000a548" + }, + "pypy-3.10.13-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-aarch64.tar.bz2", + "sha256": "52146fccaf64e87e71d178dda8de63c01577ec3923073dc69e1519622bcacb74" + }, + "pypy-3.10.13-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-linux32.tar.bz2", + "sha256": "75dd58c9abd8b9d78220373148355bc3119febcf27a2c781d64ad85e7232c4aa" + }, + "pypy-3.10.13-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-s390x.tar.bz2", + "sha256": "209e57596381e13c9914d1332f359dc4b78de06576739747eb797bdbf85062b8" + }, + "pypy-3.10.13-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-macos_x86_64.tar.bz2", + "sha256": "559b61ba7e7c5a5c23cef5370f1fab47ccdb939ac5d2b42b4bef091abe3f6964" + }, + "pypy-3.10.13-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-linux64.tar.bz2", + "sha256": "33c584e9a70a71afd0cb7dd8ba9996720b911b3b8ed0156aea298d4487ad22c3" + }, + "pypy-3.10.13-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.15-win64.zip", + "sha256": "b378b3ab1c3719aee0c3e5519e7bff93ff67b2d8aa987fe4f088b54382db676c" + }, + "pypy-3.10.12-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-macos_arm64.tar.bz2", + "sha256": "45671b1e9437f95ccd790af10dbeb57733cca1ed9661463b727d3c4f5caa7ba0" + }, + "pypy-3.10.12-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-aarch64.tar.bz2", + "sha256": "26208b5a134d9860a08f74cce60960005758e82dc5f0e3566a48ed863a1f16a1" + }, + "pypy-3.10.12-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-linux32.tar.bz2", + "sha256": "811667825ae58ada4b7c3d8bc1b5055b9f9d6a377e51aedfbe0727966603f60e" + }, + "pypy-3.10.12-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-s390x.tar.bz2", + "sha256": "043c13a585479428b463ab69575a088db74aadc16798d6e677d97f563585fee3" + }, + "pypy-3.10.12-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-macos_x86_64.tar.bz2", + "sha256": "dbc15d8570560d5f79366883c24bc42231a92855ac19a0f28cb0adeb11242666" + }, + "pypy-3.10.12-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-linux64.tar.bz2", + "sha256": "6c577993160b6f5ee8cab73cd1a807affcefafe2f7441c87bd926c10505e8731" + }, + "pypy-3.10.12-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 10, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.10-v7.3.12-win64.zip", + "sha256": "8c3b1d34fb99100e230e94560410a38d450dc844effbee9ea183518e4aff595c" + }, + "pypy-3.9.19-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_arm64.tar.bz2", + "sha256": "88f824e7a2d676440d09bc90fc959ae0fd3557d7e2f14bfbbe53d41d159a47fe" + }, + "pypy-3.9.19-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-aarch64.tar.bz2", + "sha256": "de3f2ed3581b30555ac0dd3e4df78a262ec736a36fb2e8f28259f8539b278ef4" + }, + "pypy-3.9.19-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-linux32.tar.bz2", + "sha256": "583b6d6dd4e8c07cbc04da04a7ec2bdfa6674825289c2378c5e018d5abe779ea" + }, + "pypy-3.9.19-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-s390x.tar.bz2", + "sha256": "7a56ebb27dba3110dc1ff52d8e0449cdb37fe5c2275f7faf11432e4e164833ba" + }, + "pypy-3.9.19-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2", + "sha256": "fda015431621e7e5aa16359d114f2c45a77ed936992c1efff86302e768a6b21c" + }, + "pypy-3.9.19-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-linux64.tar.bz2", + "sha256": "16f9c5b808c848516e742986e826b833cdbeda09ad8764e8704595adbe791b23" + }, + "pypy-3.9.19-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 19, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip", + "sha256": "06ec12a5e964dc0ad33e6f380185a4d295178dce6d6df512f508e7aee00a1323" + }, + "pypy-3.9.18-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-macos_arm64.tar.bz2", + "sha256": "300541c32125767a91b182b03d9cc4257f04971af32d747ecd4d62549d72acfd" + }, + "pypy-3.9.18-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-aarch64.tar.bz2", + "sha256": "03e35fcba290454bb0ccf7ee57fb42d1e63108d10d593776a382c0a2fe355de0" + }, + "pypy-3.9.18-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-linux32.tar.bz2", + "sha256": "c6209380977066c9e8b96e8258821c70f996004ce1bc8659ae83d4fd5a89ff5c" + }, + "pypy-3.9.18-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-s390x.tar.bz2", + "sha256": "deeb5e54c36a0fd9cfefd16e63a0d5bed4f4a43e6bbc01c23f0ed8f7f1c0aaf3" + }, + "pypy-3.9.18-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-macos_x86_64.tar.bz2", + "sha256": "18ad7c9cb91c5e8ef9d40442b2fd1f6392ae113794c5b6b7d3a45e04f19edec6" + }, + "pypy-3.9.18-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-linux64.tar.bz2", + "sha256": "f062be307200bde434817e1620cebc13f563d6ab25309442c5f4d0f0d68f0912" + }, + "pypy-3.9.18-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 18, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.15-win64.zip", + "sha256": "a156dad8b58570597eaaabe05663f00f80c60bc11df4a9c46d0953b6c5eb9209" + }, + "pypy-3.9.17-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-macos_arm64.tar.bz2", + "sha256": "0e8a1a3468b9790c734ac698f5b00cc03fc16899ccc6ce876465fac0b83980e3" + }, + "pypy-3.9.17-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-aarch64.tar.bz2", + "sha256": "e9327fb9edaf2ad91935d5b8563ec5ff24193bddb175c1acaaf772c025af1824" + }, + "pypy-3.9.17-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-linux32.tar.bz2", + "sha256": "aa04370d38f451683ccc817d76c2b3e0f471dbb879e0bd618d9affbdc9cd37a4" + }, + "pypy-3.9.17-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-s390x.tar.bz2", + "sha256": "20d84658a6899bdd2ca35b00ead33a2f56cff2c40dce1af630466d27952f6d4f" + }, + "pypy-3.9.17-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-macos_x86_64.tar.bz2", + "sha256": "64f008ffa070c407e5ef46c8256b2e014de7196ea5d858385861254e7959f4eb" + }, + "pypy-3.9.17-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-linux64.tar.bz2", + "sha256": "84c89b966fab2b58f451a482ee30ca7fec3350435bd0b9614615c61dc6da2390" + }, + "pypy-3.9.17-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 17, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.12-win64.zip", + "sha256": "0996054207b401aeacace1aa11bad82cfcb463838a1603c5f263626c47bbe0e6" + }, + "pypy-3.9.16-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-macos_arm64.tar.bz2", + "sha256": "91ad7500f1a39531dbefa0b345a3dcff927ff9971654e8d2e9ef7c5ae311f57e" + }, + "pypy-3.9.16-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-aarch64.tar.bz2", + "sha256": "09175dc652ed895d98e9ad63d216812bf3ee7e398d900a9bf9eb2906ba8302b9" + }, + "pypy-3.9.16-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-linux32.tar.bz2", + "sha256": "0099d72c2897b229057bff7e2c343624aeabdc60d6fb43ca882bff082f1ffa48" + }, + "pypy-3.9.16-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-s390x.tar.bz2", + "sha256": "e1f30f2ddbe3f446ddacd79677b958d56c07463b20171fb2abf8f9a3178b79fc" + }, + "pypy-3.9.16-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-macos_x86_64.tar.bz2", + "sha256": "d33f40b207099872585afd71873575ca6ea638a27d823bc621238c5ae82542ed" + }, + "pypy-3.9.16-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-linux64.tar.bz2", + "sha256": "d506172ca11071274175d74e9c581c3166432d0179b036470e3b9e8d20eae581" + }, + "pypy-3.9.16-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.11-win64.zip", + "sha256": "57faad132d42d3e7a6406fcffafffe0b4f390cf0e2966abb8090d073c6edf405" + }, + "pypy-3.9.15-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-macos_arm64.tar.bz2", + "sha256": "e2a6bec7408e6497c7de8165aa4a1b15e2416aec4a72f2578f793fb06859ccba" + }, + "pypy-3.9.15-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-aarch64.tar.bz2", + "sha256": "657a04fd9a5a992a2f116a9e7e9132ea0c578721f59139c9fb2083775f71e514" + }, + "pypy-3.9.15-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-linux32.tar.bz2", + "sha256": "b6db59613b9a1c0c1ab87bc103f52ee95193423882dc8a848b68850b8ba59cc5" + }, + "pypy-3.9.15-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-s390x.tar.bz2", + "sha256": "ca6525a540cf0c682d1592ae35d3fbc97559a97260e4b789255cc76dde7a14f0" + }, + "pypy-3.9.15-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-macos_x86_64.tar.bz2", + "sha256": "f90c8619b41e68ec9ffd7d5e913fe02e60843da43d3735b1c1bc75bcfe638d97" + }, + "pypy-3.9.15-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-linux64.tar.bz2", + "sha256": "95cf99406179460d63ddbfe1ec870f889d05f7767ce81cef14b88a3a9e127266" + }, + "pypy-3.9.15-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.10-win64.zip", + "sha256": "07e18b7b24c74af9730dfaab16e24b22ef94ea9a4b64cbb2c0d80610a381192a" + }, + "pypy-3.9.12-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.9-aarch64.tar.bz2", + "sha256": "2e1ae193d98bc51439642a7618d521ea019f45b8fb226940f7e334c548d2b4b9" + }, + "pypy-3.9.12-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.9-linux32.tar.bz2", + "sha256": "0de4b9501cf28524cdedcff5052deee9ea4630176a512bdc408edfa30914bae7" + }, + "pypy-3.9.12-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.9-s390x.tar.bz2", + "sha256": "774dca83bcb4403fb99b3d155e7bd572ef8c52b9fe87a657109f64e75ad71732" + }, + "pypy-3.9.12-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.9-osx64.tar.bz2", + "sha256": "59c8852168b2b1ba1f0211ff043c678760380d2f9faf2f95042a8878554dbc25" + }, + "pypy-3.9.12-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.9-linux64.tar.bz2", + "sha256": "46818cb3d74b96b34787548343d266e2562b531ddbaf330383ba930ff1930ed5" + }, + "pypy-3.9.12-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.9-win64.zip", + "sha256": "be48ab42f95c402543a7042c999c9433b17e55477c847612c8733a583ca6dff5" + }, + "pypy-3.9.10-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.8-aarch64-portable.tar.bz2", + "sha256": "b7282bc4484bceae5bc4cc04e05ee4faf51cb624c8fc7a69d92e5fdf0d0c96aa" + }, + "pypy-3.9.10-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.8-linux32.tar.bz2", + "sha256": "a0d18e4e73cc655eb02354759178b8fb161d3e53b64297d05e2fff91f7cf862d" + }, + "pypy-3.9.10-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.8-s390x.tar.bz2", + "sha256": "37b596bfe76707ead38ffb565629697e9b6fa24e722acc3c632b41ec624f5d95" + }, + "pypy-3.9.10-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.8-osx64.tar.bz2", + "sha256": "95bd88ac8d6372cd5b7b5393de7b7d5c615a0c6e42fdb1eb67f2d2d510965aee" + }, + "pypy-3.9.10-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 9, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.8-linux64.tar.bz2", + "sha256": "129a055032bba700cd1d0acacab3659cf6b7180e25b1b2f730e792f06d5b3010" + }, + "pypy-3.9.10-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 9, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.9-v7.3.8-win64.zip", + "sha256": "c1b2e4cde2dcd1208d41ef7b7df8e5c90564a521e7a5db431673da335a1ba697" + }, + "pypy-3.8.16-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2", + "sha256": "78cdc79ff964c4bfd13eb45a7d43a011cbe8d8b513323d204891f703fdc4fa1a" + }, + "pypy-3.8.16-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-aarch64.tar.bz2", + "sha256": "9a2fa0b8d92b7830aa31774a9a76129b0ff81afbd22cd5c41fbdd9119e859f55" + }, + "pypy-3.8.16-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-linux32.tar.bz2", + "sha256": "a79b31fce8f5bc1f9940b6777134189a1d3d18bda4b1c830384cda90077c9176" + }, + "pypy-3.8.16-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-s390x.tar.bz2", + "sha256": "eab7734d86d96549866f1cba67f4f9c73c989f6a802248beebc504080d4c3fcd" + }, + "pypy-3.8.16-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2", + "sha256": "194ca0b4d91ae409a9cb1a59eb7572d7affa8a451ea3daf26539aa515443433a" + }, + "pypy-3.8.16-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-linux64.tar.bz2", + "sha256": "470330e58ac105c094041aa07bb05676b06292bc61409e26f5c5593ebb2292d9" + }, + "pypy-3.8.16-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 16, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip", + "sha256": "0f46fb6df32941ea016f77cfd7e9b426d5ac25a2af2453414df66103941c8435" + }, + "pypy-3.8.15-darwin-aarch64-none": { + "name": "pypy", + "arch": "aarch64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-macos_arm64.tar.bz2", + "sha256": "6cb1429371e4854b718148a509d80143f801e3abfc72fef58d88aeeee1e98f9e" + }, + "pypy-3.8.15-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-aarch64.tar.bz2", + "sha256": "e4caa1a545f22cfee87d5b9aa6f8852347f223643ad7d2562e0b2a2f4663ad98" + }, + "pypy-3.8.15-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-linux32.tar.bz2", + "sha256": "b70ed7fdc73a74ebdc04f07439f7bad1a849aaca95e26b4a74049d0e483f071c" + }, + "pypy-3.8.15-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-s390x.tar.bz2", + "sha256": "c294f8e815158388628fe77ac5b8ad6cd93c8db1359091fa02d41cf6da4d61a1" + }, + "pypy-3.8.15-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-macos_x86_64.tar.bz2", + "sha256": "399eb1ce4c65f62f6a096b7c273536601b7695e3c0dc0457393a659b95b7615b" + }, + "pypy-3.8.15-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-linux64.tar.bz2", + "sha256": "ceef6496fd4ab1c99e3ec22ce657b8f10f8bb77a32427fadfb5e1dd943806011" + }, + "pypy-3.8.15-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 15, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.10-win64.zip", + "sha256": "362dd624d95bd64743190ea2539b97452ecb3d53ea92ceb2fbe9f48dc60e6b8f" + }, + "pypy-3.8.13-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.9-aarch64.tar.bz2", + "sha256": "5e124455e207425e80731dff317f0432fa0aba1f025845ffca813770e2447e32" + }, + "pypy-3.8.13-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.9-linux32.tar.bz2", + "sha256": "4b261516c6c59078ab0c8bd7207327a1b97057b4ec1714ed5e79a026f9efd492" + }, + "pypy-3.8.13-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.9-s390x.tar.bz2", + "sha256": "c6177a0016c9145c7b99fddb5d74cc2e518ccdb216a6deb51ef6a377510cc930" + }, + "pypy-3.8.13-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.9-osx64.tar.bz2", + "sha256": "91a5c2c1facd5a4931a8682b7d792f7cf4f2ba25cd2e7e44e982139a6d5e4840" + }, + "pypy-3.8.13-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.9-linux64.tar.bz2", + "sha256": "08be25ec82fc5d23b78563eda144923517daba481a90af0ace7a047c9c9a3c34" + }, + "pypy-3.8.13-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.9-win64.zip", + "sha256": "05022baaa55db2b60880f2422312d9e4025e1267303ac57f33e8253559d0be88" + }, + "pypy-3.8.12-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.8-aarch64-portable.tar.bz2", + "sha256": "0210536e9f1841ba283c13b04783394050837bb3e6f4091c9f1bd9c7f2b94b55" + }, + "pypy-3.8.12-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.8-linux32.tar.bz2", + "sha256": "bea4b275decd492af6462157d293dd6fcf08a949859f8aec0959537b40afd032" + }, + "pypy-3.8.12-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.8-s390x.tar.bz2", + "sha256": "ad53d373d6e275a41ca64da7d88afb6a17e48e7bfb2a6fff92daafdc06da6b90" + }, + "pypy-3.8.12-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.8-osx64.tar.bz2", + "sha256": "de1b283ff112d76395c0162a1cf11528e192bdc230ee3f1b237f7694c7518dee" + }, + "pypy-3.8.12-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 8, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.8-linux64.tar.bz2", + "sha256": "089f8e3e357d6130815964ddd3507c13bd53e4976ccf0a89b5c36a9a6775a188" + }, + "pypy-3.8.12-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 8, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.8-v7.3.8-win64.zip", + "sha256": "0894c468e7de758c509a602a28ef0ba4fbf197ccdf946c7853a7283d9bb2a345" + }, + "pypy-3.7.13-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.9-aarch64.tar.bz2", + "sha256": "dfc62f2c453fb851d10a1879c6e75c31ffebbf2a44d181bb06fcac4750d023fc" + }, + "pypy-3.7.13-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.9-linux32.tar.bz2", + "sha256": "3398cece0167b81baa219c9cd54a549443d8c0a6b553ec8ec13236281e0d86cd" + }, + "pypy-3.7.13-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.9-s390x.tar.bz2", + "sha256": "fcab3b9e110379948217cf592229542f53c33bfe881006f95ce30ac815a6df48" + }, + "pypy-3.7.13-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2", + "sha256": "12d92f578a200d50959e55074b20f29f93c538943e9a6e6522df1a1cc9cef542" + }, + "pypy-3.7.13-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.9-linux64.tar.bz2", + "sha256": "c58195124d807ecc527499ee19bc511ed753f4f2e418203ca51bc7e3b124d5d1" + }, + "pypy-3.7.13-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 13, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip", + "sha256": "8acb184b48fb3c854de0662e4d23a66b90e73b1ab73a86695022c12c745d8b00" + }, + "pypy-3.7.12-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.8-aarch64-portable.tar.bz2", + "sha256": "639c76f128a856747aee23a34276fa101a7a157ea81e76394fbaf80b97dcf2f2" + }, + "pypy-3.7.12-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.8-linux32.tar.bz2", + "sha256": "38429ec6ea1aca391821ee4fbda7358ae86de4600146643f2af2fe2c085af839" + }, + "pypy-3.7.12-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.8-s390x.tar.bz2", + "sha256": "5c2cd3f7cf04cb96f6bcc6b02e271f5d7275867763978e66651b8d1605ef3141" + }, + "pypy-3.7.12-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.8-osx64.tar.bz2", + "sha256": "76b8eef5b059a7e478f525615482d2a6e9feb83375e3f63c16381d80521a693f" + }, + "pypy-3.7.12-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.8-linux64.tar.bz2", + "sha256": "409085db79a6d90bfcf4f576dca1538498e65937acfbe03bd4909bdc262ff378" + }, + "pypy-3.7.12-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 12, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.8-win64.zip", + "sha256": "96df67492bc8d62b2e71dddf5f6c58965a26cac9799c5f4081401af0494b3bcc" + }, + "pypy-3.7.10-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.5-aarch64.tar.bz2", + "sha256": "85d83093b3ef5b863f641bc4073d057cc98bb821e16aa9361a5ff4898e70e8ee" + }, + "pypy-3.7.10-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.5-linux32.tar.bz2", + "sha256": "3dd8b565203d372829e53945c599296fa961895130342ea13791b17c84ed06c4" + }, + "pypy-3.7.10-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.5-s390x.tar.bz2", + "sha256": "dffdf5d73613be2c6809dc1a3cf3ee6ac2f3af015180910247ff24270b532ed5" + }, + "pypy-3.7.10-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.5-osx64.tar.bz2", + "sha256": "b3a7d3099ad83de7c267bb79ae609d5ce73b01800578ffd91ba7e221b13f80db" + }, + "pypy-3.7.10-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.5-linux64.tar.bz2", + "sha256": "9000db3e87b54638e55177e68cbeb30a30fe5d17b6be48a9eb43d65b3ebcfc26" + }, + "pypy-3.7.10-windows-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 10, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.5-win64.zip", + "sha256": "072bd22427178dc4e65d961f50281bd2f56e11c4e4d9f16311c703f69f46ae24" + }, + "pypy-3.7.9-linux-aarch64-gnu": { + "name": "pypy", + "arch": "aarch64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 9, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.3-aarch64.tar.bz2", + "sha256": "ee4aa041558b58de6063dd6df93b3def221c4ca4c900d6a9db5b1b52135703a8" + }, + "pypy-3.7.9-linux-i686-gnu": { + "name": "pypy", + "arch": "i686", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 9, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.3-linux32.tar.bz2", + "sha256": "7d81b8e9fcd07c067cfe2f519ab770ec62928ee8787f952cadf2d2786246efc8" + }, + "pypy-3.7.9-windows-i686-none": { + "name": "pypy", + "arch": "i686", + "os": "windows", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 9, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.3-win32.zip", + "sha256": "a282ce40aa4f853e877a5dbb38f0a586a29e563ae9ba82fd50c7e5dc465fb649" + }, + "pypy-3.7.9-linux-s390x-gnu": { + "name": "pypy", + "arch": "s390x", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 9, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.3-s390x.tar.bz2", + "sha256": "92000d90b9a37f2e9cb7885f2a872adfa9e48e74bf7f84a8b8185c8181f0502d" + }, + "pypy-3.7.9-darwin-x86_64-none": { + "name": "pypy", + "arch": "x86_64", + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 7, + "patch": 9, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.3-osx64.tar.bz2", + "sha256": "d72b27d5bb60813273f14f07378a08822186a66e216c5d1a768ad295b582438d" + }, + "pypy-3.7.9-linux-x86_64-gnu": { + "name": "pypy", + "arch": "x86_64", + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 7, + "patch": 9, + "url": "https://downloads.python.org/pypy/pypy3.7-v7.3.3-linux64.tar.bz2", + "sha256": "37e2804c4661c86c857d709d28c7de716b000d31e89766599fdf5a98928b7096" } } \ No newline at end of file diff --git a/crates/uv-python/fetch-download-metadata.py b/crates/uv-python/fetch-download-metadata.py index 6ab3b9e2ec38..f7d3d1b32cdf 100755 --- a/crates/uv-python/fetch-download-metadata.py +++ b/crates/uv-python/fetch-download-metadata.py @@ -322,6 +322,96 @@ def _get_flavor_priority(self, flavor: str) -> int: return pref +class PyPyFinder(Finder): + implementation = ImplementationName.PYPY + + RELEASE_URL = "https://raw.githubusercontent.com/pypy/pypy/main/pypy/tool/release/versions.json" + CHECKSUM_URL = ( + "https://raw.githubusercontent.com/pypy/pypy.org/main/pages/checksums.rst" + ) + + _checksum_re = re.compile( + r"^\s*(?P\w{64})\s+(?Ppypy.+)$", re.MULTILINE + ) + + ARCH_MAPPING = { + "x64": "x86_64", + "x86": "i686", + "i686": "i686", + "aarch64": "aarch64", + "arm64": "aarch64", + "s390x": "s390x", + } + + PLATFORM_MAPPING = { + "win32": "windows", + "win64": "windows", + "linux": "linux", + "darwin": "darwin", + } + + def __init__(self, client: httpx.AsyncClient): + self.client = client + + async def find(self) -> list[PythonDownload]: + downloads = await self._fetch_downloads() + await self._fetch_checksums(downloads) + return downloads + + async def _fetch_downloads(self) -> list[PythonDownload]: + resp = await self.client.get(self.RELEASE_URL) + resp.raise_for_status() + versions = resp.json() + + results = {} + for version in versions: + if not version["stable"]: + continue + python_version = Version.from_str(version["python_version"]) + if python_version < (3, 7, 0): + continue + for file in version["files"]: + arch = self._normalize_arch(file["arch"]) + platform = self._normalize_os(file["platform"]) + libc = "gnu" if platform == "linux" else "none" + download = PythonDownload( + version=python_version, + triple=PlatformTriple( + arch=arch, + platform=platform, + libc=libc, + ), + flavor="", + implementation=self.implementation, + filename=file["filename"], + url=file["download_url"], + ) + # Only keep the latest pypy version of each arch/platform + if (python_version, arch, platform) not in results: + results[(python_version, arch, platform)] = download + + return list(results.values()) + + def _normalize_arch(self, arch: str) -> str: + return self.ARCH_MAPPING.get(arch, arch) + + def _normalize_os(self, os: str) -> str: + return self.PLATFORM_MAPPING.get(os, os) + + async def _fetch_checksums(self, downloads: list[PythonDownload]) -> None: + logging.info("Fetching PyPy checksums") + resp = await self.client.get(self.CHECKSUM_URL) + resp.raise_for_status() + text = resp.text + + checksums = {} + for match in self._checksum_re.finditer(text): + checksums[match.group("filename")] = match.group("checksum") + + for download in downloads: + download.sha256 = checksums.get(download.filename) + + def render(downloads: list[PythonDownload]) -> None: """Render `download-metadata.json`.""" @@ -371,9 +461,9 @@ async def find() -> None: headers["Authorization"] = "Bearer " + token client = httpx.AsyncClient(follow_redirects=True, headers=headers, timeout=15) - # TODO: Add PyPyFinder finders = [ CPythonFinder(client), + PyPyFinder(client), ] downloads = [] diff --git a/crates/uv-python/src/downloads.inc b/crates/uv-python/src/downloads.inc index 61735e97ff80..a4a4ec77c6b0 100644 --- a/crates/uv-python/src/downloads.inc +++ b/crates/uv-python/src/downloads.inc @@ -6725,4 +6725,1538 @@ pub(crate) const PYTHON_DOWNLOADS: &[ManagedPythonDownload] = &[ url: "https://github.com/indygreg/python-build-standalone/releases/download/20181218/cpython-3.7.1-linux64-20181218T1905.tar.zst", sha256: None }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-macos_arm64.tar.bz2", + sha256: Some("6c003376667a95c7a228544649677b9927b8210d6444b901817aad24b8719b93") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-aarch64.tar.bz2", + sha256: Some("fc720999bc5050e1d3706b3b6445e695cf42bfc71ebc7c88ed6bb88828b1d385") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-linux32.tar.bz2", + sha256: Some("0df48aa780159e879ac89a805d143e4a6cd1b842f98046f5a3f865814bfaa2a4") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-s390x.tar.bz2", + sha256: Some("af97efe498a209ba18c7bc7d084164a9907fb3736588b6864955177e19d5216a") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-macos_x86_64.tar.bz2", + sha256: Some("490f2c6ba2489f405444f3b4ad42166da6e2eb73489a9535b206067eaaf21737") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-linux64.tar.bz2", + sha256: Some("404e6180d6caf9258eaab0c02c72018e9aa8eb03ab9094a0ff17ee5e3b265ac1") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 14, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.16-win64.zip", + sha256: Some("e08415a2f35c6ecf2342b504bdfde11e4c5eca3fc5ef7fd2214ff064a5a54396") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-macos_arm64.tar.bz2", + sha256: Some("d927c5105ea7880f7596fe459183e35cc17c853ef5105678b2ad62a8d000a548") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-aarch64.tar.bz2", + sha256: Some("52146fccaf64e87e71d178dda8de63c01577ec3923073dc69e1519622bcacb74") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-linux32.tar.bz2", + sha256: Some("75dd58c9abd8b9d78220373148355bc3119febcf27a2c781d64ad85e7232c4aa") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-s390x.tar.bz2", + sha256: Some("209e57596381e13c9914d1332f359dc4b78de06576739747eb797bdbf85062b8") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-macos_x86_64.tar.bz2", + sha256: Some("559b61ba7e7c5a5c23cef5370f1fab47ccdb939ac5d2b42b4bef091abe3f6964") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-linux64.tar.bz2", + sha256: Some("33c584e9a70a71afd0cb7dd8ba9996720b911b3b8ed0156aea298d4487ad22c3") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.15-win64.zip", + sha256: Some("b378b3ab1c3719aee0c3e5519e7bff93ff67b2d8aa987fe4f088b54382db676c") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-macos_arm64.tar.bz2", + sha256: Some("45671b1e9437f95ccd790af10dbeb57733cca1ed9661463b727d3c4f5caa7ba0") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-aarch64.tar.bz2", + sha256: Some("26208b5a134d9860a08f74cce60960005758e82dc5f0e3566a48ed863a1f16a1") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-linux32.tar.bz2", + sha256: Some("811667825ae58ada4b7c3d8bc1b5055b9f9d6a377e51aedfbe0727966603f60e") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-s390x.tar.bz2", + sha256: Some("043c13a585479428b463ab69575a088db74aadc16798d6e677d97f563585fee3") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-macos_x86_64.tar.bz2", + sha256: Some("dbc15d8570560d5f79366883c24bc42231a92855ac19a0f28cb0adeb11242666") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-linux64.tar.bz2", + sha256: Some("6c577993160b6f5ee8cab73cd1a807affcefafe2f7441c87bd926c10505e8731") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 10, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.10-v7.3.12-win64.zip", + sha256: Some("8c3b1d34fb99100e230e94560410a38d450dc844effbee9ea183518e4aff595c") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_arm64.tar.bz2", + sha256: Some("88f824e7a2d676440d09bc90fc959ae0fd3557d7e2f14bfbbe53d41d159a47fe") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-aarch64.tar.bz2", + sha256: Some("de3f2ed3581b30555ac0dd3e4df78a262ec736a36fb2e8f28259f8539b278ef4") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-linux32.tar.bz2", + sha256: Some("583b6d6dd4e8c07cbc04da04a7ec2bdfa6674825289c2378c5e018d5abe779ea") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-s390x.tar.bz2", + sha256: Some("7a56ebb27dba3110dc1ff52d8e0449cdb37fe5c2275f7faf11432e4e164833ba") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2", + sha256: Some("fda015431621e7e5aa16359d114f2c45a77ed936992c1efff86302e768a6b21c") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-linux64.tar.bz2", + sha256: Some("16f9c5b808c848516e742986e826b833cdbeda09ad8764e8704595adbe791b23") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 19, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip", + sha256: Some("06ec12a5e964dc0ad33e6f380185a4d295178dce6d6df512f508e7aee00a1323") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-macos_arm64.tar.bz2", + sha256: Some("300541c32125767a91b182b03d9cc4257f04971af32d747ecd4d62549d72acfd") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-aarch64.tar.bz2", + sha256: Some("03e35fcba290454bb0ccf7ee57fb42d1e63108d10d593776a382c0a2fe355de0") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-linux32.tar.bz2", + sha256: Some("c6209380977066c9e8b96e8258821c70f996004ce1bc8659ae83d4fd5a89ff5c") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-s390x.tar.bz2", + sha256: Some("deeb5e54c36a0fd9cfefd16e63a0d5bed4f4a43e6bbc01c23f0ed8f7f1c0aaf3") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-macos_x86_64.tar.bz2", + sha256: Some("18ad7c9cb91c5e8ef9d40442b2fd1f6392ae113794c5b6b7d3a45e04f19edec6") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-linux64.tar.bz2", + sha256: Some("f062be307200bde434817e1620cebc13f563d6ab25309442c5f4d0f0d68f0912") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 18, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.15-win64.zip", + sha256: Some("a156dad8b58570597eaaabe05663f00f80c60bc11df4a9c46d0953b6c5eb9209") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-macos_arm64.tar.bz2", + sha256: Some("0e8a1a3468b9790c734ac698f5b00cc03fc16899ccc6ce876465fac0b83980e3") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-aarch64.tar.bz2", + sha256: Some("e9327fb9edaf2ad91935d5b8563ec5ff24193bddb175c1acaaf772c025af1824") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-linux32.tar.bz2", + sha256: Some("aa04370d38f451683ccc817d76c2b3e0f471dbb879e0bd618d9affbdc9cd37a4") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-s390x.tar.bz2", + sha256: Some("20d84658a6899bdd2ca35b00ead33a2f56cff2c40dce1af630466d27952f6d4f") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-macos_x86_64.tar.bz2", + sha256: Some("64f008ffa070c407e5ef46c8256b2e014de7196ea5d858385861254e7959f4eb") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-linux64.tar.bz2", + sha256: Some("84c89b966fab2b58f451a482ee30ca7fec3350435bd0b9614615c61dc6da2390") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 17, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.12-win64.zip", + sha256: Some("0996054207b401aeacace1aa11bad82cfcb463838a1603c5f263626c47bbe0e6") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-macos_arm64.tar.bz2", + sha256: Some("91ad7500f1a39531dbefa0b345a3dcff927ff9971654e8d2e9ef7c5ae311f57e") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-aarch64.tar.bz2", + sha256: Some("09175dc652ed895d98e9ad63d216812bf3ee7e398d900a9bf9eb2906ba8302b9") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-linux32.tar.bz2", + sha256: Some("0099d72c2897b229057bff7e2c343624aeabdc60d6fb43ca882bff082f1ffa48") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-s390x.tar.bz2", + sha256: Some("e1f30f2ddbe3f446ddacd79677b958d56c07463b20171fb2abf8f9a3178b79fc") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-macos_x86_64.tar.bz2", + sha256: Some("d33f40b207099872585afd71873575ca6ea638a27d823bc621238c5ae82542ed") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-linux64.tar.bz2", + sha256: Some("d506172ca11071274175d74e9c581c3166432d0179b036470e3b9e8d20eae581") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.11-win64.zip", + sha256: Some("57faad132d42d3e7a6406fcffafffe0b4f390cf0e2966abb8090d073c6edf405") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-macos_arm64.tar.bz2", + sha256: Some("e2a6bec7408e6497c7de8165aa4a1b15e2416aec4a72f2578f793fb06859ccba") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-aarch64.tar.bz2", + sha256: Some("657a04fd9a5a992a2f116a9e7e9132ea0c578721f59139c9fb2083775f71e514") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-linux32.tar.bz2", + sha256: Some("b6db59613b9a1c0c1ab87bc103f52ee95193423882dc8a848b68850b8ba59cc5") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-s390x.tar.bz2", + sha256: Some("ca6525a540cf0c682d1592ae35d3fbc97559a97260e4b789255cc76dde7a14f0") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-macos_x86_64.tar.bz2", + sha256: Some("f90c8619b41e68ec9ffd7d5e913fe02e60843da43d3735b1c1bc75bcfe638d97") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-linux64.tar.bz2", + sha256: Some("95cf99406179460d63ddbfe1ec870f889d05f7767ce81cef14b88a3a9e127266") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.10-win64.zip", + sha256: Some("07e18b7b24c74af9730dfaab16e24b22ef94ea9a4b64cbb2c0d80610a381192a") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.9-aarch64.tar.bz2", + sha256: Some("2e1ae193d98bc51439642a7618d521ea019f45b8fb226940f7e334c548d2b4b9") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.9-linux32.tar.bz2", + sha256: Some("0de4b9501cf28524cdedcff5052deee9ea4630176a512bdc408edfa30914bae7") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.9-s390x.tar.bz2", + sha256: Some("774dca83bcb4403fb99b3d155e7bd572ef8c52b9fe87a657109f64e75ad71732") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.9-osx64.tar.bz2", + sha256: Some("59c8852168b2b1ba1f0211ff043c678760380d2f9faf2f95042a8878554dbc25") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.9-linux64.tar.bz2", + sha256: Some("46818cb3d74b96b34787548343d266e2562b531ddbaf330383ba930ff1930ed5") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.9-win64.zip", + sha256: Some("be48ab42f95c402543a7042c999c9433b17e55477c847612c8733a583ca6dff5") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.8-aarch64-portable.tar.bz2", + sha256: Some("b7282bc4484bceae5bc4cc04e05ee4faf51cb624c8fc7a69d92e5fdf0d0c96aa") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.8-linux32.tar.bz2", + sha256: Some("a0d18e4e73cc655eb02354759178b8fb161d3e53b64297d05e2fff91f7cf862d") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.8-s390x.tar.bz2", + sha256: Some("37b596bfe76707ead38ffb565629697e9b6fa24e722acc3c632b41ec624f5d95") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.8-osx64.tar.bz2", + sha256: Some("95bd88ac8d6372cd5b7b5393de7b7d5c615a0c6e42fdb1eb67f2d2d510965aee") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.8-linux64.tar.bz2", + sha256: Some("129a055032bba700cd1d0acacab3659cf6b7180e25b1b2f730e792f06d5b3010") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 9, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.9-v7.3.8-win64.zip", + sha256: Some("c1b2e4cde2dcd1208d41ef7b7df8e5c90564a521e7a5db431673da335a1ba697") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2", + sha256: Some("78cdc79ff964c4bfd13eb45a7d43a011cbe8d8b513323d204891f703fdc4fa1a") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-aarch64.tar.bz2", + sha256: Some("9a2fa0b8d92b7830aa31774a9a76129b0ff81afbd22cd5c41fbdd9119e859f55") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-linux32.tar.bz2", + sha256: Some("a79b31fce8f5bc1f9940b6777134189a1d3d18bda4b1c830384cda90077c9176") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-s390x.tar.bz2", + sha256: Some("eab7734d86d96549866f1cba67f4f9c73c989f6a802248beebc504080d4c3fcd") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2", + sha256: Some("194ca0b4d91ae409a9cb1a59eb7572d7affa8a451ea3daf26539aa515443433a") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-linux64.tar.bz2", + sha256: Some("470330e58ac105c094041aa07bb05676b06292bc61409e26f5c5593ebb2292d9") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 16, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip", + sha256: Some("0f46fb6df32941ea016f77cfd7e9b426d5ac25a2af2453414df66103941c8435") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-macos_arm64.tar.bz2", + sha256: Some("6cb1429371e4854b718148a509d80143f801e3abfc72fef58d88aeeee1e98f9e") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-aarch64.tar.bz2", + sha256: Some("e4caa1a545f22cfee87d5b9aa6f8852347f223643ad7d2562e0b2a2f4663ad98") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-linux32.tar.bz2", + sha256: Some("b70ed7fdc73a74ebdc04f07439f7bad1a849aaca95e26b4a74049d0e483f071c") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-s390x.tar.bz2", + sha256: Some("c294f8e815158388628fe77ac5b8ad6cd93c8db1359091fa02d41cf6da4d61a1") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-macos_x86_64.tar.bz2", + sha256: Some("399eb1ce4c65f62f6a096b7c273536601b7695e3c0dc0457393a659b95b7615b") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-linux64.tar.bz2", + sha256: Some("ceef6496fd4ab1c99e3ec22ce657b8f10f8bb77a32427fadfb5e1dd943806011") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 15, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.10-win64.zip", + sha256: Some("362dd624d95bd64743190ea2539b97452ecb3d53ea92ceb2fbe9f48dc60e6b8f") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.9-aarch64.tar.bz2", + sha256: Some("5e124455e207425e80731dff317f0432fa0aba1f025845ffca813770e2447e32") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.9-linux32.tar.bz2", + sha256: Some("4b261516c6c59078ab0c8bd7207327a1b97057b4ec1714ed5e79a026f9efd492") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.9-s390x.tar.bz2", + sha256: Some("c6177a0016c9145c7b99fddb5d74cc2e518ccdb216a6deb51ef6a377510cc930") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.9-osx64.tar.bz2", + sha256: Some("91a5c2c1facd5a4931a8682b7d792f7cf4f2ba25cd2e7e44e982139a6d5e4840") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.9-linux64.tar.bz2", + sha256: Some("08be25ec82fc5d23b78563eda144923517daba481a90af0ace7a047c9c9a3c34") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.9-win64.zip", + sha256: Some("05022baaa55db2b60880f2422312d9e4025e1267303ac57f33e8253559d0be88") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.8-aarch64-portable.tar.bz2", + sha256: Some("0210536e9f1841ba283c13b04783394050837bb3e6f4091c9f1bd9c7f2b94b55") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.8-linux32.tar.bz2", + sha256: Some("bea4b275decd492af6462157d293dd6fcf08a949859f8aec0959537b40afd032") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.8-s390x.tar.bz2", + sha256: Some("ad53d373d6e275a41ca64da7d88afb6a17e48e7bfb2a6fff92daafdc06da6b90") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.8-osx64.tar.bz2", + sha256: Some("de1b283ff112d76395c0162a1cf11528e192bdc230ee3f1b237f7694c7518dee") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.8-linux64.tar.bz2", + sha256: Some("089f8e3e357d6130815964ddd3507c13bd53e4976ccf0a89b5c36a9a6775a188") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 8, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.8-v7.3.8-win64.zip", + sha256: Some("0894c468e7de758c509a602a28ef0ba4fbf197ccdf946c7853a7283d9bb2a345") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.9-aarch64.tar.bz2", + sha256: Some("dfc62f2c453fb851d10a1879c6e75c31ffebbf2a44d181bb06fcac4750d023fc") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.9-linux32.tar.bz2", + sha256: Some("3398cece0167b81baa219c9cd54a549443d8c0a6b553ec8ec13236281e0d86cd") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.9-s390x.tar.bz2", + sha256: Some("fcab3b9e110379948217cf592229542f53c33bfe881006f95ce30ac815a6df48") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2", + sha256: Some("12d92f578a200d50959e55074b20f29f93c538943e9a6e6522df1a1cc9cef542") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.9-linux64.tar.bz2", + sha256: Some("c58195124d807ecc527499ee19bc511ed753f4f2e418203ca51bc7e3b124d5d1") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 13, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip", + sha256: Some("8acb184b48fb3c854de0662e4d23a66b90e73b1ab73a86695022c12c745d8b00") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.8-aarch64-portable.tar.bz2", + sha256: Some("639c76f128a856747aee23a34276fa101a7a157ea81e76394fbaf80b97dcf2f2") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.8-linux32.tar.bz2", + sha256: Some("38429ec6ea1aca391821ee4fbda7358ae86de4600146643f2af2fe2c085af839") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.8-s390x.tar.bz2", + sha256: Some("5c2cd3f7cf04cb96f6bcc6b02e271f5d7275867763978e66651b8d1605ef3141") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.8-osx64.tar.bz2", + sha256: Some("76b8eef5b059a7e478f525615482d2a6e9feb83375e3f63c16381d80521a693f") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.8-linux64.tar.bz2", + sha256: Some("409085db79a6d90bfcf4f576dca1538498e65937acfbe03bd4909bdc262ff378") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 12, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.8-win64.zip", + sha256: Some("96df67492bc8d62b2e71dddf5f6c58965a26cac9799c5f4081401af0494b3bcc") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.5-aarch64.tar.bz2", + sha256: Some("85d83093b3ef5b863f641bc4073d057cc98bb821e16aa9361a5ff4898e70e8ee") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.5-linux32.tar.bz2", + sha256: Some("3dd8b565203d372829e53945c599296fa961895130342ea13791b17c84ed06c4") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.5-s390x.tar.bz2", + sha256: Some("dffdf5d73613be2c6809dc1a3cf3ee6ac2f3af015180910247ff24270b532ed5") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.5-osx64.tar.bz2", + sha256: Some("b3a7d3099ad83de7c267bb79ae609d5ce73b01800578ffd91ba7e221b13f80db") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.5-linux64.tar.bz2", + sha256: Some("9000db3e87b54638e55177e68cbeb30a30fe5d17b6be48a9eb43d65b3ebcfc26") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 10, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.5-win64.zip", + sha256: Some("072bd22427178dc4e65d961f50281bd2f56e11c4e4d9f16311c703f69f46ae24") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 9, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::Aarch64(target_lexicon::Aarch64Architecture::Aarch64)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.3-aarch64.tar.bz2", + sha256: Some("ee4aa041558b58de6063dd6df93b3def221c4ca4c900d6a9db5b1b52135703a8") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 9, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.3-linux32.tar.bz2", + sha256: Some("7d81b8e9fcd07c067cfe2f519ab770ec62928ee8787f952cadf2d2786246efc8") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 9, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_32(target_lexicon::X86_32Architecture::I686)), + os: Os(target_lexicon::OperatingSystem::Windows), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.3-win32.zip", + sha256: Some("a282ce40aa4f853e877a5dbb38f0a586a29e563ae9ba82fd50c7e5dc465fb649") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 9, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::S390x), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.3-s390x.tar.bz2", + sha256: Some("92000d90b9a37f2e9cb7885f2a872adfa9e48e74bf7f84a8b8185c8181f0502d") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 9, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Darwin), + libc: Libc::None, + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.3-osx64.tar.bz2", + sha256: Some("d72b27d5bb60813273f14f07378a08822186a66e216c5d1a768ad295b582438d") + }, + ManagedPythonDownload { + key: PythonInstallationKey { + major: 3, + minor: 7, + patch: 9, + implementation: LenientImplementationName::Known(ImplementationName::PyPy), + arch: Arch(target_lexicon::Architecture::X86_64), + os: Os(target_lexicon::OperatingSystem::Linux), + libc: Libc::Some(target_lexicon::Environment::Gnu), + }, + url: "https://downloads.python.org/pypy/pypy3.7-v7.3.3-linux64.tar.bz2", + sha256: Some("37e2804c4661c86c857d709d28c7de716b000d31e89766599fdf5a98928b7096") + }, ]; diff --git a/crates/uv-python/src/managed.rs b/crates/uv-python/src/managed.rs index 3f6139538ed5..756bb5a40f3e 100644 --- a/crates/uv-python/src/managed.rs +++ b/crates/uv-python/src/managed.rs @@ -314,15 +314,23 @@ impl ManagedPythonInstallation { /// standard `EXTERNALLY-MANAGED` file. pub fn ensure_externally_managed(&self) -> Result<(), Error> { // Construct the path to the `stdlib` directory. - let stdlib = if cfg!(windows) { + let stdlib = if matches!(self.key.os, Os(target_lexicon::OperatingSystem::Windows)) { self.python_dir().join("Lib") } else { - self.python_dir() - .join("lib") - .join(format!("python{}", self.key.version().python_version())) + let python = if matches!( + self.key.implementation, + LenientImplementationName::Known(ImplementationName::PyPy) + ) { + format!("pypy{}", self.key.version().python_version()) + } else { + format!("python{}", self.key.version().python_version()) + }; + self.python_dir().join("lib").join(python) }; + let file = stdlib.join("EXTERNALLY-MANAGED"); fs_err::write(file, EXTERNALLY_MANAGED)?; + Ok(()) } } diff --git a/crates/uv-python/template-download-metadata.py b/crates/uv-python/template-download-metadata.py index f91bbbb2cfee..6f21855a1578 100755 --- a/crates/uv-python/template-download-metadata.py +++ b/crates/uv-python/template-download-metadata.py @@ -35,6 +35,8 @@ def prepare_name(name: str) -> str: match name: case "cpython": return "CPython" + case "pypy": + return "PyPy" case _: raise ValueError(f"Unknown implementation name: {name}") diff --git a/docs/python-versions.md b/docs/python-versions.md index 8d3f2787044e..a7908d841996 100644 --- a/docs/python-versions.md +++ b/docs/python-versions.md @@ -24,12 +24,12 @@ Many Python version request formats are supported: - `` e.g. `cpython>=3.12,<3.13` - `----` e.g. `cpython-3.12.3-macos-aarch64-none` -At this time, only CPython downloads are supported. However, PyPy support is planned. - ## Installing a Python version Sometimes it is preferable to install the Python versions before they are needed. +uv bundles a list of downloadable CPython and PyPy distributions for macOS, Linux, and Windows. + To install a Python version at a specific version: ```bash @@ -122,8 +122,10 @@ If a specific Python version is requested, e.g. `--python 3.7`, additional execu ## Python distributions -Python does not publish official distributable binaries, uv uses third-party standalone distributions from the [`python-build-standalone`](https://github.com/indygreg/python-build-standalone) project. The project is partially maintained by the uv maintainers and is used by many other Python projects. +Python does not publish official distributable CPython binaries, uv uses third-party standalone distributions from the [`python-build-standalone`](https://github.com/indygreg/python-build-standalone) project. The project is partially maintained by the uv maintainers and is used by many other Python projects. The Python distributions are self-contained and highly-portable. Additionally, these distributions have various build-time optimizations enabled to ensure they are performant. These distributions have some behavior quirks, generally as a consequence of portability. See the [`python-build-standalone` quirks](https://gregoryszorc.com/docs/python-build-standalone/main/quirks.html) documentation for details. + +PyPy distributions are provided by the PyPy project.