)]}'
{
  "commit": "09145b9f628d482246eaa70421bf0cbae9acb096",
  "tree": "ed3a945585b8c0e907093b63dcc991a6bb94c82f",
  "parents": [
    "bfa59b93dead3e6c5c9f91063078b9e09c91ea5a"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Thu Mar 27 23:32:39 2025 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Mar 27 14:32:39 2025 +0000"
  },
  "message": "feat: uv lock rule instead of genrule (#2657)\n\nThis change re-implements the `uv pip compile` as a set of rules instead\nof\nusing a `genrule`. This makes the setup more RBE friendly and it also\nfixes\nsome of existing issues in the exec tools toolchain.\n\nThe `lock` macro in the `//python/uv:lock.bzl` now creates three public\ntargets: `\u003cname\u003e`, `\u003cname\u003e.update` and `\u003cname\u003e.run`. The first will\nprovide you\nwith the locked `requirements.txt` file that is used in the\n`\u003cname\u003e.update`\nexecutable target when updating the in-source copy of the file. The\n`\u003cname\u003e.run` provides an executable target that hardcodes all of the\n`uv` args\nfrom the `\u003cname\u003e` rule in a shell script and allows user to debug the\nexecution\nand add extra arguments at the command line.\n\nThe `test` target is no longer included, but users can define it\nthemselves\nwith the help of `native_test`.\n\nThings that I could not test and would benefit from the community help:\n* Windows support - the repository has a rudimentary script, but I am\nalmost\n  sure that it is likely not working, so PRs there are welcome.\n* The integration tests are not running on RBE because of the current\nRBE\n  cluster setup. If you see issues in your RBE setup, PRs are welcome.\n* `keyring` integration to pull packages from private index servers is\nuntested\n  as of now, but I see no reason why it should not work.\n\nWork towards #1325\nWork towards #1975\nRelated #2663",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c64241ccbf86a462400b5031a04c66082f3a0458",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "80466fc3f9c827a79696437886d8069d9f61511e",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "ab996537c752ecfd545292a461b4970ffc996afa",
      "old_mode": 33188,
      "old_path": "docs/BUILD.bazel",
      "new_id": "bebecd18b2f28633977c5acb393a025ed41d8949",
      "new_mode": 33188,
      "new_path": "docs/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "92ca8e7199ab4047ba6289959131479b3df27f9a",
      "old_mode": 33188,
      "old_path": "examples/BUILD.bazel",
      "new_id": "d2fddc44c5f643f72f2c637a1a7e518efd059c48",
      "new_mode": 33188,
      "new_path": "examples/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "d74d1d39b618a4e6f16fdb4fc6678039c3bedddb",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/requirements_lock_3_9.txt",
      "new_id": "c48f406451f45978876449f91707887aa3ef475e",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/requirements_lock_3_9.txt"
    },
    {
      "type": "modify",
      "old_id": "68fefe910fd7a77e253cd4fefee6d64f655b9a9c",
      "old_mode": 33188,
      "old_path": "private/BUILD.bazel",
      "new_id": "ef5652b8266bd12f473642d67aafcae2c47613a1",
      "new_mode": 33188,
      "new_path": "private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "8b07fbd877753cf400af9c612a1513300ec960ac",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "0f6668fa9383a978eb840c924a8d79dca4368934",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b74f480fab0d4965d8601803d784147689b86a00",
      "old_mode": 33188,
      "old_path": "python/private/py_exec_tools_info.bzl",
      "new_id": "ad9a7b0c5edced2f162851f7f30f43b88078e839",
      "new_mode": 33188,
      "new_path": "python/private/py_exec_tools_info.bzl"
    },
    {
      "type": "modify",
      "old_id": "edf91597599ad2d97648831636824650341849c0",
      "old_mode": 33188,
      "old_path": "python/private/py_exec_tools_toolchain.bzl",
      "new_id": "ff30431ff42e1f1fd7a426ff54b35b87244e4e9e",
      "new_mode": 33188,
      "new_path": "python/private/py_exec_tools_toolchain.bzl"
    },
    {
      "type": "modify",
      "old_id": "6d753e19835612a133c811e9e3d56e7d0184e126",
      "old_mode": 33188,
      "old_path": "python/private/sentinel.bzl",
      "new_id": "8b69682b49f012c335cadd82c894f8ea141a344c",
      "new_mode": 33188,
      "new_path": "python/private/sentinel.bzl"
    },
    {
      "type": "modify",
      "old_id": "edffe4728cb3f4dad301d4bbf3b334077cd614f3",
      "old_mode": 33188,
      "old_path": "python/uv/lock.bzl",
      "new_id": "82b00bc2d2018a09ab0ab673c380b565be3165a9",
      "new_mode": 33188,
      "new_path": "python/uv/lock.bzl"
    },
    {
      "type": "modify",
      "old_id": "acf2a9c1f727fdd670c93cfed07755661176f2a3",
      "old_mode": 33188,
      "old_path": "python/uv/private/BUILD.bazel",
      "new_id": "d17ca39490b37e7350b6c6e3f09165345b338e52",
      "new_mode": 33188,
      "new_path": "python/uv/private/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3954c103470945d4876b118c2998d093c2e89e9f",
      "new_mode": 33261,
      "new_path": "python/uv/private/lock.bat"
    },
    {
      "type": "modify",
      "old_id": "9378f180db9220e9f4ebf3164c40f095bfc10d5f",
      "old_mode": 33188,
      "old_path": "python/uv/private/lock.bzl",
      "new_id": "69d277d6539134479c07fa35d8c42ecb910eefea",
      "new_mode": 33188,
      "new_path": "python/uv/private/lock.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b6ba0c6c486c3fe8157ef6447bc58aeac8dc96aa",
      "new_mode": 33261,
      "new_path": "python/uv/private/lock.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bcc64c16615e297429b2c57151349b45c96e3d94",
      "new_mode": 33188,
      "new_path": "python/uv/private/lock_copier.py"
    },
    {
      "type": "modify",
      "old_id": "b740fc304dfe06af14cacd7f25f278ea4480c4f5",
      "old_mode": 33188,
      "old_path": "python/uv/private/uv_toolchain.bzl",
      "new_id": "8c7f1b4b8c0ff49c61ce72d864dfe9c634d48895",
      "new_mode": 33188,
      "new_path": "python/uv/private/uv_toolchain.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6b6902da4474d813fa2d94979bc804806fb3e69f",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef57f23d31890fcfb5e0c185b73d987f6f0badb8",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/lock_run_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "35c7c193281938bac5eaf3f94a950431d0128e99",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/lock_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "34c3ebe3de5f8a2cc9ea43807ef0ca5dcaec22f6",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/testdata/build_constraints.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "34c3ebe3de5f8a2cc9ea43807ef0ca5dcaec22f6",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/testdata/build_constraints2.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18ade2c5b96d17b1ab810a4e8ee8ef4efb9bd1c4",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/testdata/constraints.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18ade2c5b96d17b1ab810a4e8ee8ef4efb9bd1c4",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/testdata/constraints2.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f2293605cf1b01dca72aad0a15c45b72ed5429a2",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/testdata/requirements.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d02844636df433579cb9fd1546a2ebecfb5f93e5",
      "new_mode": 33188,
      "new_path": "tests/uv/lock/testdata/requirements.txt"
    },
    {
      "type": "modify",
      "old_id": "538cc1d5832c0c828d4977d11a72a92998423b92",
      "old_mode": 33188,
      "old_path": "tools/private/publish_deps.bzl",
      "new_id": "a9b0dbc562339f0d27471ad5bbb184fc852a2e5c",
      "new_mode": 33188,
      "new_path": "tools/private/publish_deps.bzl"
    },
    {
      "type": "modify",
      "old_id": "4cf99e4d97f161adde42f262ec59d9bd97940c2f",
      "old_mode": 33188,
      "old_path": "tools/publish/BUILD.bazel",
      "new_id": "2f02809ccdded9299b87427612903163a0688a5d",
      "new_mode": 33188,
      "new_path": "tools/publish/BUILD.bazel"
    }
  ]
}
