)]}'
{
  "commit": "e5faa243e2e61163b9e4240ebd2a5632049c9566",
  "tree": "d95805c8e3320c616066dec38ae0174521570b3f",
  "parents": [
    "c90ceb94da9d91ba41f4e5ad4d1e528ed6e97890"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Wed Sep 02 17:42:20 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Sep 02 17:42:20 2026 +0000"
  },
  "message": "refactor: move tools/private/zipapp to tools/zipapp (#4127)\n\nThe `//tools/private` package is reserved for developer tools used to\nmaintain `rules_python`. The zipapp tools support rule execution and\nbelong under `//tools/` alongside tools like `launcher`.\n\nMove `tools/private/zipapp` to `tools/zipapp`, update internal rule\nattributes, adjust test imports and dependencies, update distribution\nfilegroups, and document the scope of `//tools/private`.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "368a785686547272dda2ee188f24fa962991b808",
      "old_mode": 33188,
      "old_path": "python/private/py_executable.bzl",
      "new_id": "d6f01193ea91a445de4221d304ed9e23d9b91fde",
      "new_mode": 33188,
      "new_path": "python/private/py_executable.bzl"
    },
    {
      "type": "modify",
      "old_id": "7e11b06b1b47ba6586b134c512fe3117cb25f96c",
      "old_mode": 33188,
      "old_path": "python/private/zipapp/py_zipapp_rule.bzl",
      "new_id": "b664c1f62805568282d07eb42526d37a0a138d31",
      "new_mode": 33188,
      "new_path": "python/private/zipapp/py_zipapp_rule.bzl"
    },
    {
      "type": "modify",
      "old_id": "97c8096ce994b3fa4995c022525fe2f4dc9dbc35",
      "old_mode": 33188,
      "old_path": "tests/tools/zipapp/BUILD.bazel",
      "new_id": "7943e4065f802663c5fa5ba9501b58d9ebd62ed8",
      "new_mode": 33188,
      "new_path": "tests/tools/zipapp/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "97df258e92634d3050fa427d808a3e8792715a8f",
      "old_mode": 33188,
      "old_path": "tests/tools/zipapp/exe_zip_maker_test.py",
      "new_id": "625701400b300d25c95200e93321748c222e2c5b",
      "new_mode": 33188,
      "new_path": "tests/tools/zipapp/exe_zip_maker_test.py"
    },
    {
      "type": "modify",
      "old_id": "5c7f57c5900e6d2f7e8c94258f1cbe8d23149532",
      "old_mode": 33188,
      "old_path": "tests/tools/zipapp/zip_main_maker_test.py",
      "new_id": "c27ff88e33ab57559f934d51a8280fc3bf6efcba",
      "new_mode": 33188,
      "new_path": "tests/tools/zipapp/zip_main_maker_test.py"
    },
    {
      "type": "modify",
      "old_id": "bbd85b6536c45061824f8da1ef9456a26a6d65b6",
      "old_mode": 33188,
      "old_path": "tests/tools/zipapp/zipper_test.py",
      "new_id": "e4f25c5e2185fa0580361ecd5c3fe6ae2fdb9250",
      "new_mode": 33188,
      "new_path": "tests/tools/zipapp/zipper_test.py"
    },
    {
      "type": "modify",
      "old_id": "7829b33318275a0b527cb59883fb9091f5ffd837",
      "old_mode": 33188,
      "old_path": "tools/BUILD.bazel",
      "new_id": "aa75c661932bf9aa2cade3352793593bf350a6f3",
      "new_mode": 33188,
      "new_path": "tools/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "ae6951c24521f2ec1f0360b8cf8d5b24d1b9acea",
      "old_mode": 33188,
      "old_path": "tools/private/BUILD.bazel",
      "new_id": "b395b2c54161251e0a6ed3fa4b2ed8face48a557",
      "new_mode": 33188,
      "new_path": "tools/private/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "19b174e35c0810f543c113c09d1ab15cfb0b0198",
      "new_mode": 33188,
      "new_path": "tools/private/README.md"
    },
    {
      "type": "rename",
      "old_id": "45bd126c6e1c25ad3ae6af5a92df81b3e06299d3",
      "old_mode": 33188,
      "old_path": "tools/private/zipapp/BUILD.bazel",
      "new_id": "45bd126c6e1c25ad3ae6af5a92df81b3e06299d3",
      "new_mode": 33188,
      "new_path": "tools/zipapp/BUILD.bazel",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "29391c86da3367a082970b168f3ad0dae042fb6a",
      "old_mode": 33188,
      "old_path": "tools/private/zipapp/exe_zip_maker.py",
      "new_id": "29391c86da3367a082970b168f3ad0dae042fb6a",
      "new_mode": 33188,
      "new_path": "tools/zipapp/exe_zip_maker.py",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "ae112ffc662e953280c734e825f693e7bc66f1ef",
      "old_mode": 33188,
      "old_path": "tools/private/zipapp/zip_main_maker.py",
      "new_id": "ae112ffc662e953280c734e825f693e7bc66f1ef",
      "new_mode": 33188,
      "new_path": "tools/zipapp/zip_main_maker.py",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "5a8eb8c6fdfa125dd456d7cb4854fee5988fd3d1",
      "old_mode": 33188,
      "old_path": "tools/private/zipapp/zipper.py",
      "new_id": "5a8eb8c6fdfa125dd456d7cb4854fee5988fd3d1",
      "new_mode": 33188,
      "new_path": "tools/zipapp/zipper.py",
      "score": 100
    }
  ]
}
