)]}'
{
  "commit": "3dd56ab0054d9d24ed96a919dfa9cfd348dd95b2",
  "tree": "2c4f549047801d2f43d4b7ed02e1623b5a811c75",
  "parents": [
    "ab7da31c405b8ab8395e40e24776f6de3166c863"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Nov 09 06:30:04 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 09 06:30:04 2026 +0000"
  },
  "message": "refactor(pypi): migrate requirements.txt lockfiles to uv.lock (#4379)\n\nMaintaining platform- and version-specific `requirements.txt` files\nalongside `uv.lock` duplicated lockfile targets across `MODULE.bazel`\nand `WORKSPACE` builds.\n\nWith `uv_lock` available in `WORKSPACE` `pip_parse` (#4416) and\n`multi_pip_parse` (#4430), replace the remaining `uv`-generated\n`requirements.txt` lockfiles in `dev`, `tools/publish`, `examples`, and\n`tests/multi_pypi` with unified `uv.lock` files.\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "27e0b7245d832a32122b743634b2a65838b6a18e",
      "old_mode": 33188,
      "old_path": ".gitattributes",
      "new_id": "d777e53d3a4b2fc8cd64927dd5cccd4032434aca",
      "new_mode": 33188,
      "new_path": ".gitattributes"
    },
    {
      "type": "modify",
      "old_id": "c5c735cf136b79194f05843f45a7fdfc04147131",
      "old_mode": 33188,
      "old_path": ".github/actions/setup-bazel/action.yaml",
      "new_id": "64f9b81bd5e4b812fe265c4e076b9d2eb467631f",
      "new_mode": 33188,
      "new_path": ".github/actions/setup-bazel/action.yaml"
    },
    {
      "type": "modify",
      "old_id": "91e1a2d018382795c3fe819c7a0d36cf1301034d",
      "old_mode": 33188,
      "old_path": "AGENTS.md",
      "new_id": "07768b12b4cc6104bf10cdf35568c3567c553991",
      "new_mode": 33188,
      "new_path": "AGENTS.md"
    },
    {
      "type": "modify",
      "old_id": "0bc85c148091c8dbd3283d8b5ed12a3efbc34160",
      "old_mode": 33188,
      "old_path": "CONTRIBUTING.md",
      "new_id": "6482865c9144a46a5cfc24817681293c23baa798",
      "new_mode": 33188,
      "new_path": "CONTRIBUTING.md"
    },
    {
      "type": "modify",
      "old_id": "704c90d05736fdee187d6e6167c159002b22aee0",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "8348c1df951e237c6c6c94e7d3f0fc98e3595625",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "016a9a9d7ed6eed4d2807ba010a6194e053355cf",
      "old_mode": 33188,
      "old_path": "WORKSPACE",
      "new_id": "631b94118d66ccb603d13d990df783e64a168690",
      "new_mode": 33188,
      "new_path": "WORKSPACE"
    },
    {
      "type": "modify",
      "old_id": "28163dacf637a08a9f295b24f871ebdb9f385a44",
      "old_mode": 33188,
      "old_path": "dev/BUILD.bazel",
      "new_id": "86a2298c0a774a3ff6cabeade9063955592371c4",
      "new_mode": 33188,
      "new_path": "dev/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "5b954443a0849df4a9aa2a94791e5e87f2310e59",
      "old_mode": 33188,
      "old_path": "dev/requirements.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "23e90736c4b67babf9e275e1fe847ec6a2629468",
      "old_mode": 33188,
      "old_path": "examples/build_file_generation/BUILD.bazel",
      "new_id": "671798f68d444d13d2e0ee59fb5aa2fd6b0dfd74",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "0b6a47b874a6711b80b243c3ebb59826d71c10df",
      "old_mode": 33188,
      "old_path": "examples/build_file_generation/WORKSPACE",
      "new_id": "54dfa616fa714bcbe5cd4302016400b75067399d",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/WORKSPACE"
    },
    {
      "type": "modify",
      "old_id": "5055a343e22e0f1d4114c6fee03c65d78ea889ca",
      "old_mode": 33188,
      "old_path": "examples/build_file_generation/gazelle_python.yaml",
      "new_id": "20fbb25d1cea51ae2b792c9996d6af7c75975844",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/gazelle_python.yaml"
    },
    {
      "type": "modify",
      "old_id": "e45a325bd890392bdd43fc848fb900b0c33f701c",
      "old_mode": 33188,
      "old_path": "examples/build_file_generation/pyproject.toml",
      "new_id": "a4062011093189ead47773db2c14ce028fa06446",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "40c5a691981562835e7e99230961b543e07841ee",
      "old_mode": 33188,
      "old_path": "examples/build_file_generation/requirements_lock.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "5c627ed02a2ab2cbc30b6357628bcd392701d482",
      "old_mode": 33188,
      "old_path": "examples/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": "be2e21a8c431e1780ac352309acce8e780dc9016",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "12f89b67d10c2e1680aa27bc6e8082f2f1174414",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/MODULE.bazel",
      "new_id": "8acbe4746a371c3cf646a5759023a354f47af18d",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "5e22b6460b96d88c712b51ca0860c23708469d11",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/WORKSPACE",
      "new_id": "10cca2bc3cc12401f32e106f006edf6f13a9a506",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/WORKSPACE"
    },
    {
      "type": "modify",
      "old_id": "836d41f43a3eada32b76175cefec00d1fcd38734",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/BUILD.bazel",
      "new_id": "b00025d995c2c060fa5a18fe8e4cad645740357d",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/requirements/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b9b267fdbebbf3ef20fa186ab9c7facc2256ac20",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/pyproject.toml",
      "new_id": "3199d8625cf522c8cd785ee7a24c72d7324e807d",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/requirements/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "ad08ce02ecef7782e403dd70c3f49fe761161bbe",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/requirements_lock_3_10.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "f6b1dd5c7127105b2a3692f3922d39610d2a5ed8",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/requirements_lock_3_11.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "d5820b7a1fd57d11e7cfe7abb3a1fa585a01c0e0",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/requirements_lock_3_12.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "571339dd4d8dc1d3b636204b29fe35bb986916ad",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/requirements_lock_3_13.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "ff3ebe986a909c0bc3190c64a8c2492dff70c64b",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/requirements/requirements_lock_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": "473ddb857eeacdf402817330d79bed5dc4e86e12",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/requirements/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "294aa5f51328e2b6ffac2d9b79696ac6424c44ea",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/BUILD.bazel",
      "new_id": "fce77ca379fb9a3143f6c0f3af01b9d3399c08bd",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a84062559774b75cbc04a0fe4b6c22b805b9ac21",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/MODULE.bazel",
      "new_id": "9b0212e28d169aa6b30dbc23d313747ffef1cfe7",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "dcfb11c02c9dbb0ff70299674680736a545f4996",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/WORKSPACE",
      "new_id": "49ca2cef77bf2ea64aee71ef5095ee47f5b424ed",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/WORKSPACE"
    },
    {
      "type": "delete",
      "old_id": "80897b953c90f9f394e6f3bf71105198fcc8ed52",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/constraints_certifi.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "b0c6f2e9a84b1efa94643615c57b4d498ddaeabb",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/constraints_urllib3.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "36f53a16302cb9c46357dfcc9719c04ffd309fc5",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/pyproject.toml",
      "new_id": "1a5870c343a6846ab7ac2d8cc7e428ead83b6aea",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "e73fd7f93233493710f8d2a4a2d58c1626c14622",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/requirements_lock.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "e0c342573f42759de8dfdf0fcabbfccb4572bd74",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/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": "0bcfccf85737cd69796afc61e73db1c0fc751469",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "e84e130e3274d70ef29cda2ad614f31aaf09b88e",
      "old_mode": 33188,
      "old_path": "examples/wheel/BUILD.bazel",
      "new_id": "94ad86f885803b1f11b01d7e185d5d7628cfe01e",
      "new_mode": 33188,
      "new_path": "examples/wheel/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "63dbdfe1ff03ab147141a6ecf4298d78985a5f91",
      "old_mode": 33188,
      "old_path": "examples/wheel/pyproject.toml",
      "new_id": "0912ccf0d0456f1cec2e77a92192c65a7e144c85",
      "new_mode": 33188,
      "new_path": "examples/wheel/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "b380f1fc96f1b0b064679fe84adf4bdde748ee65",
      "old_mode": 33188,
      "old_path": "examples/wheel/requirements_server.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": "bb2f46afa4047a58c37d9366155ad3ac483d62a0",
      "new_mode": 33188,
      "new_path": "examples/wheel/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "52f7c4545137dee890b5e128d1b164a8c8c3fbee",
      "old_mode": 33188,
      "old_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock",
      "new_id": "a487d8e3e7500d5b9cd188723ed855f6ec7b54c3",
      "new_mode": 33188,
      "new_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock"
    },
    {
      "type": "modify",
      "old_id": "15bb67645cb4872334dee82022113189a29b6840",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/alpha/BUILD.bazel",
      "new_id": "d1a9ad82e092d3297fd8156a32ddf8927a21e884",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/alpha/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "8f99cd08fc4ec408c89f6617dcd7c86318fa8055",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/alpha/pyproject.toml",
      "new_id": "f62a0a42eb43ca7fe460be8946675358db85ead0",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/alpha/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "35c2015574e14227381f42397d1226bc5166b272",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/alpha/requirements.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": "fc2f1f03bca890344058e3be1de0491e141bc8eb",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/alpha/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "15bb67645cb4872334dee82022113189a29b6840",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/beta/BUILD.bazel",
      "new_id": "d1a9ad82e092d3297fd8156a32ddf8927a21e884",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/beta/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "02a510ffa213acc21561b616e705f64eba586d44",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/beta/pyproject.toml",
      "new_id": "753b52e8498aafabcc54f3bda16d1cac9f192fa2",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/beta/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "d4c93c2cfa1d7bb1419cf50d1e1e60b005e71816",
      "old_mode": 33188,
      "old_path": "tests/multi_pypi/beta/requirements.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": "6ff80a5af3a9b4dcad9641e520795d7a9e1e32d4",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/beta/uv.lock"
    },
    {
      "type": "modify",
      "old_id": "b66eac3490a440287f8f014bfae5ff51bb409367",
      "old_mode": 33188,
      "old_path": "tools/private/BUILD.bazel",
      "new_id": "1d689656c2ff23651437d01ef0f3cfd51d349647",
      "new_mode": 33188,
      "new_path": "tools/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "bf1ad8dcf768ee025b1fd0346d73ed0cddd8bf99",
      "old_mode": 33188,
      "old_path": "tools/private/README.md",
      "new_id": "663e14d5ad3374c4041e63c624698cace455480b",
      "new_mode": 33188,
      "new_path": "tools/private/README.md"
    },
    {
      "type": "delete",
      "old_id": "cd7273376916f671809fbbcdd9eeaeb687377c47",
      "old_mode": 33188,
      "old_path": "tools/private/publish_deps.bzl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "d24d30b1172b771f00d1763cae838b00263abe33",
      "old_mode": 33188,
      "old_path": "tools/publish/BUILD.bazel",
      "new_id": "afe1c0241855d836559ce12ef019cd6cc2e2ae13",
      "new_mode": 33188,
      "new_path": "tools/publish/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "7dcb9deaa7d86c12af700b48cfd0a6d4b929223d",
      "old_mode": 33188,
      "old_path": "tools/publish/pyproject.toml",
      "new_id": "a2e60fa02d34b6ce6e6976959b4b679c5cf934ad",
      "new_mode": 33188,
      "new_path": "tools/publish/pyproject.toml"
    },
    {
      "type": "delete",
      "old_id": "6fe7ceeba5ddc1cf93809398308d9d12a15e7a47",
      "old_mode": 33188,
      "old_path": "tools/publish/requirements_darwin.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9d870a4207f06c6bf80edd7ac504d86a833c3b6f",
      "old_mode": 33188,
      "old_path": "tools/publish/requirements_linux.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "572dfabd23df81bfa78737d243ad94a6627a5255",
      "old_mode": 33188,
      "old_path": "tools/publish/requirements_universal.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6f6083d15d9699f239e9a856553c7ad62ee7f85e",
      "old_mode": 33188,
      "old_path": "tools/publish/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": "04a4307ae506d07951b11f50fd6529f210f98649",
      "new_mode": 33188,
      "new_path": "tools/publish/uv.lock"
    }
  ]
}
