)]}'
{
  "commit": "a19e1e41a609dd10ae6cdc49d76eb1f119145d2e",
  "tree": "d718d19be6ffde581dfbf0eebdc3e797922805ab",
  "parents": [
    "cc46fb26d629b9e440371861f031cb2a85fd9c55"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Sun Apr 20 19:17:59 2025 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Apr 20 10:17:59 2025 +0000"
  },
  "message": "fix: load target_platforms through the hub (#2781)\n\nThis PR moves the parsing of `Requires-Dist` to the loading phase\nwithin the `whl_library_targets_from_requires` macro. The original\n`whl_library_targets` macro has been left unchanged so that I don\u0027t have\nto reinvent the unit tests - it is well covered under tests.\n\nBefore this PR we had to wire the `target_platforms` via the\n`experimental_target_platforms` attr in the `whl_library`, which means\nthat whenever this would change (e.g. the minor Python version changes),\nthe wheel would be re-extracted even though the final result may be the\nsame.\n\nThis refactor uncovered that the dependency graph creation was incorrect\nif we had multiple target Python versions due to various heuristics that\nthis had. In hindsight I had them to make the generated `BUILD.bazel`\nfiles more readable when the unit test coverage was not great. Now this\nis unnecessary and since everything is happening in Starlark I thought\nthat having a simpler algorithm that does the right thing always is the\nbest way.\n\nThis also cleans up the code by removing left over TODO notes or code\nthat no longer make sense.\n\nWork towards #260, #2319",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cad074e6a6b277a0430bf2a003ac434aebb483d3",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "154b66114bdb4e4a1cd83d7f289cb84627a32139",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "config.bzl.tmpl.bzlmod"
    },
    {
      "type": "modify",
      "old_id": "7297238cb4306f5d7795aafe574ad9fb8798a4b3",
      "old_mode": 33188,
      "old_path": "python/private/pypi/BUILD.bazel",
      "new_id": "a758b3f153bac854908679bfe622ce8cc8d4468c",
      "new_mode": 33188,
      "new_path": "python/private/pypi/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9d88c1e32c9dc880d51bbede24fa1798b2b0275e",
      "old_mode": 33188,
      "old_path": "python/private/pypi/attrs.bzl",
      "new_id": "fe35d8bf7d3da5ec8b0b48582d0c6aee9ffbe8ff",
      "new_mode": 33188,
      "new_path": "python/private/pypi/attrs.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "deb53631d118b4cbc46f52a6588c6883794a4cc3",
      "new_mode": 33188,
      "new_path": "python/private/pypi/config.bzl.tmpl.bzlmod"
    },
    {
      "type": "modify",
      "old_id": "68776e32d07522c57a6840f53d59d8549a8ffde4",
      "old_mode": 33188,
      "old_path": "python/private/pypi/extension.bzl",
      "new_id": "d1895ca2116c3744919a80493874bf93edb2ff7e",
      "new_mode": 33188,
      "new_path": "python/private/pypi/extension.bzl"
    },
    {
      "type": "modify",
      "old_id": "8050cd22ad221d7478e3d8586f5e0fa54f7fc57f",
      "old_mode": 33188,
      "old_path": "python/private/pypi/generate_whl_library_build_bazel.bzl",
      "new_id": "7988aca1c4855e10a3ec2d068c8e563b11307f05",
      "new_mode": 33188,
      "new_path": "python/private/pypi/generate_whl_library_build_bazel.bzl"
    },
    {
      "type": "modify",
      "old_id": "48245b41068f5ea398610789b1d2b017dbcf6019",
      "old_mode": 33188,
      "old_path": "python/private/pypi/hub_repository.bzl",
      "new_id": "d2cbf88c24b5d965d44b07df234734802812a636",
      "new_mode": 33188,
      "new_path": "python/private/pypi/hub_repository.bzl"
    },
    {
      "type": "delete",
      "old_id": "e74352def2ee5bec510986d8aa338c0b91fa34c9",
      "old_mode": 33188,
      "old_path": "python/private/pypi/pep508.bzl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "af0a75362b50db9f96e0d7654c8f6ae4e0a9c5e5",
      "old_mode": 33188,
      "old_path": "python/private/pypi/pep508_deps.bzl",
      "new_id": "115bbd78d8fa07f93222f28f255be600fddc0d55",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pep508_deps.bzl"
    },
    {
      "type": "modify",
      "old_id": "ee7b5dfc351b45388f6af051dfffd889474dbefa",
      "old_mode": 33188,
      "old_path": "python/private/pypi/pep508_requirement.bzl",
      "new_id": "b5be17f890f3bc7775240fc7f459e3f367883943",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pep508_requirement.bzl"
    },
    {
      "type": "modify",
      "old_id": "0a580011ab959d4f729cc2a5d1af3fa3ea02b8c9",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_library.bzl",
      "new_id": "630dc8519ffb78ab87bf83087c9bc16c8b87c887",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "d32746b60408a4aeec8dad97a6a632ef71bc4a78",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_library_targets.bzl",
      "new_id": "cf3df133c495d338b7a5fd2dad904194dd2a7e66",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_library_targets.bzl"
    },
    {
      "type": "modify",
      "old_id": "4d86d6a6e0773dcb070496bf05baf9bd8206f53a",
      "old_mode": 33188,
      "old_path": "tests/pypi/extension/extension_tests.bzl",
      "new_id": "ce5474e35bd9742401c11a5ca8dd18b4be34d16a",
      "new_mode": 33188,
      "new_path": "tests/pypi/extension/extension_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "b0d8f6d17e142abfbbe2d14bdbdf65545c60f94a",
      "old_mode": 33188,
      "old_path": "tests/pypi/generate_whl_library_build_bazel/generate_whl_library_build_bazel_tests.bzl",
      "new_id": "7bd19b65c179d8edc662c22167e7f395a452900b",
      "new_mode": 33188,
      "new_path": "tests/pypi/generate_whl_library_build_bazel/generate_whl_library_build_bazel_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "44031ab6a5bed3b922fe4903b773e0a1cf938488",
      "old_mode": 33188,
      "old_path": "tests/pypi/pep508/deps_tests.bzl",
      "new_id": "d36292508096324be195c9583f257173a27b5d05",
      "new_mode": 33188,
      "new_path": "tests/pypi/pep508/deps_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "f738e03b5d30110f4649c1f75f446c1d2745bb62",
      "old_mode": 33188,
      "old_path": "tests/pypi/whl_library_targets/whl_library_targets_tests.bzl",
      "new_id": "61e54410501289139ea5ab5fe78271b8cf1fbc64",
      "new_mode": 33188,
      "new_path": "tests/pypi/whl_library_targets/whl_library_targets_tests.bzl"
    }
  ]
}
