)]}'
{
  "commit": "2156c506cf5426972e6a35ce3f620e0380bf38a2",
  "tree": "cebfc57ffb613d86765197115b21e6fce0cc59ad",
  "parents": [
    "256328df90c199767ec170fd0dfea5a0f7cd38a7"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Fri Oct 23 02:33:27 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Oct 23 02:33:27 2026 +0000"
  },
  "message": "refactor(examples): replace requirements.txt lockfiles with uv.lock (#4323)\n\nUsing `requirements.txt` lockfiles requires maintaining separate\nper-platform and per-Python-version files (such as\n`requirements_lock_3_*.txt` and `requirements_windows_*.txt`). Native\n`uv.lock` files are cross-platform and support multiple Python versions\nin a single lockfile.\n\nConfigure `lock` targets in `examples/bzlmod`,\n`gazelle/examples/bzlmod_build_file_generation`, and `sphinxdocs` to\ngenerate `uv.lock`, set `requires-python` in their `pyproject.toml`\nfiles, and switch `pip.parse` calls to use `uv_lock`.\n\n* Also bumps `rules_python` in `sphinxdocs` and Gazelle example\n  `MODULE.bazel` files so `pip.parse(uv_lock)` is supported, and\n  updates Gazelle manifests and test wheel versions for the regenerated\n  lockfiles.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c341d1aada035492c1fadc11a8bb3a7c89ccab40",
      "old_mode": 33188,
      "old_path": "dev/BUILD.bazel",
      "new_id": "4ea3287c380fe6d59c7a7fdba93e4355f996e49c",
      "new_mode": 33188,
      "new_path": "dev/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "075617a9c402ff869c1e2bf196d7d1dcb01e8991",
      "old_mode": 33188,
      "old_path": "examples/BUILD.bazel",
      "new_id": "cdb04837614d24eeb3e67977e31df883eadc7ea6",
      "new_mode": 33188,
      "new_path": "examples/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "95d8a9e83a08e9bc0ff8ef1205dc686e8bd7aaa5",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/BUILD.bazel",
      "new_id": "e878364ee3e033267d928d2ee4d34618a575b9c7",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "0a689303ff7820372c7f199bbabcaa4f2428c947",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/MODULE.bazel",
      "new_id": "d3d452ab42a8d780c63b1635985644318a4810fa",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "c8585f106207fd0908ebfef16b9dfd8c61cb77db",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/other_module/BUILD.bazel",
      "new_id": "6fece8302c815005a01b207ba9102409c53cdf57",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "be18ff21fd93185b63cb92ad028d20072c393111",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/other_module/MODULE.bazel",
      "new_id": "93191d31155bef3468139989e2055afd1b37c6d3",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "073cf0ab0339c9bfbf0574b084505ca79f1a1b05",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/other_module/pyproject.toml",
      "new_id": "a95a38d0e34b7253faa321d15f1f1f04b1b59088",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "d0c8bd80f2f659aaf4b6451ea2e3f9fc296022a0",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/other_module/requirements_lock_3_11.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9e2f3ac53f3b44c78cfa57c71c216565b8d57e3a",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "65d4a9a185d9ba1edcee06d6670266cf53935175",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/pyproject.toml",
      "new_id": "d8127dd7c507bf8d040660ed385987cdd4f912a6",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "0d5a5f35840f0b7fb44ff47146978181166a8252",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_lock_3_10.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "7bf661406cee7eb86af29994c1312c37eb98a4b3",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_lock_3_12.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "194490e0e8f793df0ad4ba4629e7ad2e0af2902f",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_lock_3_13.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "87b787490d7224e70b6b1a74464daa57093e92be",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_lock_3_14.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9a75b1a8f8c576092b16d0efa26ddf0642659741",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_windows_3_10.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "0b3c74c159cd1530b89b232cfb64f1154ff3991e",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_windows_3_12.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "7565884dbddbbf49325be31ea23b305381d5507d",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_windows_3_13.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6e1c059fd495a5ab9ac46eaded09a732ccc5115c",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_windows_3_14.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73dd7c1e7a77f2880235a17ce0dcf60f6e8e9792",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "0bd7bca1105949e13f4c758bd65734764f3a112a",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/whl_mods/pip_whl_mods_test.py",
      "new_id": "8cd723224a6a8261865329b9b1492ce26d13b619",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/whl_mods/pip_whl_mods_test.py"
    },
    {
      "type": "modify",
      "old_id": "97f0f519fd485a29462d7774fe0cd94fae033951",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/BUILD.bazel",
      "new_id": "991f07f04ba45607b7ebe28691cbe84f60b35259",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "221336da4dccc410c6c687e8723c51fdc7d2a3fe",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/MODULE.bazel",
      "new_id": "f048a7cf6aa3ccecfbd927ccabf083a4f6b7fed6",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "f2d8aa8b902be3a9e924f08f39e772c2e8ce30b9",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/gazelle_python.yaml",
      "new_id": "1f0bbd07ec4cddad4987831dc208dbd718655c3c",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/gazelle_python.yaml"
    },
    {
      "type": "modify",
      "old_id": "f5c94a08bddcf40ecca8ef1cb298e5d54a2613db",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/gazelle_python_with_types.yaml",
      "new_id": "7f9b7709b6525a11fd1b91c7328f2e587dcdc0db",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/gazelle_python_with_types.yaml"
    },
    {
      "type": "modify",
      "old_id": "62a6b0328e91511e8aa99295fcd96497c252385d",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/pyproject.toml",
      "new_id": "536940b62a44e45c551026b09ece1cfdee77ab6e",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "a98c74a62ec4162ce97c218844cfc33fbf7a36e8",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/requirements_lock.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "35dceae77cf58c8b9e2c7d2c57bfe933a72905c4",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/requirements_windows.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "942551ee502edc2b1013bc9388583f318dc44a7c",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "c1f06ccb50a2afa85e32493318f931e252c39038",
      "old_mode": 33188,
      "old_path": "sphinxdocs/MODULE.bazel",
      "new_id": "2ffc3873c648a906d5c0b76aaa1ea61a6a943d66",
      "new_mode": 33188,
      "new_path": "sphinxdocs/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "41e88f2c5982c3fec9583ac51173a095e7c71b7b",
      "old_mode": 33188,
      "old_path": "sphinxdocs/dev/BUILD.bazel",
      "new_id": "90ca2e9a75d4d8784cca0a7a3d332f62a2e04a2b",
      "new_mode": 33188,
      "new_path": "sphinxdocs/dev/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "6d75fd2144cc2a6675720beb8e87d973a8aa1a56",
      "old_mode": 33188,
      "old_path": "sphinxdocs/dev/requirements.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "451f2e920d571d466ab6b935de09286c5a2dffbf",
      "old_mode": 33188,
      "old_path": "sphinxdocs/integration_tests/bcr/MODULE.bazel",
      "new_id": "f4578f55d09fa252eb2909bffc81c55550463730",
      "new_mode": 33188,
      "new_path": "sphinxdocs/integration_tests/bcr/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "976718f3126067ee3f34091561ab7fe0bef68e74",
      "old_mode": 33188,
      "old_path": "sphinxdocs/integration_tests/persistent_worker/workspace/MODULE.bazel",
      "new_id": "673d48845a64096e96e76c6d3e0c94441dbdb174",
      "new_mode": 33188,
      "new_path": "sphinxdocs/integration_tests/persistent_worker/workspace/MODULE.bazel"
    }
  ]
}
