)]}'
{
  "commit": "60c61e51646f610e7886d6bc1eaddb154f80ad44",
  "tree": "84284f343ca576563161135e3971fac580d4ed7c",
  "parents": [
    "693a1587baf055979493565933f8f40225c00c6d"
  ],
  "author": {
    "name": "Chris Love",
    "email": "335402+chrislovecnm@users.noreply.github.com",
    "time": "Fri May 26 14:20:35 2023 -0600"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri May 26 20:20:35 2023 +0000"
  },
  "message": "feat(bzlmod): Allowing multiple python.toolchain extension calls (#1230)\n\nWe do this work for two reasons.\n\nFirst, we must support Module dependencies and sub-modules using\n`python.toolchain`. There are already two known instances of sub-modules\nsetting up a Python toolchain and colliding with another module\n(nanobind and rules_testing both run into this).\n\nSecond, the upcoming multi-version support is going to work by having\neach `python.toolchain()` call register its particular version with the\nextra toolchain constraint. This also helps unify the version-aware and\nnon-version-aware code paths (the non-version aware paths are just\nversion-aware with a single version registered as the default)\n\nThis commit implements various business logic in the toolchain class.\n\nToolchains in Sub Modules\n\nIt will create a toolchain in a sub-module if the toolchain\nof the same name does not exist in the root module. The extension stops\nname\nclashing between toolchains in the root module and sub-modules.\nYou cannot configure more than one toolchain as the default toolchain.\n\nToolchain set as the default version.\n\nThis extension will not create a toolchain in a sub-module\nif the sub-module toolchain is marked as the default version. If you\nhave\nmore than one toolchain in your root module, you need to set one of the\ntoolchains as the default version.  If there is only one toolchain, it\nis set as the default toolchain.\n\nSee #1229 for more information",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b8c233f98c3e5b89a70556b4c482b1ed6817dd73",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/.bazelrc",
      "new_id": "6f557e67b98dbe1a62419716a1f8aa4d560b5747",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/.bazelrc"
    },
    {
      "type": "modify",
      "old_id": "e1f5790631f0c392afff96bb79d9de8eadcb36c7",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/BUILD.bazel",
      "new_id": "86498226f9f419e2d1a543f91bdb180e67e93b11",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "145cebd2768285927c43ad7357c5a0d88ab27466",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/MODULE.bazel",
      "new_id": "bb4183bde2e5aaf11302453ca058730c0110d5b8",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "099493b3c8a49e134e1d57e0badded8bfc68f471",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/__main__.py",
      "new_id": "daf17495c203d9a4a5c1304e932320f6e511eb7a",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/__main__.py"
    },
    {
      "type": "modify",
      "old_id": "992e120760e4e00da0f692c63007072973b065f5",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/other_module/MODULE.bazel",
      "new_id": "eebfbcaa58aba69c1ca40582b3190821258fed62",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "9a130e35547752363d2cd6a21eb4fac6b909da3c",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/other_module/other_module/pkg/BUILD.bazel",
      "new_id": "952a674d48f514f1ab818bb6cd1ad44a5640b377",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/other_module/pkg/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "3503ac3017eee42533f08d573c2672fe30ca577a",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/runfiles/BUILD.bazel",
      "new_id": "add56b3bd06888a19852669737199174ce9c34b5",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/runfiles/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "c667f1e49b6f652d91fec01125cb54cae4ea5bf3",
      "old_mode": 33188,
      "old_path": "examples/bzlmod_build_file_generation/BUILD.bazel",
      "new_id": "05a15cce2841668cf17a5ef345b2c1326db76c8c",
      "new_mode": 33188,
      "new_path": "examples/bzlmod_build_file_generation/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "179fe1bdea72c6e7096e2cf6408a619382b114d7",
      "old_mode": 33188,
      "old_path": "examples/bzlmod_build_file_generation/MODULE.bazel",
      "new_id": "45a1318ac8be8dd9d3bf4bd4afa2a3cc524abec1",
      "new_mode": 33188,
      "new_path": "examples/bzlmod_build_file_generation/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "f1ca670cf21df1ee3c08ad4c32ace6f1d52abd15",
      "old_mode": 33188,
      "old_path": "python/extensions/private/interpreter_hub.bzl",
      "new_id": "82fcbf698fe9b0dcbbadccda5a2601c0072eb607",
      "new_mode": 33188,
      "new_path": "python/extensions/private/interpreter_hub.bzl"
    },
    {
      "type": "modify",
      "old_id": "9a3d9ed95986ae6e85a17641a5ab08ab8ce32a9d",
      "old_mode": 33188,
      "old_path": "python/extensions/python.bzl",
      "new_id": "cae1988e8a83b1ad7fe4b032ab3fe1cc80a9f160",
      "new_mode": 33188,
      "new_path": "python/extensions/python.bzl"
    },
    {
      "type": "modify",
      "old_id": "358df4341bef0bc570c7ccc7c4086fa15d32ba84",
      "old_mode": 33188,
      "old_path": "python/repositories.bzl",
      "new_id": "4f36b12a1402b5e2446be83ce132932f9ca67c94",
      "new_mode": 33188,
      "new_path": "python/repositories.bzl"
    }
  ]
}
