)]}'
{
  "commit": "b401c751370993171ee6122e1711b1c198405f80",
  "tree": "b6199e2528b7c07268c91d8a7811ee3f8e4d10e6",
  "parents": [
    "233913fbec1d6646cf1fe702cb0fec562bc8572e"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Aug 10 23:29:28 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Aug 11 06:29:28 2026 +0000"
  },
  "message": "build(pyrefly): enable Pyrefly static type checking across Python targets (#4020)\n\nEnables Pyrefly static type checking across Python source and test\ntargets in rules_python and sphinxdocs.\n\nPreviously, static type analysis was not uniformly applied across\nall Python targets, leaving potential type inconsistencies and\nunbound variable edge cases uncaught during builds and CI runs.\n\nThis change configures the global Pyrefly aspect to evaluate Python\ntargets by default in Bzlmod mode, adds type annotations and\nnarrowing assertions on runfiles resolution, and annotates dynamic\nimports (such as generated protobuf stubs and compiled C extensions)\nwith explicit type ignore comments. Targets utilizing dynamically\ngenerated bootstrap wrappers retain opt-out tags with documented\nrationales.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d683152814f2ebd37534c1fd241e44e5ab0f7776",
      "old_mode": 33188,
      "old_path": ".agents/rules/python.md",
      "new_id": "c149130fe2c6550dc10d4607804575f172da568f",
      "new_mode": 33188,
      "new_path": ".agents/rules/python.md"
    },
    {
      "type": "modify",
      "old_id": "661a427cc788ce561af88c836cf6d1c3635f400b",
      "old_mode": 33188,
      "old_path": ".agents/skills/analyze-ci-failure/scripts/analyze_ci_failure.py",
      "new_id": "5708f6d1c2a4a543532b2fb0f1521981085e461c",
      "new_mode": 33261,
      "new_path": ".agents/skills/analyze-ci-failure/scripts/analyze_ci_failure.py"
    },
    {
      "type": "modify",
      "old_id": "90f3bc8fdbd24443d4705a1d0c6ab76e04a4cab1",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "cd419614529fd0476dd4964c34d83e69a1ce8a93",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "modify",
      "old_id": "199a366675c27207543de5f627e4ceb59253030f",
      "old_mode": 33188,
      "old_path": "docs/howto/debuggers.md",
      "new_id": "2fd8dada573d708672de67df7b275f21038f98d7",
      "new_mode": 33188,
      "new_path": "docs/howto/debuggers.md"
    },
    {
      "type": "modify",
      "old_id": "37b4f69811809cc50cd2b96d9fe25d0a0d78a716",
      "old_mode": 33188,
      "old_path": "examples/wheel/main.py",
      "new_id": "5b221542c3b940067e23239f4d556442301fb861",
      "new_mode": 33188,
      "new_path": "examples/wheel/main.py"
    },
    {
      "type": "modify",
      "old_id": "4b69f3a5d03dd6dd7e765e59a1aa5598fceb0981",
      "old_mode": 33188,
      "old_path": "examples/wheel/private/directory_writer.py",
      "new_id": "d2297124cff60abc25445974c04329295d83a5e0",
      "new_mode": 33188,
      "new_path": "examples/wheel/private/directory_writer.py"
    },
    {
      "type": "modify",
      "old_id": "8dcad4213884248037c69357ea80f154674e67fa",
      "old_mode": 33188,
      "old_path": "examples/wheel/wheel_test.py",
      "new_id": "d289cb7c8a1f657971870df056ef2e12d2a1579d",
      "new_mode": 33188,
      "new_path": "examples/wheel/wheel_test.py"
    },
    {
      "type": "modify",
      "old_id": "858cf810b9db10d9e29962a6bfdf50bdf368ade7",
      "old_mode": 33188,
      "old_path": "python/bin/repl_stub.py",
      "new_id": "bb08ab2f8712542ba96a04a1988332524fb17d56",
      "new_mode": 33188,
      "new_path": "python/bin/repl_stub.py"
    },
    {
      "type": "modify",
      "old_id": "2be986f732cee66fcac8594efc6715cf8cc3cd09",
      "old_mode": 33188,
      "old_path": "python/private/py_console_script_gen.py",
      "new_id": "887441c50360989c045189b9805acf6c6bd03d63",
      "new_mode": 33188,
      "new_path": "python/private/py_console_script_gen.py"
    },
    {
      "type": "modify",
      "old_id": "e3849c5f578af2f4aad2403c0db05f56c25c74d5",
      "old_mode": 33188,
      "old_path": "python/private/py_test_main_validator.py",
      "new_id": "e66bf6849e86bf3fb398f8c5b4e1dba7debd37aa",
      "new_mode": 33188,
      "new_path": "python/private/py_test_main_validator.py"
    },
    {
      "type": "modify",
      "old_id": "34f2fb1e5adcc41912d5e6c04d0c1cac9ce7e6ba",
      "old_mode": 33188,
      "old_path": "python/private/pypi/dependency_resolver/dependency_resolver.py",
      "new_id": "2b24625c33f392c744f74498c80a934ec8c4e4c9",
      "new_mode": 33188,
      "new_path": "python/private/pypi/dependency_resolver/dependency_resolver.py"
    },
    {
      "type": "modify",
      "old_id": "8471c94ffef939ac8b7665e037a02b8a91bc6a18",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_installer/arguments.py",
      "new_id": "e6f5989c5dc7dba740d78f71816d76ed96ed1d21",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_installer/arguments.py"
    },
    {
      "type": "modify",
      "old_id": "dd8beb978421ef65689e1447843a82c02108c67d",
      "old_mode": 33188,
      "old_path": "python/private/repl_template.py",
      "new_id": "8a6a62ca1acf9cde2adef42933d64ecac2e2b3db",
      "new_mode": 33188,
      "new_path": "python/private/repl_template.py"
    },
    {
      "type": "modify",
      "old_id": "4e119eddbe0deb2466362304e913df90832e7ee2",
      "old_mode": 33188,
      "old_path": "python/runfiles/BUILD.bazel",
      "new_id": "73663472dc9ee8a71b8c946910b34463929b4e53",
      "new_mode": 33188,
      "new_path": "python/runfiles/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "02fceb302038efc6df0756fa68c157178299db1a",
      "old_mode": 33188,
      "old_path": "python/runfiles/runfiles.py",
      "new_id": "af87b544375d9127799f4b3c13ac96a9a57d836a",
      "new_mode": 33188,
      "new_path": "python/runfiles/runfiles.py"
    },
    {
      "type": "modify",
      "old_id": "ce4d782113421f8551cba908ccbd3b1148427a98",
      "old_mode": 33188,
      "old_path": "sphinxdocs/.bazelrc",
      "new_id": "6989c2656a8c447a0fb68df9752c86cae1524c30",
      "new_mode": 33188,
      "new_path": "sphinxdocs/.bazelrc"
    },
    {
      "type": "modify",
      "old_id": "51de5e94f9fbbf2cefcab53513b71bf68c5dc24d",
      "old_mode": 33188,
      "old_path": "sphinxdocs/MODULE.bazel",
      "new_id": "c1f06ccb50a2afa85e32493318f931e252c39038",
      "new_mode": 33188,
      "new_path": "sphinxdocs/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "cab9730bb88c3c26283ee3ede0cad38ff11f6b57",
      "old_mode": 33188,
      "old_path": "sphinxdocs/integration_tests/runner.py",
      "new_id": "c7cc753e93870e8297d83687b56ed9e4fdd026e8",
      "new_mode": 33188,
      "new_path": "sphinxdocs/integration_tests/runner.py"
    },
    {
      "type": "modify",
      "old_id": "05278a5c027724e8f53c2c5075c13ba6a9c121e1",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinxdocs/private/proto_to_markdown.py",
      "new_id": "aeecc359f7b87b49ac96813791e57cd5f00fc6cd",
      "new_mode": 33188,
      "new_path": "sphinxdocs/sphinxdocs/private/proto_to_markdown.py"
    },
    {
      "type": "modify",
      "old_id": "52a334d9b9c8a5bb4e888a6af183307f65156e58",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinxdocs/private/sphinx_build.py",
      "new_id": "f20fbd676ae05373f7e7c62e08e0067fbe1f94bd",
      "new_mode": 33188,
      "new_path": "sphinxdocs/sphinxdocs/private/sphinx_build.py"
    },
    {
      "type": "modify",
      "old_id": "c115737ba5e3d297ed956f974bd1e869b72f326c",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinxdocs/src/sphinx_bzl/bzl.py",
      "new_id": "9cef0cce67ba44a65c801d256e1c08177b738a2b",
      "new_mode": 33188,
      "new_path": "sphinxdocs/sphinxdocs/src/sphinx_bzl/bzl.py"
    },
    {
      "type": "modify",
      "old_id": "632d6d946fede3d907688e0d817ebbe147614d8f",
      "old_mode": 33188,
      "old_path": "sphinxdocs/tests/proto_to_markdown/BUILD.bazel",
      "new_id": "e1c358773c45f269f3bfc41098c77a7a0d2535dc",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/proto_to_markdown/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "d88d2bf12724ff3ca08e2c8f821f4919a29a3a55",
      "old_mode": 33188,
      "old_path": "sphinxdocs/tests/proto_to_markdown/proto_to_markdown_test.py",
      "new_id": "753e8f7659b79ae0edb3af5bee6cf60de73985a9",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/proto_to_markdown/proto_to_markdown_test.py"
    },
    {
      "type": "modify",
      "old_id": "b9e77220dfa2212441bf159f6ce4242a45a07d73",
      "old_mode": 33188,
      "old_path": "sphinxdocs/tests/sphinx_build/BUILD.bazel",
      "new_id": "ec0878d862f01ee3ad744f2f1e60ba721da5c357",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_build/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4bbaf906910d1fe26e9f925eb00467316c347294",
      "old_mode": 33188,
      "old_path": "sphinxdocs/tests/sphinx_docs/BUILD.bazel",
      "new_id": "71bc1f3d7985757cf021f03cfb684b04fb0b84c2",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_docs/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "eecbb908977dc95be0e94ff277dd5150cc3ed5c3",
      "old_mode": 33188,
      "old_path": "sphinxdocs/tests/sphinx_docs_conf_in_other_dir/BUILD.bazel",
      "new_id": "78f7d5e4bc4067428634a228c12d93d279eaf039",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_docs_conf_in_other_dir/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "2cbc773f776519e803c6d38797e3a474679a0fc6",
      "old_mode": 33188,
      "old_path": "sphinxdocs/tests/sphinx_stardoc/BUILD.bazel",
      "new_id": "ffc9697e7fa817966a64f2edcb0f885500fa153a",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "447af06f8ff63ebee8e8df45a2bad263bb2f0282",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/support/pyrefly/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ac0d7ea3318c83a484c7064647b2da6bd518d8a6",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/support/pyrefly/pyrefly.bzl"
    },
    {
      "type": "modify",
      "old_id": "c374dd5dcf5b4e13651632cc0a762fc642446042",
      "old_mode": 33188,
      "old_path": "tests/bootstrap_impls/bazel_tools_importable_test.py",
      "new_id": "7445100dda2ef81408abfc929766ee44da536bfe",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/bazel_tools_importable_test.py"
    },
    {
      "type": "modify",
      "old_id": "3d467dcf29b7b91a7c1236cb4b346c33e3f5d709",
      "old_mode": 33188,
      "old_path": "tests/bootstrap_impls/bin.py",
      "new_id": "0713b5f1be814f4d2f4d00a2731a4fc9144b381b",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/bin.py"
    },
    {
      "type": "modify",
      "old_id": "a9018c39ce11caa4def95b1084ca80780cf3ea25",
      "old_mode": 33188,
      "old_path": "tests/bootstrap_impls/sys_path_order_test.py",
      "new_id": "d55a93528b5a38a91e3b336702396c9e36ca40d1",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/sys_path_order_test.py"
    },
    {
      "type": "modify",
      "old_id": "6be4e52c842824c0dababcc7cd8f5e74c55fbf6b",
      "old_mode": 33188,
      "old_path": "tests/build_data/build_data_test.py",
      "new_id": "69f2e48e33671eed70e3f94d3d3744a1d2b8bbbd",
      "new_mode": 33188,
      "new_path": "tests/build_data/build_data_test.py"
    },
    {
      "type": "modify",
      "old_id": "0af77d72beef21c013ea7f5bb4f6c97fcc1acec7",
      "old_mode": 33188,
      "old_path": "tests/build_data/print_build_data.py",
      "new_id": "54d2d45361c3080209723e3dc0398edfefe016ee",
      "new_mode": 33188,
      "new_path": "tests/build_data/print_build_data.py"
    },
    {
      "type": "modify",
      "old_id": "2d648282788bc601c211215aeb04d3596b02cfac",
      "old_mode": 33188,
      "old_path": "tests/cc/current_py_cc_headers/abi3_headers_linkage_test.py",
      "new_id": "1eb229d29cfee9b49392d3b1afec57adf8bff56d",
      "new_mode": 33188,
      "new_path": "tests/cc/current_py_cc_headers/abi3_headers_linkage_test.py"
    },
    {
      "type": "modify",
      "old_id": "e3176d6a6c2240e34efe347927a1f548bebb3b85",
      "old_mode": 33188,
      "old_path": "tests/cc/py_extension/py_extension_pkg_test.py",
      "new_id": "68c6dc3ee67917911fe08dbee6ad0bd94c809087",
      "new_mode": 33188,
      "new_path": "tests/cc/py_extension/py_extension_pkg_test.py"
    },
    {
      "type": "modify",
      "old_id": "d82fe22bccc6009c21762a97fe4df571024e5991",
      "old_mode": 33188,
      "old_path": "tests/cc/py_extension/py_extension_test.py",
      "new_id": "7ffcdd3e66cfdc6bcbaac747ddd5bf24a7123788",
      "new_mode": 33188,
      "new_path": "tests/cc/py_extension/py_extension_test.py"
    },
    {
      "type": "modify",
      "old_id": "92fa42f167a5a33be5832e184df5577cd907c20f",
      "old_mode": 33188,
      "old_path": "tests/entry_points/py_console_script_gen_test.py",
      "new_id": "54e86bb671203b12c870984dd8935d5aa38e2624",
      "new_mode": 33188,
      "new_path": "tests/entry_points/py_console_script_gen_test.py"
    },
    {
      "type": "modify",
      "old_id": "c187623b3ca4b137ac06c1cf144510fb5fe4bb16",
      "old_mode": 33188,
      "old_path": "tests/integration/runner.py",
      "new_id": "9efcbebb898621af30290294fb52797b93fe5008",
      "new_mode": 33188,
      "new_path": "tests/integration/runner.py"
    },
    {
      "type": "modify",
      "old_id": "0d940e7569a59f55ddd0bd7892049b2cd20c5d1c",
      "old_mode": 33188,
      "old_path": "tests/integration/uv_lock_pypi_server.py",
      "new_id": "1f350b809f8ebd9369359f9a25be91005f2aec3a",
      "new_mode": 33188,
      "new_path": "tests/integration/uv_lock_pypi_server.py"
    },
    {
      "type": "modify",
      "old_id": "0521327563c4161b116a304949bf41d84403b1ad",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/pypi_alpha/pypi_alpha_test.py",
      "new_id": "ff0561a6f48e0748302a370d2c80d24bf73e1768",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/pypi_alpha/pypi_alpha_test.py"
    },
    {
      "type": "modify",
      "old_id": "8c34de0735e186027d4b55e6a3170f37d44b4318",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/pypi_beta/pypi_beta_test.py",
      "new_id": "bbb50dd8a8e7ebf7379ce2fbf4f552ce55c8958d",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/pypi_beta/pypi_beta_test.py"
    },
    {
      "type": "modify",
      "old_id": "a8ed7a28494a1c5db47d60ae5bcae50426b6fc23",
      "old_mode": 33188,
      "old_path": "tests/news/news_test.py",
      "new_id": "66476145a2a529f0eed88df147239b37a9faad89",
      "new_mode": 33188,
      "new_path": "tests/news/news_test.py"
    },
    {
      "type": "modify",
      "old_id": "a68448d964b8d8ae9accfe2f74d652b0c54fc230",
      "old_mode": 33188,
      "old_path": "tests/py_zipapp/BUILD.bazel",
      "new_id": "e0f878cbe1d6b15bd03a2eb66ff0c5056e7577fb",
      "new_mode": 33188,
      "new_path": "tests/py_zipapp/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b3986cc023b651cfe2368cc38dd4f2e313b368aa",
      "old_mode": 33188,
      "old_path": "tests/repl/BUILD.bazel",
      "new_id": "8fc239a06ad2a44ba0c50303e38f6d21942681ae",
      "new_mode": 33188,
      "new_path": "tests/repl/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "2b3d5c7a4d4f78dbc28f29d62f64b8df5023456a",
      "old_mode": 33188,
      "old_path": "tests/repl/repl_test.py",
      "new_id": "76b407b49e33b12831912bd090c88679ec3fee78",
      "new_mode": 33188,
      "new_path": "tests/repl/repl_test.py"
    },
    {
      "type": "modify",
      "old_id": "a959138235a4fd08b3726b4e244ab8c7eae84bf8",
      "old_mode": 33188,
      "old_path": "tests/runfiles/pathlib_test.py",
      "new_id": "5aefc4f4d3825ceb0f4502b2ad3736c1b6fc6fdf",
      "new_mode": 33188,
      "new_path": "tests/runfiles/pathlib_test.py"
    },
    {
      "type": "modify",
      "old_id": "38a89ede7ecfde49a6485db4db4fb4c9611297c9",
      "old_mode": 33188,
      "old_path": "tests/runfiles/runfiles_test.py",
      "new_id": "ce74a3d4aca9fd773eb11a1d214658114edebe8c",
      "new_mode": 33188,
      "new_path": "tests/runfiles/runfiles_test.py"
    },
    {
      "type": "modify",
      "old_id": "13b5775ff06eb84b2ad0a35d89d2faa416f5ea88",
      "old_mode": 33188,
      "old_path": "tests/runtime_env_toolchain/toolchain_runs_test.py",
      "new_id": "f3dcee3786270b4db0716a4aedc4679a2699846a",
      "new_mode": 33188,
      "new_path": "tests/runtime_env_toolchain/toolchain_runs_test.py"
    },
    {
      "type": "modify",
      "old_id": "bcb791403fa2bac2ffe31ac2094e3d592907748f",
      "old_mode": 33188,
      "old_path": "tests/support/pyrefly/pyrefly.bzl",
      "new_id": "ac0d7ea3318c83a484c7064647b2da6bd518d8a6",
      "new_mode": 33188,
      "new_path": "tests/support/pyrefly/pyrefly.bzl"
    },
    {
      "type": "modify",
      "old_id": "9769531f47ce2c0e359eba9e8cd5075b2bc0149b",
      "old_mode": 33188,
      "old_path": "tests/support/pytest_test/pytest_bootstrap_template.py",
      "new_id": "2587353306a87c7311c7344365610d7418410dd2",
      "new_mode": 33188,
      "new_path": "tests/support/pytest_test/pytest_bootstrap_template.py"
    },
    {
      "type": "modify",
      "old_id": "ff45fc0863c7736f570b8390beaeee07f1beb016",
      "old_mode": 33188,
      "old_path": "tests/toolchains/python_toolchain_test.py",
      "new_id": "dcd2438cd7be4867889ed03851eea127bc4be8f1",
      "new_mode": 33188,
      "new_path": "tests/toolchains/python_toolchain_test.py"
    },
    {
      "type": "modify",
      "old_id": "dcef2ab53a5adf558cf3527140de2d78de27dcbe",
      "old_mode": 33188,
      "old_path": "tests/tools/private/release/BUILD.bazel",
      "new_id": "dc02394960432d721a081ea272bb169ea5069be7",
      "new_mode": 33188,
      "new_path": "tests/tools/private/release/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4a8cada4cc0717804707ff795aa4c8db8a45be8a",
      "old_mode": 33188,
      "old_path": "tests/tools/private/release/git_test.py",
      "new_id": "e39787f187b5b45f6f76b6e44cf609449dbd3ff1",
      "new_mode": 33188,
      "new_path": "tests/tools/private/release/git_test.py"
    },
    {
      "type": "modify",
      "old_id": "6de5a96378f2992734d4ffc08ec60e6540be869a",
      "old_mode": 33188,
      "old_path": "tests/uv/lock/lock_run_test.py",
      "new_id": "2de9147d993f78d2093bcaaac5c6557369ed31c3",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/lock_run_test.py"
    },
    {
      "type": "modify",
      "old_id": "a3f7bfcd5ad7425f4eda4e865fe6e95fb14cb6a5",
      "old_mode": 33188,
      "old_path": "tests/venv_site_packages_libs/shared_lib_loading_test.py",
      "new_id": "aa440e4053af3bc53d35620539e688bf075a7927",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/shared_lib_loading_test.py"
    },
    {
      "type": "modify",
      "old_id": "e5def5379951ea832112c10e387376e0f313e53a",
      "old_mode": 33188,
      "old_path": "tools/private/release/mock_gh.py",
      "new_id": "0b5b672517b42d6dbb7206ed64a5798623c66c30",
      "new_mode": 33188,
      "new_path": "tools/private/release/mock_gh.py"
    },
    {
      "type": "modify",
      "old_id": "27eb3226b1bc3f6299f5956ccfcd72b1637f28a4",
      "old_mode": 33188,
      "old_path": "tools/private/release/process_backports.py",
      "new_id": "4ad846c0acfaf86d5de44992ac053d9e3e0db8ac",
      "new_mode": 33188,
      "new_path": "tools/private/release/process_backports.py"
    },
    {
      "type": "modify",
      "old_id": "560c531383f695ee6915dae99e56efe5d53cce97",
      "old_mode": 33188,
      "old_path": "tools/private/release/promote.py",
      "new_id": "44ccd5ba527e5c96dfbd0b57819ff4b9e64a15e9",
      "new_mode": 33188,
      "new_path": "tools/private/release/promote.py"
    },
    {
      "type": "modify",
      "old_id": "220348bd472afbe71b0fa44e7e8702c160377b96",
      "old_mode": 33188,
      "old_path": "tools/private/release/release_issue.py",
      "new_id": "9c73d653d5cbb172459b94b856d91e9066f9af2c",
      "new_mode": 33188,
      "new_path": "tools/private/release/release_issue.py"
    },
    {
      "type": "modify",
      "old_id": "293294c370ea5d367e01f6c338e68e26368fcc73",
      "old_mode": 33188,
      "old_path": "tools/private/update_deps/args.py",
      "new_id": "610b1abc728f819b048ac6e99e10ec34132d51e7",
      "new_mode": 33188,
      "new_path": "tools/private/update_deps/args.py"
    },
    {
      "type": "modify",
      "old_id": "8a4ccb41ba0e8783f4efe5eb992d2b04626715e3",
      "old_mode": 33261,
      "old_path": "tools/private/update_deps/update_coverage_deps.py",
      "new_id": "74ac657bad4757feb2ccda6b76e7bc4aef744552",
      "new_mode": 33261,
      "new_path": "tools/private/update_deps/update_coverage_deps.py"
    },
    {
      "type": "modify",
      "old_id": "406697bc4d66d91ecc3a24e254e3a4d3ae2c73fe",
      "old_mode": 33261,
      "old_path": "tools/private/update_deps/update_pip_deps.py",
      "new_id": "9951a7abbbdbea16f79d44385003d3a9e3c2db2a",
      "new_mode": 33261,
      "new_path": "tools/private/update_deps/update_pip_deps.py"
    },
    {
      "type": "modify",
      "old_id": "70e375b4eea458f94b514a53a684a0d72b893687",
      "old_mode": 33188,
      "old_path": "tools/wheelmaker.py",
      "new_id": "483e8fcefe4761987d4b5f8467dc7e054c09f474",
      "new_mode": 33188,
      "new_path": "tools/wheelmaker.py"
    }
  ]
}
