)]}'
{
  "commit": "42c8e752e4f236b7fa0e88d77b751ea663f939d2",
  "tree": "ae8ae540136bd67a2ee38ddb03323bb960f7c664",
  "parents": [
    "c0fef4677ab0be33b76cd394af5e56002e8a114f"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Tue Jun 09 02:55:45 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 09 09:55:45 2026 +0000"
  },
  "message": "feat(toolchains): support runtime registration from manifest (#3802)\n\nCurrently, all supported Python runtime versions and their\nplatform-specific metadata (URLs, SHA256s, strip_prefix) must be\nhardcoded in `python/versions.bzl`. This makes it slow and difficult\nto adopt new Python versions or custom builds without updating\n`rules_python` itself.\n\nThis PR introduces the ability to dynamically fetch and register\nPython runtimes from a remote python-build-standalone (PBS) manifest\nfile (e.g., `SHA256SUMS`).\n\nThis is supported via two new attributes in `python.override`:\n- `add_runtime_manifest_urls`: A list of URLs pointing to manifest\n  files  to parse and register.\n- `runtime_manifest_sha`: The SHA256 hash of the manifest file.\n\nThe manifest file format is the python-build-standalone SHA256SUMS\nformat (`SHA FILENAME`), extended to allow arbitrary URLs for the\nfilename (to allow more arbitrary locations).",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7256937a87c12033cffed30101695ef385f46b49",
      "old_mode": 33188,
      "old_path": ".bazelrc.deleted_packages",
      "new_id": "407fd1cb48ee766dac42d0e9b7afd72e3ce10900",
      "new_mode": 33188,
      "new_path": ".bazelrc.deleted_packages"
    },
    {
      "type": "modify",
      "old_id": "99876bde0ddfc3cd4240053e563ff2dce255053d",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "43e05b6dd0094b147d2be727d0ae206db5eb3cc2",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "09aaed412b42874cabb14dbc51e055b8bf63277f",
      "old_mode": 33188,
      "old_path": "docs/toolchains.md",
      "new_id": "80884baedfe51929e73dccea119202a8998823f1",
      "new_mode": 33188,
      "new_path": "docs/toolchains.md"
    },
    {
      "type": "modify",
      "old_id": "6ab3d546bebce429f10bc16b3ee9fe7a38d43209",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "b54c198069ceae230535bb5cc52ce4dbe2406afa",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e343a802b302afab49d6af76a3e83b6101c31ff3",
      "new_mode": 33188,
      "new_path": "python/private/pbs_manifest.bzl"
    },
    {
      "type": "modify",
      "old_id": "6abc81e3d21590e6e1a37e680f4afdcc7cbf0b09",
      "old_mode": 33188,
      "old_path": "python/private/python.bzl",
      "new_id": "73b2d19839fe9bc421f8869d6f3d99ca0ece475f",
      "new_mode": 33188,
      "new_path": "python/private/python.bzl"
    },
    {
      "type": "modify",
      "old_id": "a6027fc3d4a0cb97406d058ce9fc6b15a6e17cfb",
      "old_mode": 33188,
      "old_path": "tests/integration/BUILD.bazel",
      "new_id": "904fb4c24702008fa15c708b614c2f2923f48455",
      "new_mode": 33188,
      "new_path": "tests/integration/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d4d45a5ea77b74ef4b2a1437d3b3c34360310ce1",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4746fd419b4a20d0ed1027d4407e06b0fa5f1a6e",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6891b078186dd95cbff8e6bcc96a18078530427d",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/MODULE.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8277ec809093e78aabdcf7acdc5fadfd19aaf899",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/WORKSPACE"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "35f0e93b6e5e60a26b76abc042caff4bab084176",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/basic_test.py"
    },
    {
      "type": "modify",
      "old_id": "2553536b636069b1dadd3b5cf9b58dd89b35efae",
      "old_mode": 33188,
      "old_path": "tests/python/BUILD.bazel",
      "new_id": "887fe969b5c106bbdd173f45b8d0415750329907",
      "new_mode": 33188,
      "new_path": "tests/python/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "5db74265be11eb689740b9af0c563405766a4af1",
      "old_mode": 33188,
      "old_path": "tests/python/python_tests.bzl",
      "new_id": "cd7383942c0ff0c0080b6e135b7c92ab4eeaa6d9",
      "new_mode": 33188,
      "new_path": "tests/python/python_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0add4e7690dff30570da0bd6379ca35c3bcd447c",
      "new_mode": 33188,
      "new_path": "tests/python_bzlmod_ext/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4ddcdcc46e96afb6c8666c0d5f551934db61cf26",
      "new_mode": 33188,
      "new_path": "tests/python_bzlmod_ext/parse_sha_manifest_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c46cab1958d54337af10b201234b877c37a1728b",
      "new_mode": 33188,
      "new_path": "tests/python_bzlmod_ext/runtime_manifests_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f6c177650a19c000ed44b02b7c37cd67e60f7068",
      "new_mode": 33188,
      "new_path": "tests/python_bzlmod_ext/test_helpers.bzl"
    },
    {
      "type": "modify",
      "old_id": "f20a6c72631fc1f4845462bc9b9ce7b2d1dc04c0",
      "old_mode": 33188,
      "old_path": "tests/support/mocks/python_ext.bzl",
      "new_id": "f7b5b0ee02538d0f4a2caf665ef039743816166a",
      "new_mode": 33188,
      "new_path": "tests/support/mocks/python_ext.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1694dc975c696f2b007d985ae4eb9174769f2bb2",
      "new_mode": 33261,
      "new_path": "tools/private/debug/print_defined_toolchains.sh"
    }
  ]
}
