)]}'
{
  "commit": "46537cf32f8bf722a6be805821cb2ee17d7b936a",
  "tree": "124d297eab5e08600274404579898d21f8064706",
  "parents": [
    "ccea92a3ad6f9204a172d306a6b1c4cb18e41cee"
  ],
  "author": {
    "name": "Chris Love",
    "email": "335402+chrislovecnm@users.noreply.github.com",
    "time": "Mon May 15 16:04:40 2023 -0600"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon May 15 22:04:40 2023 +0000"
  },
  "message": "feat(bzlmod)!: Move each bzlmod extension into its own file (#1226)\n\nThis commit refactors the files that contain the bzlmod\nextensions.\n\n- All extensions are moved under the new extensions folder\n- Private extensions are moved under extensions/private\n- All extension files are renamed to remove the _extension suffix\n- pip and internal_deps extensions are moved to their own file\n\nThis commit organizes the extensions better and also follows the\nbest practice of having a single extension per file. Having each\nextension in its own file allows them to use some additional features\nwhile helping avoid backwards incompatible changes.\n\n## BREAKING CHANGES\n\nThis splits `//python:extensions.bzl`, which previously held the\n`python`\nand `pip` extensions, into separate files (`python.bzl` and `pip.bzl`,\nrespectively). Unfortunately, moving the location of the extensions is a\nbreaking change due to how bzlmod extension identity works (see\nhttps://bazel.build/external/extension#extension_identity). Fortunately,\nby moving to one extension per file, we shouldn\u0027t have to ever do this\nagain.\n\nUsers must update the file path in their `use_repo()` statements as\nfollows:\n\n* `use_extension(\"@rules_python//python:extensions.bzl\", \"python\")` -\u003e\n`use_extension(\"@rules_python//python/extensions:python.bzl\", \"python\")`\n* `use_extension(\"@rules_python//python:extensions.bzl\", \"pip\")` -\u003e\n`use_extension(\"@rules_python//python/extensions:pip.bzl\", \"pip\")`\n\nThe following `sed` commands should approximate the necessary changes:\n\n```\nsed \u0027sXuse_extension(\"@rules_python//python:extensions.bzl\", \"python\")Xuse_extension(\"@rules_python//python/extensions:python.bzl\", \"python\")X\u0027`\nsed \u0027sXuse_extension(\"@rules_python//python:extensions.bzl\", \"pip\")Xuse_extension(\"@rules_python//python/extensions:pip.bzl\", \"pip\")X\u0027`\n\n```\n\nSee `examples/bzlmod_build_file_generation/MODULE.bazel` for an example\nof the new paths.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e490beb73c6e2bbea1f10e72f2ab1bf40b1632aa",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "ddd946c78a165472d6fa8aaaf450e6e6736170c9",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "ce9122810c0aa2d3b794706488d072146a947974",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/MODULE.bazel",
      "new_id": "61d7967d5e6ab229e491c3260355440bb7750910",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "d59fbb3cea138d0169f924828333de114aa71ccc",
      "old_mode": 33188,
      "old_path": "examples/bzlmod_build_file_generation/MODULE.bazel",
      "new_id": "179fe1bdea72c6e7096e2cf6408a619382b114d7",
      "new_mode": 33188,
      "new_path": "examples/bzlmod_build_file_generation/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "5ce0924a99852426ca246554a027f12ac02ff7dc",
      "old_mode": 33188,
      "old_path": "examples/py_proto_library/MODULE.bazel",
      "new_id": "6fb1a05548a1373d8cf4b24ebc07131fc8f30ecb",
      "new_mode": 33188,
      "new_path": "examples/py_proto_library/MODULE.bazel"
    },
    {
      "type": "delete",
      "old_id": "ce110693ee7f5e8a086ddc65411976075cb5c34c",
      "old_mode": 33188,
      "old_path": "python/extensions.bzl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7f6873d581ac3288bccf1253669e2bf019eab225",
      "new_mode": 33188,
      "new_path": "python/extensions/BUILD.bazel"
    },
    {
      "type": "rename",
      "old_id": "b9afe1abdaf5b550b56a21b819735674f8757c93",
      "old_mode": 33188,
      "old_path": "python/interpreter_extension.bzl",
      "new_id": "b9afe1abdaf5b550b56a21b819735674f8757c93",
      "new_mode": 33188,
      "new_path": "python/extensions/interpreter.bzl",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2ec2bbf404a2583c4d43312b4db04e3128793711",
      "new_mode": 33188,
      "new_path": "python/extensions/pip.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f367b71a78244897270583a243f5d81d674913ec",
      "new_mode": 33188,
      "new_path": "python/extensions/private/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dfa3e2682f17a6eb09aa0e5ee0eb4929514582db",
      "new_mode": 33188,
      "new_path": "python/extensions/private/internal_deps.bzl"
    },
    {
      "type": "rename",
      "old_id": "f1ca670cf21df1ee3c08ad4c32ace6f1d52abd15",
      "old_mode": 33188,
      "old_path": "python/private/interpreter_hub.bzl",
      "new_id": "f1ca670cf21df1ee3c08ad4c32ace6f1d52abd15",
      "new_mode": 33188,
      "new_path": "python/extensions/private/interpreter_hub.bzl",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9a3d9ed95986ae6e85a17641a5ab08ab8ce32a9d",
      "new_mode": 33188,
      "new_path": "python/extensions/python.bzl"
    }
  ]
}
