)]}'
{
  "commit": "c0e18edeef38837ad9f6122ce75eb2f01ad3a842",
  "tree": "d33fbe841bf3d44551e72579c2c7c1d1919ecbcd",
  "parents": [
    "327b4e368b1b905d1b379a0592e89250e70a34c6"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Fri Oct 20 09:35:37 2023 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Oct 20 00:35:37 2023 +0000"
  },
  "message": "feat(bzlmod): support patching \u0027whl\u0027 distributions (#1393)\n\nBefore that the users had to rely on patching the actual wheel files and\nuploading them as different versions to internal artifact stores if they\nneeded to modify the wheel dependencies. This is very common when\nbreaking dependency cycles in `pytorch` or `apache-airflow` packages.\nWith this feature we can support patching external PyPI dependencies via\npip.override tag class to fix package dependencies and/or a broken\n`RECORD` metadata file.\n\nOverall design:\n* Split the `whl_installer` CLI into two parts - downloading and\nextracting.\n  Merged in #1487.\n* Add a starlark function which extracts the downloaded wheel applies\npatches\n  and repackages a wheel (so that the extraction part works as before).\n* Add a `override` tag_class to the `pip` extension and allow users to\npass patches\n  to be applied to specific wheel files.\n* Only the root module is allowed to apply patches. This is to avoid far\naway modules\nmodifying the code of other modules and conflicts between modules and\ntheir patches.\n\nPatches have to be in `unified-diff` format.\n\nRelated #1076, #1166, #1120",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "67f29733a54b3a6161cad6a1a505648e0f011b14",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "2935f2782da60f8a59962db1bb3f7d2956fe428a",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "modify",
      "old_id": "5540bae1a63ae83cd7839876bd102cbb630c508a",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "62a372d233f56bcdd4967128faa06086f1b3fe22",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "0d1c7a736be71ed1ba137b5ccb6708286d0d55d4",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/MODULE.bazel",
      "new_id": "5824280ed1d33c13d2c5798ab14ede5dd118f3ed",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/MODULE.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ed2af796bba8803be01c34ffa77ca701fb93cf6c",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/patches/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/patches/empty.patch"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3a52410d2229bb970c69574ebe70d2c2f814d8d3",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/patches/requests_metadata.patch"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "01675103b8bf90ed74082d81d692957361b997e9",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/patches/requests_record.patch"
    },
    {
      "type": "modify",
      "old_id": "7a9f3a2fd39078017ba2b05856eb3cec0521a2cf",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/whl_mods/appended_build_content.BUILD",
      "new_id": "0ca118d7b68e0833521f966684c9cf28d8ca8bb0",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/whl_mods/appended_build_content.BUILD"
    },
    {
      "type": "modify",
      "old_id": "415990515dfc539bdb2c059b569db7233def4e17",
      "old_mode": 33188,
      "old_path": "python/pip_install/BUILD.bazel",
      "new_id": "4304fb536534ce6aec185c0959bc9269b6ab8aa8",
      "new_mode": 33188,
      "new_path": "python/pip_install/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "207c47a9203c7858d6c9ba5fd1ee80d21b44de17",
      "old_mode": 33188,
      "old_path": "python/pip_install/pip_repository.bzl",
      "new_id": "f9d367676dbfd067c0aaa97e43ccaf39197adb12",
      "new_mode": 33188,
      "new_path": "python/pip_install/pip_repository.bzl"
    },
    {
      "type": "modify",
      "old_id": "e342d907579c3dc0ff2412c06545690551877d85",
      "old_mode": 33188,
      "old_path": "python/pip_install/private/srcs.bzl",
      "new_id": "e92e49fc5f858a223f0b8e0dfb8a7d125e1fc807",
      "new_mode": 33188,
      "new_path": "python/pip_install/private/srcs.bzl"
    },
    {
      "type": "modify",
      "old_id": "438859433c51edb3fc8b4437866b43d86047fbb5",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "d5b170e5b99e26697452bc5456176d461cee8d03",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "3630648f1e217a27d7ed4e9fcfffd73264a6ecb4",
      "old_mode": 33188,
      "old_path": "python/private/bzlmod/pip.bzl",
      "new_id": "166f2134bae299e7b4562bf10a14c551516e0e1f",
      "new_mode": 33188,
      "new_path": "python/private/bzlmod/pip.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9c7866eb9ec3f0cf48d59b3bcf5fc88a88e80cf5",
      "new_mode": 33188,
      "new_path": "python/private/parse_whl_name.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "24b8a0b565a17a2651aa60543f09c83aa708097c",
      "new_mode": 33188,
      "new_path": "python/private/patch_whl.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "074e30db74c7389b700d4d7f7c4ffaecde215138",
      "new_mode": 33188,
      "new_path": "python/private/repack_whl.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c2fb36574882826f5533f0a6af523436977498ad",
      "new_mode": 33188,
      "new_path": "tests/private/parse_whl_name/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c249f9fb1a03d2fc62901abffa4a55ce804ba75d",
      "new_mode": 33188,
      "new_path": "tests/private/parse_whl_name/parse_whl_name_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "b051564cf2e44cd6400d19db64bfcc3400f07b2e",
      "old_mode": 33188,
      "old_path": "tools/wheelmaker.py",
      "new_id": "66e86fbf55c1e98bf41ded8a6fc7f29fe7188a3a",
      "new_mode": 33188,
      "new_path": "tools/wheelmaker.py"
    }
  ]
}
