)]}'
{
  "commit": "300c11d3fa2ebd878cebd5575930c25d3a2fc2eb",
  "tree": "9db6f1fe1d563d5537921f15b5c5368010db7ccc",
  "parents": [
    "711b314bb5809d1ef801b86df9e217052c69f2c6"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Wed Oct 21 04:38:43 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Oct 21 04:38:43 2026 +0000"
  },
  "message": "refactor(toolchains): configure prebuilt and from-source tool toolchains (#4280)\n\nConfigure prebuilt tool binaries when consuming a release archive, and\nbuild\ntools from source when developing rules_python or overriding with a git\ncommit. For now, using these prebuilt binaries are disabled for release\narchives.\n\nTo make this work, MODULE.bazel has a boolean that decides whether\nrules_rust et al are dev dependencies. By default, they are not dev\ndependencies. This default is chosen so that sub-modules for\ntesting use the from-source toolchains and that using non-release\ncommits also use the from-source toolchains. When creating the\nrelease archive, this value is rewritten to make them dev dependencies.\nThis means release archives can\u0027t use from-source toolchains unless\nthey patch MODULE.bazel (and likely more), but this seems like\na reasonable trade-off for complexity vs configurability.\n\nThe cargo lock files are required because rules_rust forces non-dev\ndependencies of it to provide such lock files.\n\nWork towards #4216\nWork towards #4250",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "91df1167e1f9c326be0f47f2b1c0c7b21b092e07",
      "old_mode": 33261,
      "old_path": ".github/workflows/create_archive_and_notes.sh",
      "new_id": "2dc9b22a8b150ec0aded0c5fbcc72f5ffcc0ba57",
      "new_mode": 33261,
      "new_path": ".github/workflows/create_archive_and_notes.sh"
    },
    {
      "type": "modify",
      "old_id": "1c0984f9dfd609330c8fa8025fcd216e99a1996a",
      "old_mode": 33188,
      "old_path": "BUILD.bazel",
      "new_id": "1e555d5123a836aa3b7ecf83bf3419fda9653fb4",
      "new_mode": 33188,
      "new_path": "BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "3ab771a840f0782c5d6e80415cdbd0cee3815bbf",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "d21e779bf857b632a11584b60e951185577d106f",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "06af896c5cbb06a52782c47df0d32fe2dfd73164",
      "new_mode": 33188,
      "new_path": "crates/Cargo.Bazel.lock"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fbd5c9c3a0a71443ed0f5ba134614ea2e04c8425",
      "new_mode": 33188,
      "new_path": "crates/Cargo.lock"
    },
    {
      "type": "delete",
      "old_id": "b713295f994f072a920a533fc654be39ff319e2d",
      "old_mode": 33188,
      "old_path": "dev/dev_only_toolchains/BUILD.bazel",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "881dd74314df682f132ec8fcdffdfc6aa15718bd",
      "old_mode": 33188,
      "old_path": "dev/dev_only_toolchains/impls/BUILD.bazel",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "c6c5af236dc79c3b985fcbfb413cef891aa39afe",
      "old_mode": 33261,
      "old_path": "dev/release_artifacts/generate_artifacts_manifest.py",
      "new_id": "99aab4d938a26f1909c44c57a0f42f5ef8bd7197",
      "new_mode": 33261,
      "new_path": "dev/release_artifacts/generate_artifacts_manifest.py"
    },
    {
      "type": "modify",
      "old_id": "95bd7c1f00a4051cbc26f2b751c2382a5afab1af",
      "old_mode": 33188,
      "old_path": "python/extensions/BUILD.bazel",
      "new_id": "8ba881232f544170a2b16568ce9ba44eecdc0550",
      "new_mode": 33188,
      "new_path": "python/extensions/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e4456360e4603a954aeb8d5ac754c61e9053a69a",
      "old_mode": 33188,
      "old_path": "python/extensions/config.bzl",
      "new_id": "63d0a6eefb9a19c4fb844aa873468dfb94ae4d57",
      "new_mode": 33188,
      "new_path": "python/extensions/config.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0416886e31e085b5d82e496a12c8ae56d92fdb06",
      "new_mode": 33188,
      "new_path": "python/private/artifacts_manifest.json"
    },
    {
      "type": "modify",
      "old_id": "0630eb5c2fa0947790fe9857a0644eab049e666e",
      "old_mode": 33188,
      "old_path": "python/private/internal_config_repo.bzl",
      "new_id": "8f203bb89e0da98ad1d5759ab3fc40f107e1dea0",
      "new_mode": 33188,
      "new_path": "python/private/internal_config_repo.bzl"
    },
    {
      "type": "modify",
      "old_id": "eedf66009d90d8b87640e666ee35897db43567a4",
      "old_mode": 33188,
      "old_path": "python/private/text_util.bzl",
      "new_id": "6c7a4b305ec41683773f3db347ff5c7ffcfacdb9",
      "new_mode": 33188,
      "new_path": "python/private/text_util.bzl"
    },
    {
      "type": "modify",
      "old_id": "b223730374ddac2b32a1c7ccf6b7e3c8eb06aa98",
      "old_mode": 33188,
      "old_path": "python/private/toolchain_types/BUILD.bazel",
      "new_id": "a3066bf954b86e899c677fb6a23ff189c952a615",
      "new_mode": 33188,
      "new_path": "python/private/toolchain_types/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3587baab5d62aef740b35a82bfda35f06f03e202",
      "new_mode": 33188,
      "new_path": "python/private/toolchains/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bbb52ec7a399f84f99f6e023182e50bf098a08e6",
      "new_mode": 33188,
      "new_path": "python/private/toolchains/from_source/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "05bc5c1cbe0e62a9a5dbc2cf0de7b1f745d910a7",
      "new_mode": 33188,
      "new_path": "python/private/toolchains/repo.bzl"
    },
    {
      "type": "modify",
      "old_id": "bcf019bfa9cf1bce4dfd632e4e164bcc9d36a036",
      "old_mode": 33188,
      "old_path": "tests/exe_zip_maker_toolchain/exe_zip_maker_toolchain_tests.bzl",
      "new_id": "ed235fb7f477b692965672f1c41defd4907c9b2e",
      "new_mode": 33188,
      "new_path": "tests/exe_zip_maker_toolchain/exe_zip_maker_toolchain_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "b06891f154ac2f18df194bd03c36a070fccb2d93",
      "old_mode": 33188,
      "old_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock",
      "new_id": "b3480a57bf77187013ce891369bc5327afadad58",
      "new_mode": 33188,
      "new_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock"
    },
    {
      "type": "modify",
      "old_id": "6c79b1f4ff6f15978df9cd100a354f08e48ffb88",
      "old_mode": 33188,
      "old_path": "tests/support/mocks/mocks.bzl",
      "new_id": "b7c721e48793873aa867edf8632125b728f52ef7",
      "new_mode": 33188,
      "new_path": "tests/support/mocks/mocks.bzl"
    },
    {
      "type": "modify",
      "old_id": "1dc495b342a738c4b3090ef66c58cac81060ac9c",
      "old_mode": 33188,
      "old_path": "tests/support/mocks/mocks_tests.bzl",
      "new_id": "2e4c340f49b02979878afe46887dc55d4342f441",
      "new_mode": 33188,
      "new_path": "tests/support/mocks/mocks_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "b3f46d08a363e6161ebf6267936f69e860f119a7",
      "old_mode": 33188,
      "old_path": "tests/workflows/BUILD.bazel",
      "new_id": "ab5573a2494b4d049e950c58eedc0b468df1ba3c",
      "new_mode": 33188,
      "new_path": "tests/workflows/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "c49672b74b8b3267938d58608a31bea75aa2fbc8",
      "old_mode": 33188,
      "old_path": "tests/workflows/release_artifacts_test.py",
      "new_id": "f81164590fb38c472ac339cfe1549ae1cba8362a",
      "new_mode": 33188,
      "new_path": "tests/workflows/release_artifacts_test.py"
    },
    {
      "type": "modify",
      "old_id": "c3306b2baca129701a826a173b05717c32043559",
      "old_mode": 33188,
      "old_path": "tests/workflows/release_build_artifacts_test.py",
      "new_id": "93bdd7ce133036f202850477b9b39dd637690b66",
      "new_mode": 33188,
      "new_path": "tests/workflows/release_build_artifacts_test.py"
    }
  ]
}
