)]}'
{
  "commit": "281e98aa3a103356ed8fa3aaf36f3bf646f28fd9",
  "tree": "88b0f02ce8577e62eb3952926aaba4cc7283a619",
  "parents": [
    "3ed66a5c544be23a3663390a10d10d789ea28a77"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Sat Aug 22 23:33:36 2026 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Aug 22 07:33:36 2026 -0700"
  },
  "message": "chore: cherry-picks for 2.3.2 (#4089)\n\nCherry-picks:\n- #4044\n- #4054\n- #4086\n- #4083\n\nExtra fixes (PR to main in #4090):\n- doc: changelog entries for 2.3.2\n- chore: fix version numbers\n\nWork towards #4088\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e\nCo-authored-by: Kristian Hartikainen \u003ckristian@ekarobotics.com\u003e\nCo-authored-by: Henrique \u003c121921605+henriquejsza@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1fd816e513bbcc5d47e67bc68d0274c23a8cb48f",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "db92e878ef9d1a177f743d6e5f247d5f7b6c5e49",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "baa1a1e3db1eb87b210cb38bc71253d5b2619aaa",
      "old_mode": 33188,
      "old_path": "docs/BUILD.bazel",
      "new_id": "fd524739b3356ef59c020166291b0700e9c3820e",
      "new_mode": 33188,
      "new_path": "docs/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "3d8ba4aa710f81b6fb649aa814b6c0a0ac8c1ce5",
      "old_mode": 33188,
      "old_path": "python/private/py_library.bzl",
      "new_id": "3118d3c9a19e08bc753fd33c668775c386cb61ac",
      "new_mode": 33188,
      "new_path": "python/private/py_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "bb84ff9280c48afe5045a6d5358352e861d626cc",
      "old_mode": 33188,
      "old_path": "python/private/pypi/BUILD.bazel",
      "new_id": "e9d37a1a6c0c4e2244c10a2266818ee350453a04",
      "new_mode": 33188,
      "new_path": "python/private/pypi/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4874c7ac7936b53756282c14c4be8c842ce1a730",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_requirements.bzl",
      "new_id": "580989e3ffc930ef4ebc7ce75d624d0752dc07bb",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_requirements.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b4ecb2f5b52004c7c214e7c7e4318c8746832c7f",
      "new_mode": 33188,
      "new_path": "python/private/pypi/patch_and_extract_whl.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1764abe70d90d1157584226f1199b7d65cea3085",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pip_archive.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "242104f3c26665a0982bace2c3a01d70ed20153d",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_archive.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20891da3971ddc14ca3b491b2886ff4518d1c8e8",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_deps_repo.bzl"
    },
    {
      "type": "modify",
      "old_id": "281dd863e622aa3d62b30452b723ff29cfed813d",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_library.bzl",
      "new_id": "3f874b464b9d77e0bdc3b62e594d55a0c121f443",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "c375e72794b24c0e6bc443dce45cfa35a6dbe1da",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_library/py_library_tests.bzl",
      "new_id": "a3be7c4bcf911fb459aefbae16bb15baffe26ff6",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_library/py_library_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "6b293283aef3619bad3de9bfa88d7cc47df2d52f",
      "old_mode": 33188,
      "old_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock",
      "new_id": "ed252bbd9bf1459aeff5c291a6746b99ab9a5aed",
      "new_mode": 33188,
      "new_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock"
    },
    {
      "type": "modify",
      "old_id": "0c26fee4cffef474d1b47d28910a526a04957c57",
      "old_mode": 33188,
      "old_path": "tests/integration/whl_library/BUILD.bazel",
      "new_id": "a53bcc7258c5dc83f4d1d3abb4603bae8bbff46e",
      "new_mode": 33188,
      "new_path": "tests/integration/whl_library/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "39a579f79eeefed849b850318693cd4c864855a5",
      "old_mode": 33188,
      "old_path": "tests/integration/whl_library/MODULE.bazel",
      "new_id": "d3886d7650904999f6df23e52d6a335848c2600c",
      "new_mode": 33188,
      "new_path": "tests/integration/whl_library/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "ab352a5d9823688b103c9c2a68c917fadcbbd261",
      "old_mode": 33188,
      "old_path": "tests/integration/whl_library/test_contents.py",
      "new_id": "6db7245d24f6a926f8ace96b20a5721ed5121df5",
      "new_mode": 33188,
      "new_path": "tests/integration/whl_library/test_contents.py"
    },
    {
      "type": "modify",
      "old_id": "54f906929a1fb24b54c74cb7ec08293dccc991b2",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl",
      "new_id": "f6b9d7e5a5be1c8eeeb0e3b9a6a368c39e0879b0",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl"
    }
  ]
}
