)]}'
{
  "commit": "14f436ff28c457fd2e136c0a5f4c46e75268806a",
  "tree": "2192e58cb3bc4630670c788e993c853114e43056",
  "parents": [
    "ced38c374ef96aa30ced9846ca09b5ed783cc1f2"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Sep 07 07:55:28 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Sep 07 07:55:28 2026 +0000"
  },
  "message": "refactor: introduce helper for defining distribution filegroups (#4152)\n\nPreviously, distribution filegroups required manually enumerating each\ndirect subpackage\u0027s distribution target in `srcs`. This created\nrepetitive boilerplate across BUILD files and risked omitting newly\nadded subpackages from release distributions.\n\nIntroduce the `distribution_filegroup` macro to automatically glob\npackage files and discover direct subpackages using\n`native.subpackages()`, with support for an `exclude` list.\n\n* Also updates BUILD files across the repository to use the new macro",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "15c22f360bd98aa9bfd26a8c150202e9ed8519b6",
      "old_mode": 33188,
      "old_path": "command_line_option/BUILD.bazel",
      "new_id": "088a8177299e6f2f74b74c98664ea4cdb4ee907d",
      "new_mode": 33188,
      "new_path": "command_line_option/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a4dd98c5727c9587c6380260d740aeaae149fae9",
      "old_mode": 33188,
      "old_path": "python/BUILD.bazel",
      "new_id": "f2fb827658ff3db7e491791c55a687532634a787",
      "new_mode": 33188,
      "new_path": "python/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "93c70f4c8beabd2d0851a5ac0bf781337c3ba88e",
      "old_mode": 33188,
      "old_path": "python/api/BUILD.bazel",
      "new_id": "8ef51e554f29988358ceb99bf9ee9c3dc4dae552",
      "new_mode": 33188,
      "new_path": "python/api/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "30af7d1b9fa98713fddcc5ddff1c96c46b48e904",
      "old_mode": 33188,
      "old_path": "python/bin/BUILD.bazel",
      "new_id": "91ad9c2875a728018ea8e57dea8c27035389f466",
      "new_mode": 33188,
      "new_path": "python/bin/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "2fa03dcb5a0105c2324a0fd0eeb1cac7b5e13e2e",
      "old_mode": 33188,
      "old_path": "python/cc/BUILD.bazel",
      "new_id": "8df3d55189fd5f9942751008d4d3afd62f772950",
      "new_mode": 33188,
      "new_path": "python/cc/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "5eb0eafc94a069f7fc1fe318ee9e6bcf26248b8b",
      "old_mode": 33188,
      "old_path": "python/config_settings/BUILD.bazel",
      "new_id": "a540d1dc3c8a22f2d63adb314c55a57aeaa4e3ce",
      "new_mode": 33188,
      "new_path": "python/config_settings/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "969c8678d3ef450ffb083d7facc8f8e14c81da11",
      "old_mode": 33188,
      "old_path": "python/constraints/BUILD.bazel",
      "new_id": "dba6c0c216172bd21332f84b16aad481292fbdc9",
      "new_mode": 33188,
      "new_path": "python/constraints/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "7cfd0cdf25101088e88c0fedfe763c9475de8bf5",
      "old_mode": 33188,
      "old_path": "python/entry_points/BUILD.bazel",
      "new_id": "509a9671d9e9edb338e5725da7091befae4199a9",
      "new_mode": 33188,
      "new_path": "python/entry_points/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "af18fa15b7469c486b1130c04b56bc73a75bc14a",
      "old_mode": 33188,
      "old_path": "python/extensions/BUILD.bazel",
      "new_id": "95bd7c1f00a4051cbc26f2b751c2382a5afab1af",
      "new_mode": 33188,
      "new_path": "python/extensions/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "256dffb3377bbd5fa9418fdba1a593eccc1af990",
      "old_mode": 33188,
      "old_path": "python/local_toolchains/BUILD.bazel",
      "new_id": "f5870ba706de7ee12b01c7b633da6d899086b343",
      "new_mode": 33188,
      "new_path": "python/local_toolchains/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b3c1ab1c032935504e5758778432e37266cfc050",
      "old_mode": 33188,
      "old_path": "python/pip_install/BUILD.bazel",
      "new_id": "d259734142437cd8c3bd82ba289e853bc34c8aae",
      "new_mode": 33188,
      "new_path": "python/pip_install/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9e4313d1f823afa61ddef804fc2b3aa0fa827074",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "b4ff84f14a302ebb27884d020182a1cb5d9f4396",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "cd7eda1bd24bf66e4468bb35f493221f65b45252",
      "old_mode": 33188,
      "old_path": "python/private/api/BUILD.bazel",
      "new_id": "7c48e35782e114a0923c96424e12434ed80a1395",
      "new_mode": 33188,
      "new_path": "python/private/api/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "087d40693254952c5db7b84f11d4cb8a78e4e977",
      "old_mode": 33188,
      "old_path": "python/private/cc/BUILD.bazel",
      "new_id": "8aef1303008f860b464a7f2d3399943e58b2ce67",
      "new_mode": 33188,
      "new_path": "python/private/cc/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b02cee6abae8833536f713150c3bf0da9da9ae84",
      "new_mode": 33188,
      "new_path": "python/private/distribution_filegroup.bzl"
    },
    {
      "type": "modify",
      "old_id": "eb87c6371719936d6b7aff845d4b4bf2ab97785e",
      "old_mode": 33188,
      "old_path": "python/private/pypi/BUILD.bazel",
      "new_id": "96b68e7796684cb11573e4f934f8fc04abf5877e",
      "new_mode": 33188,
      "new_path": "python/private/pypi/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9531b5555226ff2ab3c0b8e0a8f3e5a76eca2728",
      "old_mode": 33188,
      "old_path": "python/private/pypi/dependency_resolver/BUILD.bazel",
      "new_id": "ade6472a4e43857bb3b88a81fb17e7c4871c4829",
      "new_mode": 33188,
      "new_path": "python/private/pypi/dependency_resolver/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "python/private/pypi/requirements_parser/BUILD.bazel",
      "new_id": "59d178b4945a24b6a810591ced6628c70fffab8f",
      "new_mode": 33188,
      "new_path": "python/private/pypi/requirements_parser/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1912b34af8bbea830eeb2f78e7ba82a97dab679d",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_installer/BUILD.bazel",
      "new_id": "ae7d957334b10da253988ecbb901b885c3572a0e",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_installer/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4d0a09631127533359a712494896e0ee01c6ef7e",
      "old_mode": 33188,
      "old_path": "python/private/whl_filegroup/BUILD.bazel",
      "new_id": "13ad2adac524d308a4f18fb20398b4cced127c56",
      "new_mode": 33188,
      "new_path": "python/private/whl_filegroup/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "66f0b4f667717839b26a5472d11668ef85704afb",
      "old_mode": 33188,
      "old_path": "python/private/zipapp/BUILD.bazel",
      "new_id": "395e1d242ac88f6982fd3427a705c5aacf0252c5",
      "new_mode": 33188,
      "new_path": "python/private/zipapp/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4d5a92a93fc2afb7dfb3469dd08c1478b567ec02",
      "old_mode": 33188,
      "old_path": "python/proto/BUILD.bazel",
      "new_id": "71d70425dd86a91e3c7bad82a6446602b1f77c82",
      "new_mode": 33188,
      "new_path": "python/proto/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "73663472dc9ee8a71b8c946910b34463929b4e53",
      "old_mode": 33188,
      "old_path": "python/runfiles/BUILD.bazel",
      "new_id": "0c9e74a66ea7f2b409c5996ab468a50d4a149ceb",
      "new_mode": 33188,
      "new_path": "python/runfiles/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "5001d12556fea344317db13af563fcbb357149cb",
      "old_mode": 33188,
      "old_path": "python/runtime_env_toolchains/BUILD.bazel",
      "new_id": "5086f0a7c4ad20a58ab41318103de9a25f008e65",
      "new_mode": 33188,
      "new_path": "python/runtime_env_toolchains/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "93aefbfbd7eb7c5735864e614e50dfc9e62ead63",
      "old_mode": 33188,
      "old_path": "python/uv/BUILD.bazel",
      "new_id": "054c243fc338d04bfbf7aa641c1001f89c58715c",
      "new_mode": 33188,
      "new_path": "python/uv/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e1d520408eeb36757051f47e75d021f11a71551e",
      "old_mode": 33188,
      "old_path": "python/uv/private/BUILD.bazel",
      "new_id": "e10741948c966b42efe3e7de1bb4b46fe40bacd8",
      "new_mode": 33188,
      "new_path": "python/uv/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "77a8752701038315e4075689bd1edf77dc17477e",
      "old_mode": 33188,
      "old_path": "python/zipapp/BUILD.bazel",
      "new_id": "d8f8eeb92179bd7557ef6ba1d6ae30ad120e2714",
      "new_mode": 33188,
      "new_path": "python/zipapp/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c2174ef30b60ab4b414c753dc9993898ea337adb",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a69c0feac9815fe47cecb849931d858109a5a0c9",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/child.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b00c0f0cffc504dda276aaf3b3ec583a7a87242b",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/distribution_filegroup_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ea10ec85c10797d76afeef56f8bfc26da40913bb",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/dummy.ignored"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e1e71d5ce34c01b6fe83bc5051545f2918c8c2b",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/f1.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9de77c18733ab8009a956c25e28c85fe203a17d7",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/f2.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7ca68bfb6487de42c1095ec8a675f0e5b6f57010",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/subpkg/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d8fc28d60e02f9dbe0aeb88d130aa73d34a5ef37",
      "new_mode": 33188,
      "new_path": "tests/distribution_filegroup/subpkg/subfile.txt"
    },
    {
      "type": "modify",
      "old_id": "aa75c661932bf9aa2cade3352793593bf350a6f3",
      "old_mode": 33188,
      "old_path": "tools/BUILD.bazel",
      "new_id": "90026d4bbd3b26050d80b8b2a14b78e82e90600e",
      "new_mode": 33188,
      "new_path": "tools/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7ca68bfb6487de42c1095ec8a675f0e5b6f57010",
      "new_mode": 33188,
      "new_path": "tools/build_defs/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "aa21042e2511f728f17cfae619bb8e6dd23737eb",
      "old_mode": 33188,
      "old_path": "tools/build_defs/python/BUILD.bazel",
      "new_id": "05d6e3c254f5509255b9bdaa22a0faace51ea76f",
      "new_mode": 33188,
      "new_path": "tools/build_defs/python/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e189b18880b03ecc1d06af0155910ee736550daa",
      "old_mode": 33188,
      "old_path": "tools/build_defs/python/private/BUILD.bazel",
      "new_id": "bba2984e2c15945fcaa4b9077c1fc45284966776",
      "new_mode": 33188,
      "new_path": "tools/build_defs/python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "aa4610671b607f05e3fa57838b5833c7fab00982",
      "old_mode": 33188,
      "old_path": "tools/launcher/BUILD.bazel",
      "new_id": "f00fcfef26fd0e7ee7b3c056ebccb9c2c1db19a9",
      "new_mode": 33188,
      "new_path": "tools/launcher/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e055980c72e6220045ae9a9641bfaf85b636cb05",
      "old_mode": 33188,
      "old_path": "tools/precompiler/BUILD.bazel",
      "new_id": "153d52ac8e5bd1e7fe839b951f6276f0c5049376",
      "new_mode": 33188,
      "new_path": "tools/precompiler/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "93b44b376607220424f45d5acd28185e8a25bdcb",
      "old_mode": 33188,
      "old_path": "tools/publish/BUILD.bazel",
      "new_id": "d24d30b1172b771f00d1763cae838b00263abe33",
      "new_mode": 33188,
      "new_path": "tools/publish/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "45bd126c6e1c25ad3ae6af5a92df81b3e06299d3",
      "old_mode": 33188,
      "old_path": "tools/zipapp/BUILD.bazel",
      "new_id": "9bc5faea67d8e260ecbd1c7189813f3a7157cc1a",
      "new_mode": 33188,
      "new_path": "tools/zipapp/BUILD.bazel"
    }
  ]
}
