)]}'
{
  "commit": "36c342ab1f36a4cda09cd7b1baf8f38c4f1ba6d6",
  "tree": "c8a1e0a6135b473d025811aa39823875791ca656",
  "parents": [
    "76704f642cf0c5bec2062ffebd3479545287622d"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Wed Aug 12 00:36:12 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 12 00:36:12 2026 -0700"
  },
  "message": "fix(pypi): rewrite RECORD file entries for extracted .data contents (#4025)\n\nExtracting wheels with .data/ subdirectories moves files to their\ntarget directories and deletes .data/, but left .dist-info/RECORD\nreferencing deleted .data/ paths. This causes tools like\nimportlib.metadata.files() to fail locating or reading files.\n\nPer PEP 427 and PEP 376, rewrite .dist-info/RECORD entries during\nwheel extraction to match installed locations relative to\nsite-packages.\n\n* Also adds Starlark unit tests for RECORD rewriting and expands\n  importlib_metadata_test.\n\nWork towards #3024",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "80e81333f6565f190926bc68cbca10c40415d970",
      "new_mode": 33188,
      "new_path": "news/4025.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "5909d8872bb1061f803fd3ef283206341dead0eb",
      "old_mode": 33188,
      "old_path": "python/private/attributes.bzl",
      "new_id": "e1e77cba032d6fde9af39d5f7b2acb94358ce635",
      "new_mode": 33188,
      "new_path": "python/private/attributes.bzl"
    },
    {
      "type": "modify",
      "old_id": "bb84ff9280c48afe5045a6d5358352e861d626cc",
      "old_mode": 33188,
      "old_path": "python/private/pypi/BUILD.bazel",
      "new_id": "3c07135d40f1886db069f2b40c0c8cea8f50709c",
      "new_mode": 33188,
      "new_path": "python/private/pypi/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6dd211f7763a6cc51d73cb47707e563cfe0c1d9a",
      "new_mode": 33188,
      "new_path": "python/private/pypi/gen_wheel_record.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "60dd0eca112900b5c9981f0939bddb08bcd01342",
      "new_mode": 33188,
      "new_path": "python/private/pypi/wheel_record_rewriter.ps1"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "10189435e1c4bab3dded30499ab0d87034d9dd62",
      "new_mode": 33261,
      "new_path": "python/private/pypi/wheel_record_rewriter.sh"
    },
    {
      "type": "modify",
      "old_id": "0d61b9a07bac5641b479145e743b5ad392b14c62",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_extract.bzl",
      "new_id": "d7195fd681b6cd0634e0ca7c5864e5147ad90e4a",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_extract.bzl"
    },
    {
      "type": "modify",
      "old_id": "ee5c781b3d213b3e8a7edde3e7bb06461b473b23",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_library_targets.bzl",
      "new_id": "b7fdbd55e9a598681f897e25b56230acdd4ee6ca",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_library_targets.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3983477f2be877e43605ab3ed2e5a9c898bb6a06",
      "new_mode": 33188,
      "new_path": "tests/pypi/whl_extract/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c5880520ad807d1f62414f9525a881ae7f7f6de1",
      "new_mode": 33261,
      "new_path": "tests/pypi/whl_extract/wheel_record_rewriter_test.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f7e1e6d2cff97f967fdd41570cc7478125c79b7f",
      "new_mode": 33188,
      "new_path": "tests/pypi/whl_extract/whl_extract_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "d752159b32ede4bfab93319bd81ed3d41b90bf5b",
      "old_mode": 33188,
      "old_path": "tests/pypi/whl_library_targets/whl_library_targets_tests.bzl",
      "new_id": "3fe1b997689a154014dd9b81264d34a837e79dba",
      "new_mode": 33188,
      "new_path": "tests/pypi/whl_library_targets/whl_library_targets_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "963d43b6e02c20d0fbbb80342a9d5db069bcbb0d",
      "old_mode": 33188,
      "old_path": "tests/venv_site_packages_libs/importlib_metadata_test.py",
      "new_id": "eb16a6b6afc1cb754e9bd932cde6ca0fdba8a53a",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/importlib_metadata_test.py"
    }
  ]
}
