From 0e127ec524ac04b77dd3529cc2a0f0d9f36582c0 Mon Sep 17 00:00:00 2001 From: xangcastle Date: Thu, 13 Aug 2026 15:43:39 -0600 Subject: [PATCH] test(e2e): move the pycross suites into an isolated e2e/crossbuild workspace The rules_pycross ports (pycross-distutils-probe, pycross-patches, pycross-pure-python, pycross-setuptools) landed in e2e/cases, but they are sdist-crossbuild suites: their hubs carry package-specific overrides (default_build_dependencies, pre/post-install patches, resource_set) that shouldn't share a module with unrelated cases, and the cross-compilation test matrix will grow around them. Give them their own e2e/crossbuild workspace with a minimal MODULE.bazel (rules_py via local_path_override, bazel_lib for collect_wheels, the LLVM toolchain for the native sdist builds, PBS interpreters 3.12/3.13, uv). The wheel-collection tooling (collect_wheels.bzl/.py, check_wheel_tags.py) moves along with them: pycross-pure-python was its last consumer under e2e/cases. The linux_x86_64 platform and the assert_* helpers stay, they still have consumers there. CI gets the new workspace in the test matrix and in the macOS smoke job, which previously covered these suites through e2e/cases. --- .github/workflows/ci-workflows.yaml | 2 + e2e/README.md | 10 + e2e/cases/MODULE.bazel | 4 - e2e/cases/tools/BUILD.bazel | 10 - e2e/crossbuild/.bazelrc | 15 + e2e/crossbuild/.bazelversion | 7 + e2e/crossbuild/MODULE.bazel | 54 + e2e/crossbuild/MODULE.bazel.lock | 1362 +++++++++++++++++ .../pycross-distutils-probe/BUILD.bazel | 0 .../pycross-distutils-probe/__test__.py | 0 .../pycross-distutils-probe/pyproject.toml | 0 .../setup.MODULE.bazel | 0 .../pycross-distutils-probe/uv.lock | 0 .../pycross-patches/BUILD.bazel | 0 .../patches/setproctitle-postinstall.patch | 0 .../patches/setproctitle-prebuild.patch | 0 .../pycross-patches/pyproject.toml | 0 .../pycross-patches/setup.MODULE.bazel | 0 .../test_setproctitle_patched.py | 0 .../pycross-patches/uv.lock | 0 .../pycross-pure-python/BUILD.bazel | 0 .../pycross-pure-python/pyproject.toml | 0 .../pycross-pure-python/setup.MODULE.bazel | 0 .../pycross-pure-python/test_filelock.py | 0 .../test_pyproject_metadata.py | 0 .../pycross-pure-python/test_tomli.py | 0 .../test_top_level_packages.py | 0 .../pycross-pure-python/uv.lock | 0 .../pycross-setuptools/BUILD.bazel | 0 .../pycross-setuptools/pyproject.toml | 0 .../require_extension.patch | 0 .../pycross-setuptools/setup.MODULE.bazel | 0 .../pycross-setuptools/test_pyyaml.py | 0 .../pycross-setuptools/test_setproctitle.py | 0 .../pycross-setuptools/test_zstandard.py | 0 .../pycross-setuptools/uv.lock | 0 e2e/crossbuild/tools/BUILD.bazel | 16 + .../tools/check_wheel_tags.py | 0 .../tools/collect_wheels.bzl | 0 .../tools/collect_wheels.py | 0 40 files changed, 1466 insertions(+), 14 deletions(-) create mode 100644 e2e/crossbuild/.bazelrc create mode 100644 e2e/crossbuild/.bazelversion create mode 100644 e2e/crossbuild/MODULE.bazel create mode 100644 e2e/crossbuild/MODULE.bazel.lock rename e2e/{cases => crossbuild}/pycross-distutils-probe/BUILD.bazel (100%) rename e2e/{cases => crossbuild}/pycross-distutils-probe/__test__.py (100%) rename e2e/{cases => crossbuild}/pycross-distutils-probe/pyproject.toml (100%) rename e2e/{cases => crossbuild}/pycross-distutils-probe/setup.MODULE.bazel (100%) rename e2e/{cases => crossbuild}/pycross-distutils-probe/uv.lock (100%) rename e2e/{cases => crossbuild}/pycross-patches/BUILD.bazel (100%) rename e2e/{cases => crossbuild}/pycross-patches/patches/setproctitle-postinstall.patch (100%) rename e2e/{cases => crossbuild}/pycross-patches/patches/setproctitle-prebuild.patch (100%) rename e2e/{cases => crossbuild}/pycross-patches/pyproject.toml (100%) rename e2e/{cases => crossbuild}/pycross-patches/setup.MODULE.bazel (100%) rename e2e/{cases => crossbuild}/pycross-patches/test_setproctitle_patched.py (100%) rename e2e/{cases => crossbuild}/pycross-patches/uv.lock (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/BUILD.bazel (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/pyproject.toml (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/setup.MODULE.bazel (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/test_filelock.py (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/test_pyproject_metadata.py (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/test_tomli.py (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/test_top_level_packages.py (100%) rename e2e/{cases => crossbuild}/pycross-pure-python/uv.lock (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/BUILD.bazel (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/pyproject.toml (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/require_extension.patch (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/setup.MODULE.bazel (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/test_pyyaml.py (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/test_setproctitle.py (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/test_zstandard.py (100%) rename e2e/{cases => crossbuild}/pycross-setuptools/uv.lock (100%) create mode 100644 e2e/crossbuild/tools/BUILD.bazel rename e2e/{cases => crossbuild}/tools/check_wheel_tags.py (100%) rename e2e/{cases => crossbuild}/tools/collect_wheels.bzl (100%) rename e2e/{cases => crossbuild}/tools/collect_wheels.py (100%) diff --git a/.github/workflows/ci-workflows.yaml b/.github/workflows/ci-workflows.yaml index ee5abc624..65686c658 100644 --- a/.github/workflows/ci-workflows.yaml +++ b/.github/workflows/ci-workflows.yaml @@ -76,6 +76,7 @@ jobs: workspace: - { path: ".", slug: "root", runner: "ubuntu-latest" } - { path: "e2e/cases", slug: "e2e", runner: "ubuntu-22.04-32core" } + - { path: "e2e/crossbuild", slug: "e2e-crossbuild", runner: "ubuntu-22.04-32core" } - { path: "e2e/interpreter-runtime-metadata", slug: "e2e-interpreter-runtime-metadata", runner: "ubuntu-latest" } - { path: "e2e/interpreter-toolchain-settings", slug: "e2e-interpreter-toolchain-settings", runner: "ubuntu-latest" } - { path: "e2e/interpreter-input-validation", slug: "e2e-interpreter-input-validation", runner: "ubuntu-latest" } @@ -129,6 +130,7 @@ jobs: workspace: - { path: ".", slug: "root" } - { path: "e2e/cases", slug: "e2e" } + - { path: "e2e/crossbuild", slug: "e2e-crossbuild" } defaults: run: working-directory: ${{ matrix.workspace.path }} diff --git a/e2e/README.md b/e2e/README.md index 36f5ef648..d1aa5fa26 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -35,6 +35,16 @@ workspace above must not carry: its `.bazelrc` turns on the rules_python provide compatibility layer, so rules_python `py_*` targets can depend on a rules_py `py_library`. Its `test.sh` asserts the same dependency is rejected with the flag off. +`crossbuild` hosts the rules_pycross ports (`pycross-*`): suites that force +packages to build from their sdists — pure-Python backends, setuptools C +extensions, pre/post-install patch phases, the distutils probe — and assert +properties of the resulting wheels, including rebuilding them under non-host +target platforms via `collect_wheels`. They live apart from `cases/` because +this workspace is where the cross-compilation test matrix grows, and their +sdist hubs carry package-specific overrides (`default_build_dependencies`, +patches, `resource_set`) that shouldn't leak onto unrelated cases sharing a +module — see its `MODULE.bazel` docstring. + Each isolated workspace points back at repo-root rules_py with `local_path_override(path = "../..")`. diff --git a/e2e/cases/MODULE.bazel b/e2e/cases/MODULE.bazel index 86a9c5e47..6ac418723 100644 --- a/e2e/cases/MODULE.bazel +++ b/e2e/cases/MODULE.bazel @@ -104,10 +104,6 @@ include("//oci:setup.MODULE.bazel") include("//pbs-cc-toolchain:setup.MODULE.bazel") include("//pth-namespace-547:setup.MODULE.bazel") include("//pyarrow-dot-dir-1420:setup.MODULE.bazel") -include("//pycross-distutils-probe:setup.MODULE.bazel") -include("//pycross-patches:setup.MODULE.bazel") -include("//pycross-pure-python:setup.MODULE.bazel") -include("//pycross-setuptools:setup.MODULE.bazel") include("//pytest-anyio-plugin:setup.MODULE.bazel") include("//pytest-main-867:setup.MODULE.bazel") include("//pytest-mock-530:setup.MODULE.bazel") diff --git a/e2e/cases/tools/BUILD.bazel b/e2e/cases/tools/BUILD.bazel index 90a9266a8..64efef29b 100644 --- a/e2e/cases/tools/BUILD.bazel +++ b/e2e/cases/tools/BUILD.bazel @@ -1,13 +1,10 @@ # Shared helpers consumed by //... via load("//tools:..."). -load("@aspect_rules_py//py:defs.bzl", "py_binary") - # Consumed cross-package by the `assert_tar_listing` macro (//tools:asserts.bzl), # which declares a py_test with this script as `main` in the caller's package. exports_files([ "assert_absent.py", "assert_ownership.py", - "check_wheel_tags.py", ]) platform( @@ -18,10 +15,3 @@ platform( ], visibility = ["//visibility:public"], ) - -py_binary( - name = "collect_wheels_tool", - srcs = ["collect_wheels.py"], - main = "collect_wheels.py", - visibility = ["//visibility:public"], -) diff --git a/e2e/crossbuild/.bazelrc b/e2e/crossbuild/.bazelrc new file mode 100644 index 000000000..6cb312c68 --- /dev/null +++ b/e2e/crossbuild/.bazelrc @@ -0,0 +1,15 @@ +# Match Bazel 9's default. Without this, PySdistNativeBuild actions on +# Bazel 8 run without a default PATH, and clang's compiled-in default +# linker (`ld`, not bundled with the hermetic LLVM toolchain) can't be +# located. With it on, Bazel injects a static PATH=/bin:/usr/bin:/usr/local/bin +# so clang's PATH search hits the runner's /usr/bin/ld. +common --incompatible_strict_action_env + +# Enable path mapping so WhlInstall actions are exercised with +# supports-path-mapping. Actions that declare the execution requirement get +# configuration-stripped cache keys; those that don't still work normally. +build --experimental_output_paths=strip + +# Build without the bytes +common:ci --remote_download_outputs=minimal +common:ci --nobuild_runfile_links diff --git a/e2e/crossbuild/.bazelversion b/e2e/crossbuild/.bazelversion new file mode 100644 index 000000000..074c37b76 --- /dev/null +++ b/e2e/crossbuild/.bazelversion @@ -0,0 +1,7 @@ +8.6.0 +# The first line of this file is used by Bazelisk and Bazel to be sure +# the right version of Bazel is used to build and test this repo. +# This also defines which version is used on CI. +# +# Note that you should also run integration_tests against other Bazel +# versions you support. diff --git a/e2e/crossbuild/MODULE.bazel b/e2e/crossbuild/MODULE.bazel new file mode 100644 index 000000000..04afffa9d --- /dev/null +++ b/e2e/crossbuild/MODULE.bazel @@ -0,0 +1,54 @@ +"""Isolated workspace for cross-platform source-build (crossbuild) suites. + +Hosts the rules_pycross ports: every case here forces packages to build from +their sdists and asserts properties of the resulting wheels across target +platforms. They live apart from `e2e/cases` because this workspace is where +the cross-compilation test matrix grows; keeping the sdist-build hubs out of +the shared `cases/` module also keeps their package-specific overrides +(`default_build_dependencies`, patches, `resource_set`) from leaking onto +unrelated cases sharing that workspace. +""" + +bazel_dep(name = "aspect_rules_py") +bazel_dep(name = "bazel_lib", version = "3.0.0") +bazel_dep(name = "platforms", version = "1.0.0") +bazel_dep(name = "llvm", version = "0.8.3") + +local_path_override( + module_name = "aspect_rules_py", + path = "../..", +) + +interpreters = use_extension("@aspect_rules_py//py:extensions.bzl", "python_interpreters") +interpreters.configure( + releases = [ + "20260303", + "20251031", + ], +) +interpreters.toolchain( + python_version = "3.12", +) +interpreters.toolchain( + python_version = "3.13", +) +use_repo(interpreters, "python_interpreters") + +register_toolchains("@python_interpreters//:all") + +tools = use_extension("@aspect_rules_py//py:extensions.bzl", "py_tools") +tools.rules_py_tools() +use_repo(tools, "rules_py_tools") + +register_toolchains("@rules_py_tools//:all") + +register_toolchains("@llvm//toolchain:all") + +uv_bin = use_extension("@aspect_rules_py//uv:extensions.bzl", "uv_bin") +uv_bin.toolchain(version = "0.11.21") +use_repo(uv_bin, "uv") + +include("//pycross-distutils-probe:setup.MODULE.bazel") +include("//pycross-patches:setup.MODULE.bazel") +include("//pycross-pure-python:setup.MODULE.bazel") +include("//pycross-setuptools:setup.MODULE.bazel") diff --git a/e2e/crossbuild/MODULE.bazel.lock b/e2e/crossbuild/MODULE.bazel.lock new file mode 100644 index 000000000..60f5caa49 --- /dev/null +++ b/e2e/crossbuild/MODULE.bazel.lock @@ -0,0 +1,1362 @@ +{ + "lockFileVersion": 24, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.3.3/MODULE.bazel": "37c764292861c2f70314efa9846bb6dbb44fc0308903b3285da6528305450183", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.3.3/source.json": "605086bbc197743a0d360f7ddc550a1d4dfa0441bc807236e17170f636153348", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.24.0/MODULE.bazel": "4796b4c25b47053e9bbffa792b3792d07e228ff66cd0405faef56a978708acd4", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.42.0/MODULE.bazel": "e8ca15cb2639c5f12183db6dcb678735555d0cdd739b32a0418b6532b5e565f8", + "https://bcr.bazel.build/modules/bazel_features/1.43.0/MODULE.bazel": "defa2226f06ba20550d6548c3a2ea2a7929634437a52973869c20c225450eb91", + "https://bcr.bazel.build/modules/bazel_features/1.43.0/source.json": "1c4207dc858d6de0eecef30026793616bbf420c74aac27b6bad212534a730437", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d", + "https://bcr.bazel.build/modules/bazel_lib/3.2.2/MODULE.bazel": "e2c890c8a515d6bca9c66d47718aa9e44b458fde64ec7204b8030bf2d349058c", + "https://bcr.bazel.build/modules/bazel_lib/3.2.2/source.json": "9e84e115c20e14652c5c21401ae85ff4daa8702e265b5c0b3bf89353f17aa212", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.0/MODULE.bazel": "2fb3fb53675f6adfc1ca5bfbd5cfb655ae350fba4706d924a8ec7e3ba945671c", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/MODULE.bazel": "72997b29dfd95c3fa0d0c48322d05590418edef451f8db8db5509c57875fb4b7", + "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/source.json": "7ad77c1e8c1b84222d9b3f3cae016a76639435744c19330b0b37c0a3c9da7dc0", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.3/MODULE.bazel": "f1b7bb2dd53e8f2ef984b39485ec8a44e9076dda5c4b8efd2fb4c6a6e856a31d", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.7/MODULE.bazel": "1e5e03c383fa64ebbe0942a225c32168fd6ef6b270351bbec481d47d19d1b96d", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.7/source.json": "34a83d58ae2f1ef6731d1fc8a1b6f07825741aff3f5993b67b67ec21d2c2946e", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/hermetic_launcher/0.0.14/MODULE.bazel": "67ff71bbfb482e58510451c4c8b8cd303c757f7ff79a2aff7cf381277be96f9f", + "https://bcr.bazel.build/modules/hermetic_launcher/0.0.14/source.json": "475aa00426677e643e327b4b031d8816a3bc0a134c94d0d0d510cfd67b2cfd2c", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/llvm/0.8.3/MODULE.bazel": "dbc1bc13171f8f9980a75524883abef1c491613e8d8d805cd4ffa3767ba9708e", + "https://bcr.bazel.build/modules/llvm/0.8.3/source.json": "4b11874c26a9de53c03a25a517ebc36dee6b458c920fe9ed65e3ca279ff19775", + "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83", + "https://bcr.bazel.build/modules/package_metadata/0.0.3/source.json": "742075a428ad12a3fa18a69014c2f57f01af910c6d9d18646c990200853e641a", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", + "https://bcr.bazel.build/modules/platforms/1.1.0/MODULE.bazel": "1c0c09f5bdcf4b3f924720d2478a3711cb39f4977019ca5988685e5b7e18b3d2", + "https://bcr.bazel.build/modules/platforms/1.1.0/source.json": "fcf351c47596c939140ab0d333dfdd08ed1ea6ce33c2fe70c12493a301cf1344", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8", + "https://bcr.bazel.build/modules/rules_cc/0.2.16/MODULE.bazel": "9242fa89f950c6ef7702801ab53922e99c69b02310c39fb6e62b2bd30df2a1d4", + "https://bcr.bazel.build/modules/rules_cc/0.2.18/MODULE.bazel": "4460ec36adc8f722a6a2a4ac9374cb91f2acebadaa93fc37966129afb3dece87", + "https://bcr.bazel.build/modules/rules_cc/0.2.18/source.json": "abad668ff2fd63ada1ac49bf386d37e27048b89a3465a6fd968bb832b00a09d3", + "https://bcr.bazel.build/modules/rules_cc/0.2.4/MODULE.bazel": "1ff1223dfd24f3ecf8f028446d4a27608aa43c3f41e346d22838a4223980b8cc", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", + "https://bcr.bazel.build/modules/rules_java/8.14.0/source.json": "8a88c4ca9e8759da53cddc88123880565c520503321e2566b4e33d0287a3d4bc", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.7.0/MODULE.bazel": "d01f995ecd137abf30238ad9ce97f8fc3ac57289c8b24bd0bf53324d937a14f8", + "https://bcr.bazel.build/modules/rules_python/1.9.0/MODULE.bazel": "afc3a05f29f09f2d3ee95ad99a145250dab41a2b2d8d6f82cc91936b3213282c", + "https://bcr.bazel.build/modules/rules_python/1.9.0/source.json": "3921ea0b65298d51aead5b9e4a82203d7be9b5918619b58b53f1c259f4e63169", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/tar.bzl/0.10.1/MODULE.bazel": "bf5fda5b5ccef8c3c4a5f4886144377386e0baa382972f257acb42dcf40ea908", + "https://bcr.bazel.build/modules/tar.bzl/0.10.4/MODULE.bazel": "e8f9ff79199e8d9eaad7f1b0a77ad74b30bb82d794b87d8ca942bead5de83ae9", + "https://bcr.bazel.build/modules/tar.bzl/0.10.4/source.json": "20143442376c03426f6135292ba02d825cb75308aa47e6bf42dd4cc5a435c2ff", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/with_cfg.bzl/0.12.0/MODULE.bazel": "b573395fe63aef4299ba095173e2f62ccfee5ad9bbf7acaa95dba73af9fc2b38", + "https://bcr.bazel.build/modules/with_cfg.bzl/0.12.0/source.json": "3f3fbaeafecaf629877ad152a2c9def21f8d330d91aa94c5dc75bbb98c10b8b8", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { + "general": { + "bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=", + "usagesDigest": "9blYmJygEZWQR5a/Myvp61XErKXTzb80Gu2XjdU/ml4=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "aspect_tools_telemetry_report": { + "repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository", + "attributes": { + "deps": { + "aspect_rules_py": "", + "aspect_tools_telemetry": "0.3.3" + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_tools_telemetry+", + "bazel_lib", + "bazel_lib+" + ], + [ + "aspect_tools_telemetry+", + "bazel_skylib", + "bazel_skylib+" + ] + ] + } + }, + "@@llvm+//3rd_party/gcc/extension:gcc.bzl%gcc": { + "general": { + "bzlTransitiveDigest": "XUWTels9SzO7xhmQBqYtaFYFMTjrFMSDFi/Q7hv4f34=", + "usagesDigest": "9IP/e++b81Ga1zICxzXu+yqfe5i4DX5F/SsrgV5a568=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "gcc": { + "repoRuleId": "@@llvm+//:http_bsdtar_archive.bzl%http_bsdtar_archive", + "attributes": { + "build_file": "@@llvm+//3rd_party/gcc:gcc.BUILD.bazel", + "includes": [ + "gcc/BASE-VER", + "gcc/DATESTAMP", + "gcc/ginclude/unwind-arm-common.h", + "config/acx.m4", + "config/cet.m4", + "config/futex.m4", + "config/gc++filt.m4", + "config/gthr.m4", + "config/hwcaps.m4", + "config/iconv.m4", + "config/lthostflags.m4", + "config/multi.m4", + "config/no-executables.m4", + "config/tls.m4", + "config/toolexeclibdir.m4", + "config/unwind_ipinfo.m4", + "include/ansidecl.h", + "include/demangle.h", + "include/dyn-string.h", + "include/getopt.h", + "include/libiberty.h", + "libgcc/gthr-posix.h", + "libgcc/gthr-single.h", + "libgcc/gthr.h", + "libgcc/config/arm/unwind-arm.h", + "libgcc/unwind-generic.h", + "libgcc/unwind-pe.h", + "libiberty/cp-demangle.c", + "libiberty/cp-demangle.h", + "libstdc++-v3/acinclude.m4", + "libstdc++-v3/config/**", + "libstdc++-v3/configure.ac", + "libstdc++-v3/configure.host", + "libstdc++-v3/crossconfig.m4", + "libstdc++-v3/linkage.m4", + "libstdc++-v3/include/**", + "libstdc++-v3/libsupc++/**", + "libstdc++-v3/src/**" + ], + "sha256": "dc033fdfd79caf199113446af6d082004534437b6ebd276f9732815d86cbe723", + "strip_prefix": "gcc-2bfd402f8569511901ec8fe7628f57471e6d240a", + "urls": [ + "https://github.com/gcc-mirror/gcc/archive/2bfd402f8569511901ec8fe7628f57471e6d240a.tar.gz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "llvm+", + "bazel_lib", + "bazel_lib+" + ], + [ + "llvm+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@pybind11_bazel+//:python_configure.bzl%extension": { + "general": { + "bzlTransitiveDigest": "D2/qWHU6yQFwRG7Bb+caqrYMha5avsASao2vERrxK24=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", + "recordedFileInputs": { + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_python": { + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", + "attributes": {} + }, + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", + "strip_prefix": "pybind11-2.11.1", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.11.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "4LouzhF/yT117s7peGnNs9ROomiJXC6Zl5R0oI21jho=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "nvW/NrBXlAmiQw99EMGKkLaD2KbNp2mQDlxdfpr+0Ls=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "yG9F6L2IZXKRbD/aIUa6sU7uITLUTBKOMWPbIvl1VdM=", + "usagesDigest": "6MjoD3H+netDdhklgMWks3NARpHVXxy8kfsMe9XXPa8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + } + }, + "facts": { + "@@aspect_rules_py+//py:extensions.bzl%python_interpreters": { + "release_index_v2_20251031_https://github.com/astral-sh/python-build-standalone/releases/download_install_only": { + "3.10/aarch64-apple-darwin/default": { + "filename": "cpython-3.10.19+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "43bda24c2fc073bc308bf631203b917a72640d59b59fdad4ba14503d84727012" + }, + "3.10/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.10.19+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "f77a8a8aa77f3f943126fa9215a25309da4bf20398fc8f4b4eec54b5fc7570ef" + }, + "3.10/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.10.19+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "9b9deba652d98857ae99bd11b05fb560144aafbd9b9e8e01c8c6d56577a06a4d" + }, + "3.10/i686-pc-windows-msvc/default": { + "filename": "cpython-3.10.19+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "0240edca85508661e20bb69562686965c85b8328727332d9ebfd57cceb7fb372" + }, + "3.10/x86_64-apple-darwin/default": { + "filename": "cpython-3.10.19+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "76c12e633c09c2a790f8a958a55df4495527e0718d1875310c836e757c0c7b55" + }, + "3.10/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.10.19+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "cfa08a4caf2df1b43551b843c052d6a8814e2ea0c97268b021f0423646c244c3" + }, + "3.10/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.10.19+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "fb1caac917d7b6497bb6f5950da5f1e48d05c43a498948dd97f85760c4382d9f" + }, + "3.10/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.10.19+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.10.19", + "sha256": "ba85013ed5ac7733fc6840168cc33ed19e9959b363dc80227d54f8fd9c92c0f4" + }, + "3.11/aarch64-apple-darwin/default": { + "filename": "cpython-3.11.14+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "6de5572b33c65af1c9b7caf00ec593fb04cffb7e14fa393a98261bb9bc464713" + }, + "3.11/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.11.14+20251031-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "38d0d1466561e15965e8d2c20f5e5be649598f55c761ecab553d087fbd217337" + }, + "3.11/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.11.14+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "510edb027527413c4249256194cb8ad2590b52dd93f7123b4cb341aff5d05894" + }, + "3.11/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.11.14+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "27609ec2b0c6172d5d9f502115a6d48c20ee0a578bf5b0470cd1090be95c22aa" + }, + "3.11/i686-pc-windows-msvc/default": { + "filename": "cpython-3.11.14+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "b4341ef60bc157f992a0d171f1be4e4c42dcfc537f3562f72aa7f1f9561935e0" + }, + "3.11/x86_64-apple-darwin/default": { + "filename": "cpython-3.11.14+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "4891cbf34e8652b7bd1054b9502395e4b7e048e2e517c040fbf6c8297cb954d6" + }, + "3.11/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.11.14+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "5223b83ed9e2aa5e9e17d2ebcf767956e998876339b9cde1980a47e9d4655fb6" + }, + "3.11/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.11.14+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "60f0bd473d861cc45d3401d9914e47ccb9fa037f88a91879ed517a62042b8477" + }, + "3.11/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.11.14+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.11.14", + "sha256": "25e82d1e85b90a8ab724ee633a1811b1921797f5c25ee69c6595052371b91a87" + }, + "3.12/aarch64-apple-darwin/default": { + "filename": "cpython-3.12.12+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "5e110cb821d2eb8246065d3b46faa655180c976c4e17250f7883c634a629bc63" + }, + "3.12/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.12.12+20251031-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "b190fed7c2b0f6e1010f554a0d1fd191c0754c4c0718e69d9d795ae559613780" + }, + "3.12/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.12.12+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "81b644d166e0bfb918615af8a2363f8fcf26eccdcc60a5334b6a62c088470bac" + }, + "3.12/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.12.12+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "fc423af42f4eb454c99779d9eedc619141606572da3851f7980a8da719f0f8db" + }, + "3.12/i686-pc-windows-msvc/default": { + "filename": "cpython-3.12.12+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "7d333e58a53edb1ba3c85bb35dc718ea3e599d0f6b58a0cbef35b2d8184a763e" + }, + "3.12/x86_64-apple-darwin/default": { + "filename": "cpython-3.12.12+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "687052a046d33be49dc95dd671816709067cf6176ed36c93ea61b1fe0b883b0f" + }, + "3.12/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.12.12+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "cff398b3f520c442a1b085dd347126c10c1b03f01ccc0decd8c897a687e893f1" + }, + "3.12/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.12.12+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "80c3882f14e15cef8260ef5257d198e8f4371ca265887431d939e0d561de3253" + }, + "3.12/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.12.12+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.12.12", + "sha256": "0a461330b9b89f2ea3088dde10d7a3f96aa65897b7c5ce2404fa3b5c4b8daa14" + }, + "3.13/aarch64-apple-darwin/default": { + "filename": "cpython-3.13.9+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "1f3568d17383426d52350c2ef7c93c1a5a043198b860cb05e5d19b35f9c25cef" + }, + "3.13/aarch64-apple-darwin/freethreaded": { + "filename": "cpython-3.13.9+20251031-aarch64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.9", + "sha256": "eae1272a72ccce601590a10a9ca2a58199b5fcdf022aa603a527e3e2a04de9bc" + }, + "3.13/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.13.9+20251031-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "20db43873d3c4c2175d866806545e4ad4ec6bb72ca95e60082a4df6c24567e8c" + }, + "3.13/aarch64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.13.9+20251031-aarch64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.13.9", + "sha256": "743ff69935ef28834621647dab30f032dfcd80315732917531eea333210941c7" + }, + "3.13/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.13.9+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "0a56d11b0fb1662e67f892b9d5d1717aef06f24dbb8362bc25b8f784e620d44e" + }, + "3.13/aarch64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.13.9+20251031-aarch64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.9", + "sha256": "a6e72f9de5d9b46cf6968d6a492f2401a919f9b959f8da2d87f43484b80169ee" + }, + "3.13/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.13.9+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "90c803b66f8483caeeb5655ca82b7f19068515826a569ed05414326a6ff8d06d" + }, + "3.13/aarch64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.13.9+20251031-aarch64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.13.9", + "sha256": "ba6a8d199c9f2a7aa5b88fdf16132049d675ab483eb6250e176a90fa0726eac4" + }, + "3.13/i686-pc-windows-msvc/default": { + "filename": "cpython-3.13.9+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "c0b0a34a492465bd44e9512582ae4ca47c06f9696807048cd917cb71c03a8416" + }, + "3.13/i686-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.13.9+20251031-i686-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.13.9", + "sha256": "a6cb3d7df191cde663ebf5f0108a9d7742e33862676ecde97fd90184333e822d" + }, + "3.13/x86_64-apple-darwin/default": { + "filename": "cpython-3.13.9+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "48c0f3ca5d31e90658ef99138dc21865bb62f388ab97a1ce72cac176da194ab0" + }, + "3.13/x86_64-apple-darwin/freethreaded": { + "filename": "cpython-3.13.9+20251031-x86_64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.9", + "sha256": "e2bf5fa6a3ef443ade362e08b0a19bbc172f7bfe34dabe933ccaad31d53af5da" + }, + "3.13/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.13.9+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "874593f641f31ea101440c70f81768c35d4d7d6df111fde63094db67465ef787" + }, + "3.13/x86_64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.13.9+20251031-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.13.9", + "sha256": "318a9a1e43dd52054327de3bccc0c5b7afde7b7f2a398ccb4d38e03d28b05386" + }, + "3.13/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.13.9+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "6f05b91ee8c7e6dd0f9c60b95bb29130e2d623961de6578b643e80ddd83f96b6" + }, + "3.13/x86_64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.13.9+20251031-x86_64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.9", + "sha256": "dcc29b069d0588fbd4ea29c6df840c8d1207d2a3bce8cd5cd57d1b85373b6048" + }, + "3.13/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.13.9+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.13.9", + "sha256": "ad987197034185e628715da504a50613af213dc21ba6d5ccaeab3db2c464aa6c" + }, + "3.13/x86_64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.13.9+20251031-x86_64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.13.9", + "sha256": "4c5c9a251a45288ebd4a51900708eb2ada9197173ba56e5604b6b63727fb87ff" + }, + "3.14/aarch64-apple-darwin/default": { + "filename": "cpython-3.14.0+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "b4bcd3c6c24cab32ae99e1b05c89312b783b4d69431d702e5012fe1fdcad4087" + }, + "3.14/aarch64-apple-darwin/freethreaded": { + "filename": "cpython-3.14.0+20251031-aarch64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.0", + "sha256": "d9c7b430b25bd3837dbb03f945dbe6b7bc526c5940ca96f5db7cdc42f6b2b801" + }, + "3.14/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.14.0+20251031-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "599a8b7e12439cd95a201dbdfe95cf363146b1ff91f379555dafd86b170caab9" + }, + "3.14/aarch64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.14.0+20251031-aarch64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.14.0", + "sha256": "40266e60f655e49cd1d5303295255909a4b593b08b88be6e6a55b2c9fe6ed13d" + }, + "3.14/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.14.0+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "128a9cbfb9645d5237ec01704d9d1d2ac5f084464cc43c37a4cd96aa9c3b1ad5" + }, + "3.14/aarch64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.14.0+20251031-aarch64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.0", + "sha256": "f383ef50d1da6ca511212e5ae601923b56636b87351fd5fc847e0ea0a19fa9b3" + }, + "3.14/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.14.0+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "e850ffb10a13cf16fb6ee08989e53532b606e7e96045ee65f7a3f41a9de14010" + }, + "3.14/aarch64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.14.0+20251031-aarch64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.14.0", + "sha256": "33c7aa105634102c61b8ad01c801dbaf1950e59c04a876b72004cf4fbcfc6e33" + }, + "3.14/i686-pc-windows-msvc/default": { + "filename": "cpython-3.14.0+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "35703b8b813afd37036ec88973c0f5a7626ee0dd48544a1c69cddeee994b5274" + }, + "3.14/i686-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.14.0+20251031-i686-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.14.0", + "sha256": "c47e0e4fd3a2d334a9f3df1d40fd9a7a8f743572dbd798b68fe5a6361c399806" + }, + "3.14/x86_64-apple-darwin/default": { + "filename": "cpython-3.14.0+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "4e71a3ce973be377ef18637826648bb936e2f9490f64a9e4f33a49bcc431d344" + }, + "3.14/x86_64-apple-darwin/freethreaded": { + "filename": "cpython-3.14.0+20251031-x86_64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.0", + "sha256": "b3196f6b57bbb3dc2ee07f348f1d51117ffa376979eceafbf50c15f0f7980bf8" + }, + "3.14/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.14.0+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "39acfcb3857d83eab054a3de11756ffc16b3d49c31393b9800dd2704d1f07fdf" + }, + "3.14/x86_64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.14.0+20251031-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.14.0", + "sha256": "b81de5fc9e783ea6dfcf1098c28a278c874999c71afbb0309f6a8b4276c769d0" + }, + "3.14/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.14.0+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "3dec1ab70758a3467ac3313bbcdabf7a9b3016db5c072c4537e3cf0a9e6290f6" + }, + "3.14/x86_64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.14.0+20251031-x86_64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.0", + "sha256": "f4acbef0fbfaf7ab31ac63986da1d93dfa1c5cb797de1dcdc1a988aa18670120" + }, + "3.14/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.14.0+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.14.0", + "sha256": "d0a2a6d3b1bb00dce2105377fda8aa79675d187f8d6d7010a42f651af25018dc" + }, + "3.14/x86_64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.14.0+20251031-x86_64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.14.0", + "sha256": "9e18302759734fb14694efb0418e7291c8d590d880abc2da1d7e6f14ac9a381d" + }, + "3.15/aarch64-apple-darwin/default": { + "filename": "cpython-3.15.0a1+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "3acf7aa3559b746498b18929456c5cacb84bae4e09249834cbc818970d71de87" + }, + "3.15/aarch64-apple-darwin/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-aarch64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "12f1b16be4017181ad67904caf9e59e525b9b5d62f49105017d837e27b832959" + }, + "3.15/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.15.0a1+20251031-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "1508bcd7195008479ed156aad3afbb3a3793097ed530690f0304a8107f0e53e8" + }, + "3.15/aarch64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-aarch64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "54ca78dae455ece6fefbd7f5f287cc55d5ce197caf51921f6d871d15069d9489" + }, + "3.15/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.15.0a1+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "d55c2aeece827e6bec83fd18515ee281d9ea0efaa3e2d20130db8f1c7cbb71c6" + }, + "3.15/aarch64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-aarch64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "981fe8dfc6e7e1d0ffefa945a18d5c4c759bbe21722acf3a5cc7e62f16aa5f3c" + }, + "3.15/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.15.0a1+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "abbd20235411d7cc24cba48ac519324b8bb71a52e05b26e7012de815e43d6e73" + }, + "3.15/aarch64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-aarch64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "017cd58a8e6d93a8d60453899d4bac6f540414003ec9a73dc106c20045d542ee" + }, + "3.15/i686-pc-windows-msvc/default": { + "filename": "cpython-3.15.0a1+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "6ffdbe54c45d0a9c309498f65c5ddf3de587c84aee89a227836f42b4e7e25691" + }, + "3.15/i686-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-i686-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "9f4bc934ef9c56e6d1d7263949430cecc19d301fa4cad74fcd36c9b3c6a7ba01" + }, + "3.15/x86_64-apple-darwin/default": { + "filename": "cpython-3.15.0a1+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "0ab19d3ac25f99da438b088751e5ec2421f9f6aa4292fd2dc0f8e49eb3e16bdf" + }, + "3.15/x86_64-apple-darwin/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-x86_64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "64fc29e6c7a2f02a18645d968f1b3fc1d00d12a5ef3fcbb0d077fa8c62c08904" + }, + "3.15/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.15.0a1+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "5f5d6bec2b381cfc771c49972d2a6f7b7e7ab6a1651d8fb6ef3983f3571722b3" + }, + "3.15/x86_64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "34abc5603e1b4131f753d29b7deac865b9277912b851cbed5a149cf3e6745d3d" + }, + "3.15/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.15.0a1+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "1f356288c2b2713619cb7a4e453d33bf8882f812af2987e21e01e7ae382fefba" + }, + "3.15/x86_64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-x86_64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "0e0272186d9f5169394dbc4d4d72a3f4a5762a04c2e5ac2ab1e23aa41fc8538a" + }, + "3.15/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.15.0a1+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.15.0a1", + "sha256": "caf5311f333eef082dd69a669ca65aceba09a08fc1e78aad602ad649106f294c" + }, + "3.15/x86_64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.15.0a1+20251031-x86_64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.15.0a1", + "sha256": "621ac3b8b8afa1593d63fb130dadc6eec2bd9e3603d6c028efe60146e05ec430" + }, + "3.9/aarch64-apple-darwin/default": { + "filename": "cpython-3.9.25+20251031-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "87275619c2706affa4d1090d2ca3dad354b6d69f8b85dbfafe38785870751b9a" + }, + "3.9/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.9.25+20251031-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "6112d46355857680b81849764a6cf9f38cc4cd0d1cf29d432bc12fe5aeedf9d0" + }, + "3.9/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.9.25+20251031-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "f4d8eb93c54cbf7dc37d5599748582d91c268c60008f17daf19c0ad183ec78ab" + }, + "3.9/i686-pc-windows-msvc/default": { + "filename": "cpython-3.9.25+20251031-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "5056f28d59653a6bddcc8007f024af00147a7e6f82e797f073a59f16a5cacc19" + }, + "3.9/x86_64-apple-darwin/default": { + "filename": "cpython-3.9.25+20251031-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "ace63cfe27a9487c4d72e1cb518be01c1d985271da0b2158e813801f7d3e5503" + }, + "3.9/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.9.25+20251031-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "4fb1b416482ce94d73cfa140317a670c596c830671d137b07c26afe8c461768a" + }, + "3.9/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.9.25+20251031-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "42834f61eb6df43432c3dd6ab9ca3fdf8c06d10a404ebdb53d6902e6b9570b08" + }, + "3.9/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.9.25+20251031-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.9.25", + "sha256": "76593e8c889e81e82db5fe117fe15b69466f85100ab2ec0e4035aa86242b4e93" + } + }, + "release_index_v2_20260303_https://github.com/astral-sh/python-build-standalone/releases/download_install_only": { + "3.10/aarch64-apple-darwin/default": { + "filename": "cpython-3.10.20+20260303-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "b41060c26454b21990254fdc08a4988f4e325708d785f8a0b4b4533881cf5fd4" + }, + "3.10/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.10.20+20260303-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "dcf3b9bd0062276866b4fc84c9e4c39be7ef161d22c769e5f4ee01c8e27100f4" + }, + "3.10/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.10.20+20260303-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "92713c7f4a7bb77bf8593818e4c1da8db44d415f45b0b5b7a8eb741695c08303" + }, + "3.10/i686-pc-windows-msvc/default": { + "filename": "cpython-3.10.20+20260303-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "9bc6cd476a2670a054dc8dbdd22c5b7c7642ac2f0ac810c5bb18aa39083a8a99" + }, + "3.10/x86_64-apple-darwin/default": { + "filename": "cpython-3.10.20+20260303-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "2fd25586216e5e6932d767034618b7bb97654c689f07513009d858398fe181f3" + }, + "3.10/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.10.20+20260303-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "aa55177f1247cdac1ccdf0877cdf68e9d6718b0914e56f1083404b1dcbac847b" + }, + "3.10/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.10.20+20260303-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "c830fc25bc6e318e7ad4961caadee6cc79c041c122884c90ecfad4fe02e20344" + }, + "3.10/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.10.20+20260303-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.10.20", + "sha256": "c781a93c1030c814bc0861dc424c476ca2e0083b429b968f557e1664f3ef223f" + }, + "3.11/aarch64-apple-darwin/default": { + "filename": "cpython-3.11.15+20260303-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "0d29ed7cb6711890b3c6da27b6258c4ad3b506bf8d5a381bff531ca8fa67417f" + }, + "3.11/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.11.15+20260303-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "84afaa698da2bc12f05aa317ad1ad6bf6708461e737efd08ad7e95d9a8857c1b" + }, + "3.11/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.11.15+20260303-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "4786f5ef8567c982517fcd7cb189a5ef4a712ed0aaf3034e839749794155ad4c" + }, + "3.11/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.11.15+20260303-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "d37ebd873138f85603607a56bc821e07551f45e6938e02d36b04885a6eded7ff" + }, + "3.11/i686-pc-windows-msvc/default": { + "filename": "cpython-3.11.15+20260303-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "1924013f72c36c8d19d6887979cded6ca7f2295667d591b88f74260f141e1fee" + }, + "3.11/x86_64-apple-darwin/default": { + "filename": "cpython-3.11.15+20260303-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "6ea2168c4e18cb31d9dc8486634dc375929bcc2adde0957399ce59d90b52297a" + }, + "3.11/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.11.15+20260303-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "6f194e1ede02260fd3d758893bbf1d3bb4084652d436a8300a229da721c3ddf8" + }, + "3.11/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.11.15+20260303-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "17e1f5b2c9668217ba554decd94db04adf3d085203d322c690fd44cde549d576" + }, + "3.11/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.11.15+20260303-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.11.15", + "sha256": "ee54c7baaa5a1fb65922505a646a2d097660b005e55bd35055d0a9c46a5ab916" + }, + "3.12/aarch64-apple-darwin/default": { + "filename": "cpython-3.12.13+20260303-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "2c01f29e9e4ddbd57e0319fedecf1f3e222558fce394a3ed4e39d0f750c11988" + }, + "3.12/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.12.13+20260303-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "f003d15139e0baa39563388b7e29c44a6c4dda3987dbd7cec2050eca32450d4f" + }, + "3.12/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.12.13+20260303-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "15c00b489fb89c7e3dc433800cd8b932ab3f8825870c1919fbe747f493edf81d" + }, + "3.12/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.12.13+20260303-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "2e3e3fc934a597c5c0e95fe9093a89cd6d3e248f9d3f6a0e82dbfa923499bd9d" + }, + "3.12/i686-pc-windows-msvc/default": { + "filename": "cpython-3.12.13+20260303-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "af220242f3d2bebff6b9a01666895bb7198d7e4be608752f7e4007dd0fddfa22" + }, + "3.12/x86_64-apple-darwin/default": { + "filename": "cpython-3.12.13+20260303-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "8ad52a15de26e67d53f5c14f338433c59d5a2711852adc59043a20ec8da71a52" + }, + "3.12/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.12.13+20260303-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "43990976c8de6b72a7525cb509eedaf869a8dd116167e708af08bca50cd8ef00" + }, + "3.12/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.12.13+20260303-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "4e5ac5a04afc4fe164e92e3844d6dbda03b33baeb62e032b5c9a8198280221e2" + }, + "3.12/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.12.13+20260303-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.12.13", + "sha256": "4099347cfb11427ceb6fe40d1b9f2af9fee3a3a8915df0e439e13dfbe948b91e" + }, + "3.13/aarch64-apple-darwin/default": { + "filename": "cpython-3.13.12+20260303-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "267592285674e21982d84f2cd0b56e13e63ce60c3e85ffb0d67a842edaf5b5e9" + }, + "3.13/aarch64-apple-darwin/freethreaded": { + "filename": "cpython-3.13.12+20260303-aarch64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.12", + "sha256": "d152a8ec3a31a7b49772e70ff7fed1e7f6ec721497151b104532957744703d86" + }, + "3.13/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.13.12+20260303-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "4cb0d143eeaf51582fa8292d00061fc201e41bf3ce5e2de814d0b273f73d4c25" + }, + "3.13/aarch64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.13.12+20260303-aarch64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.13.12", + "sha256": "33e4de818b5419f0b6c599ccfc98a0468c441f83e02d4e0ef18b4a632408dc57" + }, + "3.13/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.13.12+20260303-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "3b88fc6dd6f0290f075353ca860b9dc48faca0d849a0a03c088883507ed63881" + }, + "3.13/aarch64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.13.12+20260303-aarch64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.12", + "sha256": "a2e320b8b7ec76f538f4414bb56927e0a35fb169a4748594b3b0946df0d8942b" + }, + "3.13/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.13.12+20260303-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "c8f2e10261f327b3b9606c23c79788e1c909f0d703c4b06ebd59b318fa271c77" + }, + "3.13/aarch64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.13.12+20260303-aarch64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.13.12", + "sha256": "5c71151ce936e495b0dc49fe3bdd67a9ec332542e2fc250257cd76276481103c" + }, + "3.13/i686-pc-windows-msvc/default": { + "filename": "cpython-3.13.12+20260303-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "202a933d5435eced5e92f474fac9480a82959de2b3ea5555569de9bda6f4af4f" + }, + "3.13/i686-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.13.12+20260303-i686-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.13.12", + "sha256": "e27287866347dd2cc1dc766174bb67f6b459cbadfbeff74c981abe7fe6cf86ba" + }, + "3.13/x86_64-apple-darwin/default": { + "filename": "cpython-3.13.12+20260303-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "07833bcaf50c80065db8a21d7ae0459939d95e3cf399ce8f7df908ddfc4d275f" + }, + "3.13/x86_64-apple-darwin/freethreaded": { + "filename": "cpython-3.13.12+20260303-x86_64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.12", + "sha256": "d603daefc04db99a764942a835497e52beebeb8797f7ac828826969e6f8ea165" + }, + "3.13/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.13.12+20260303-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "61d5f9750e6971cf3bc91a1c8e7ab2eed1c22a34067f0762917bfde12b121f9f" + }, + "3.13/x86_64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.13.12+20260303-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.13.12", + "sha256": "5703d1e5fcd43d0ac3bce24e65d03a5684f3fec3625794ca9a0a47ad2ecbd0a1" + }, + "3.13/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.13.12+20260303-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "ee1d08c3e6149343077d410d7de835a7a7dda8e2cec80df94f393e858a300055" + }, + "3.13/x86_64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.13.12+20260303-x86_64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.13.12", + "sha256": "8f1a00de7342d161bfefcb6bb90f50076b0c49e1ac4d4faa7fb303015369f310" + }, + "3.13/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.13.12+20260303-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.13.12", + "sha256": "36f73e0b72ac670bd56c927a078e3e2ef0b1fef1d89a792088766bf1236815b7" + }, + "3.13/x86_64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.13.12+20260303-x86_64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.13.12", + "sha256": "6bae3d9f3c03448efe7e72aaf7eba1c4af4531ee22964876b36c1569e5123159" + }, + "3.14/aarch64-apple-darwin/default": { + "filename": "cpython-3.14.3+20260303-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "adce81b366416e8d1b95c9c5483607282ae43c98fc155677020d20076d333fec" + }, + "3.14/aarch64-apple-darwin/freethreaded": { + "filename": "cpython-3.14.3+20260303-aarch64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.3", + "sha256": "cedbfdb352b7b0dbdfd2e4dba11244a64665402c44099f36af9e22dc269dd0c0" + }, + "3.14/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.14.3+20260303-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "f64e500abf0ff11b320cba756114caae6ea733c62af1c9516d28d92cf4223d74" + }, + "3.14/aarch64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.14.3+20260303-aarch64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.14.3", + "sha256": "5af1b60808d4e8df3838267086556e2518b24a71080a7c4dc0edf3ef6a5bd8c4" + }, + "3.14/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.14.3+20260303-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "80030e336255241a76cd05c874b70a8840fef24e344907a4ae89f0f6c3c7daf6" + }, + "3.14/aarch64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.14.3+20260303-aarch64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.3", + "sha256": "9ca5169b62fdedbbeb1e01429e5ed75d0c89efb0dffb3d5924c58f667f365863" + }, + "3.14/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.14.3+20260303-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "97b7e0182daf74f884456a4a24cf882d0296092c918939d25ed1e1f4edee0469" + }, + "3.14/aarch64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.14.3+20260303-aarch64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.14.3", + "sha256": "ff4076086f55f83746d680792f8346037060453cf078feba233ba28e4b2a3514" + }, + "3.14/i686-pc-windows-msvc/default": { + "filename": "cpython-3.14.3+20260303-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "d969b1807fe6a3ebe9c1468c55331859d329119951ab01dc6ec5b2853c217a66" + }, + "3.14/i686-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.14.3+20260303-i686-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.14.3", + "sha256": "e3085abf12bdf84a91784915082eaffd4cac154acd9818aefc71a69e13bdaf24" + }, + "3.14/x86_64-apple-darwin/default": { + "filename": "cpython-3.14.3+20260303-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "29469be54c9e471b916f0375f83836811b4df29dc98e0b7452ae9ec483a500a0" + }, + "3.14/x86_64-apple-darwin/freethreaded": { + "filename": "cpython-3.14.3+20260303-x86_64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.3", + "sha256": "ff7ba9353fb4f6f923e5a0c30564e448cb678deb69ac58e7f4f3a78944b40806" + }, + "3.14/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.14.3+20260303-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "201d5c13ee115e029bf6caa6bb17af2bfb3e4a3baf14c7f31e9145e2aa6571ef" + }, + "3.14/x86_64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.14.3+20260303-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.14.3", + "sha256": "7921cf0fa140f3714c4772b8af161ab463d0ad641ac35db0beff9d45273ab5f5" + }, + "3.14/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.14.3+20260303-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "8070ec22c0ea164b826a57102f1bf1fa0b360e143ab3378b3c5eb4178bc0c26b" + }, + "3.14/x86_64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.14.3+20260303-x86_64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.14.3", + "sha256": "0629158c702d4ba732c722f24e5a775885e93915c7b04fe29cfb9c81e37f499f" + }, + "3.14/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.14.3+20260303-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.14.3", + "sha256": "e72b682f652eb8ba71550a7aa4f267ddf3fe06b165a29acd4194dfff0b51ed4e" + }, + "3.14/x86_64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.14.3+20260303-x86_64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.14.3", + "sha256": "dc478897cecef7b6dfcd089b8a425e959885883d123ba4ce3e3ec1fcf5f9637a" + }, + "3.15/aarch64-apple-darwin/default": { + "filename": "cpython-3.15.0a6+20260303-aarch64-apple-darwin-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "7a6bb30a11361b58849ceeaf4d74f4085306f9b00de0c7f4703f9031cbb409ee" + }, + "3.15/aarch64-apple-darwin/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-aarch64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "c2c9679a505c94abb6e0dcbcb1a9ea2148fbcab5b443e9c8efac388e591233a8" + }, + "3.15/aarch64-pc-windows-msvc/default": { + "filename": "cpython-3.15.0a6+20260303-aarch64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "aafd627b816dd83cb9ae670383482f3aa166e8f8910ca946278c5cc22f96bff6" + }, + "3.15/aarch64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-aarch64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "62890d115b54d2456a74db09d3026834faee19ba1be257c287025b0e8ae6ad16" + }, + "3.15/aarch64-unknown-linux-gnu/default": { + "filename": "cpython-3.15.0a6+20260303-aarch64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "bc351efe2ef61f2d6fae1491b0d240f7616a7be28fcdad2d1644ce0429001ad6" + }, + "3.15/aarch64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-aarch64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "93792d31d2232f6bf27e08fbfe6aec221aab1a4aa42463ac879540d399b54bc2" + }, + "3.15/aarch64-unknown-linux-musl/default": { + "filename": "cpython-3.15.0a6+20260303-aarch64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "55fabc3bfa81d6248db65da659c8f728fdfe8aa5dcd9551a5b1eaef09bc05cbd" + }, + "3.15/aarch64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-aarch64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "497bbd7bc486a3092e003761f6a4fb9fd2c9854dea249042b330cb70d2ebf42a" + }, + "3.15/i686-pc-windows-msvc/default": { + "filename": "cpython-3.15.0a6+20260303-i686-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "a49e43ea7971bb975e00f132bd45bc6834177997add3de7a07361a7449a10bda" + }, + "3.15/i686-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-i686-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "4174719f384f3c6893c59e23ea88242c3ab9d84b7fffb9d1ed3a11e9d6a6a068" + }, + "3.15/x86_64-apple-darwin/default": { + "filename": "cpython-3.15.0a6+20260303-x86_64-apple-darwin-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "3c25506d64f6b8e0c38bb66f8430332578a69343c1b27078b7f91d5919f2549a" + }, + "3.15/x86_64-apple-darwin/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-x86_64-apple-darwin-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "cf23826a427d19ea945965ba0e00a210b0cd96c3e7c2741ccf1174c18c37d5a6" + }, + "3.15/x86_64-pc-windows-msvc/default": { + "filename": "cpython-3.15.0a6+20260303-x86_64-pc-windows-msvc-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "42690076ba8f6311b737b884f56217cab7d7287f3374ab8c629fd446913534d6" + }, + "3.15/x86_64-pc-windows-msvc/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "8c3de05f4df81a3b482fd62daa14b7863df2b517a487b75661e37dfee845a4e6" + }, + "3.15/x86_64-unknown-linux-gnu/default": { + "filename": "cpython-3.15.0a6+20260303-x86_64-unknown-linux-gnu-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "ac11f7e619c154e3d9b56186b461f52b4afc583a5524e7109686a7a9e1835b6d" + }, + "3.15/x86_64-unknown-linux-gnu/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-x86_64-unknown-linux-gnu-freethreaded+pgo+lto-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "9d95b1429958effe665c0dd7e2a9b8dfe1364b477637df87ddf372438adfa109" + }, + "3.15/x86_64-unknown-linux-musl/default": { + "filename": "cpython-3.15.0a6+20260303-x86_64-unknown-linux-musl-install_only.tar.gz", + "full_version": "3.15.0a6", + "sha256": "427675a1e0e79051540cce0f1b450ca0d11a8897486aba03796a8881cadf831f" + }, + "3.15/x86_64-unknown-linux-musl/freethreaded": { + "filename": "cpython-3.15.0a6+20260303-x86_64-unknown-linux-musl-freethreaded+lto-full.tar.zst", + "full_version": "3.15.0a6", + "sha256": "2b5d35017190248ebbbf8b24432ec730e496dc68b911308a0cd4c21d8181d090" + } + } + } + } +} diff --git a/e2e/cases/pycross-distutils-probe/BUILD.bazel b/e2e/crossbuild/pycross-distutils-probe/BUILD.bazel similarity index 100% rename from e2e/cases/pycross-distutils-probe/BUILD.bazel rename to e2e/crossbuild/pycross-distutils-probe/BUILD.bazel diff --git a/e2e/cases/pycross-distutils-probe/__test__.py b/e2e/crossbuild/pycross-distutils-probe/__test__.py similarity index 100% rename from e2e/cases/pycross-distutils-probe/__test__.py rename to e2e/crossbuild/pycross-distutils-probe/__test__.py diff --git a/e2e/cases/pycross-distutils-probe/pyproject.toml b/e2e/crossbuild/pycross-distutils-probe/pyproject.toml similarity index 100% rename from e2e/cases/pycross-distutils-probe/pyproject.toml rename to e2e/crossbuild/pycross-distutils-probe/pyproject.toml diff --git a/e2e/cases/pycross-distutils-probe/setup.MODULE.bazel b/e2e/crossbuild/pycross-distutils-probe/setup.MODULE.bazel similarity index 100% rename from e2e/cases/pycross-distutils-probe/setup.MODULE.bazel rename to e2e/crossbuild/pycross-distutils-probe/setup.MODULE.bazel diff --git a/e2e/cases/pycross-distutils-probe/uv.lock b/e2e/crossbuild/pycross-distutils-probe/uv.lock similarity index 100% rename from e2e/cases/pycross-distutils-probe/uv.lock rename to e2e/crossbuild/pycross-distutils-probe/uv.lock diff --git a/e2e/cases/pycross-patches/BUILD.bazel b/e2e/crossbuild/pycross-patches/BUILD.bazel similarity index 100% rename from e2e/cases/pycross-patches/BUILD.bazel rename to e2e/crossbuild/pycross-patches/BUILD.bazel diff --git a/e2e/cases/pycross-patches/patches/setproctitle-postinstall.patch b/e2e/crossbuild/pycross-patches/patches/setproctitle-postinstall.patch similarity index 100% rename from e2e/cases/pycross-patches/patches/setproctitle-postinstall.patch rename to e2e/crossbuild/pycross-patches/patches/setproctitle-postinstall.patch diff --git a/e2e/cases/pycross-patches/patches/setproctitle-prebuild.patch b/e2e/crossbuild/pycross-patches/patches/setproctitle-prebuild.patch similarity index 100% rename from e2e/cases/pycross-patches/patches/setproctitle-prebuild.patch rename to e2e/crossbuild/pycross-patches/patches/setproctitle-prebuild.patch diff --git a/e2e/cases/pycross-patches/pyproject.toml b/e2e/crossbuild/pycross-patches/pyproject.toml similarity index 100% rename from e2e/cases/pycross-patches/pyproject.toml rename to e2e/crossbuild/pycross-patches/pyproject.toml diff --git a/e2e/cases/pycross-patches/setup.MODULE.bazel b/e2e/crossbuild/pycross-patches/setup.MODULE.bazel similarity index 100% rename from e2e/cases/pycross-patches/setup.MODULE.bazel rename to e2e/crossbuild/pycross-patches/setup.MODULE.bazel diff --git a/e2e/cases/pycross-patches/test_setproctitle_patched.py b/e2e/crossbuild/pycross-patches/test_setproctitle_patched.py similarity index 100% rename from e2e/cases/pycross-patches/test_setproctitle_patched.py rename to e2e/crossbuild/pycross-patches/test_setproctitle_patched.py diff --git a/e2e/cases/pycross-patches/uv.lock b/e2e/crossbuild/pycross-patches/uv.lock similarity index 100% rename from e2e/cases/pycross-patches/uv.lock rename to e2e/crossbuild/pycross-patches/uv.lock diff --git a/e2e/cases/pycross-pure-python/BUILD.bazel b/e2e/crossbuild/pycross-pure-python/BUILD.bazel similarity index 100% rename from e2e/cases/pycross-pure-python/BUILD.bazel rename to e2e/crossbuild/pycross-pure-python/BUILD.bazel diff --git a/e2e/cases/pycross-pure-python/pyproject.toml b/e2e/crossbuild/pycross-pure-python/pyproject.toml similarity index 100% rename from e2e/cases/pycross-pure-python/pyproject.toml rename to e2e/crossbuild/pycross-pure-python/pyproject.toml diff --git a/e2e/cases/pycross-pure-python/setup.MODULE.bazel b/e2e/crossbuild/pycross-pure-python/setup.MODULE.bazel similarity index 100% rename from e2e/cases/pycross-pure-python/setup.MODULE.bazel rename to e2e/crossbuild/pycross-pure-python/setup.MODULE.bazel diff --git a/e2e/cases/pycross-pure-python/test_filelock.py b/e2e/crossbuild/pycross-pure-python/test_filelock.py similarity index 100% rename from e2e/cases/pycross-pure-python/test_filelock.py rename to e2e/crossbuild/pycross-pure-python/test_filelock.py diff --git a/e2e/cases/pycross-pure-python/test_pyproject_metadata.py b/e2e/crossbuild/pycross-pure-python/test_pyproject_metadata.py similarity index 100% rename from e2e/cases/pycross-pure-python/test_pyproject_metadata.py rename to e2e/crossbuild/pycross-pure-python/test_pyproject_metadata.py diff --git a/e2e/cases/pycross-pure-python/test_tomli.py b/e2e/crossbuild/pycross-pure-python/test_tomli.py similarity index 100% rename from e2e/cases/pycross-pure-python/test_tomli.py rename to e2e/crossbuild/pycross-pure-python/test_tomli.py diff --git a/e2e/cases/pycross-pure-python/test_top_level_packages.py b/e2e/crossbuild/pycross-pure-python/test_top_level_packages.py similarity index 100% rename from e2e/cases/pycross-pure-python/test_top_level_packages.py rename to e2e/crossbuild/pycross-pure-python/test_top_level_packages.py diff --git a/e2e/cases/pycross-pure-python/uv.lock b/e2e/crossbuild/pycross-pure-python/uv.lock similarity index 100% rename from e2e/cases/pycross-pure-python/uv.lock rename to e2e/crossbuild/pycross-pure-python/uv.lock diff --git a/e2e/cases/pycross-setuptools/BUILD.bazel b/e2e/crossbuild/pycross-setuptools/BUILD.bazel similarity index 100% rename from e2e/cases/pycross-setuptools/BUILD.bazel rename to e2e/crossbuild/pycross-setuptools/BUILD.bazel diff --git a/e2e/cases/pycross-setuptools/pyproject.toml b/e2e/crossbuild/pycross-setuptools/pyproject.toml similarity index 100% rename from e2e/cases/pycross-setuptools/pyproject.toml rename to e2e/crossbuild/pycross-setuptools/pyproject.toml diff --git a/e2e/cases/pycross-setuptools/require_extension.patch b/e2e/crossbuild/pycross-setuptools/require_extension.patch similarity index 100% rename from e2e/cases/pycross-setuptools/require_extension.patch rename to e2e/crossbuild/pycross-setuptools/require_extension.patch diff --git a/e2e/cases/pycross-setuptools/setup.MODULE.bazel b/e2e/crossbuild/pycross-setuptools/setup.MODULE.bazel similarity index 100% rename from e2e/cases/pycross-setuptools/setup.MODULE.bazel rename to e2e/crossbuild/pycross-setuptools/setup.MODULE.bazel diff --git a/e2e/cases/pycross-setuptools/test_pyyaml.py b/e2e/crossbuild/pycross-setuptools/test_pyyaml.py similarity index 100% rename from e2e/cases/pycross-setuptools/test_pyyaml.py rename to e2e/crossbuild/pycross-setuptools/test_pyyaml.py diff --git a/e2e/cases/pycross-setuptools/test_setproctitle.py b/e2e/crossbuild/pycross-setuptools/test_setproctitle.py similarity index 100% rename from e2e/cases/pycross-setuptools/test_setproctitle.py rename to e2e/crossbuild/pycross-setuptools/test_setproctitle.py diff --git a/e2e/cases/pycross-setuptools/test_zstandard.py b/e2e/crossbuild/pycross-setuptools/test_zstandard.py similarity index 100% rename from e2e/cases/pycross-setuptools/test_zstandard.py rename to e2e/crossbuild/pycross-setuptools/test_zstandard.py diff --git a/e2e/cases/pycross-setuptools/uv.lock b/e2e/crossbuild/pycross-setuptools/uv.lock similarity index 100% rename from e2e/cases/pycross-setuptools/uv.lock rename to e2e/crossbuild/pycross-setuptools/uv.lock diff --git a/e2e/crossbuild/tools/BUILD.bazel b/e2e/crossbuild/tools/BUILD.bazel new file mode 100644 index 000000000..2fc7add18 --- /dev/null +++ b/e2e/crossbuild/tools/BUILD.bazel @@ -0,0 +1,16 @@ +# Shared helpers consumed by //... via load("//tools:..."). + +load("@aspect_rules_py//py:defs.bzl", "py_binary") + +# Consumed cross-package by the `collect_wheels` macro (//tools:collect_wheels.bzl), +# which declares a py_test with this script as `main` in the caller's package. +exports_files([ + "check_wheel_tags.py", +]) + +py_binary( + name = "collect_wheels_tool", + srcs = ["collect_wheels.py"], + main = "collect_wheels.py", + visibility = ["//visibility:public"], +) diff --git a/e2e/cases/tools/check_wheel_tags.py b/e2e/crossbuild/tools/check_wheel_tags.py similarity index 100% rename from e2e/cases/tools/check_wheel_tags.py rename to e2e/crossbuild/tools/check_wheel_tags.py diff --git a/e2e/cases/tools/collect_wheels.bzl b/e2e/crossbuild/tools/collect_wheels.bzl similarity index 100% rename from e2e/cases/tools/collect_wheels.bzl rename to e2e/crossbuild/tools/collect_wheels.bzl diff --git a/e2e/cases/tools/collect_wheels.py b/e2e/crossbuild/tools/collect_wheels.py similarity index 100% rename from e2e/cases/tools/collect_wheels.py rename to e2e/crossbuild/tools/collect_wheels.py