)]}'
{
  "commit": "9699f18468276ce80fdb3c4e0125dd0c08fdbd65",
  "tree": "bd90d47b77b7fa4a9d49c577c9e3b50b94e256fb",
  "parents": [
    "d9909181be32b46f65e3a3ccca43b7dca6507224"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Fri Oct 30 07:33:29 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Oct 30 07:33:29 2026 +0000"
  },
  "message": "feat(uv): add @uv//:uv and //python/uv/bin:uv targets to run uv (#4371)\n\nUsers could not run the Bazel-configured `uv` binary directly because\n`//python/uv:current_toolchain` had restricted visibility and omitted\nthe underlying `uv` binary from its runfiles and executable symlink\nflag.\n\nMake `//python/uv:current_toolchain` public, mark its symlink executable\nwhile preserving any file extension (such as `.exe` on Windows),\ninclude the underlying `uv` binary in its runfiles, and expose the\n`$(UV)` Make variable alongside `$(UV_BIN)`. Expose convenient public\naliases at `@uv//:uv` and `//python/uv/bin:uv` so users can invoke `uv`\ndirectly via `bazel run`.",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb3a914c87c27a0d19defd2d9e14905fd2569816",
      "new_mode": 33188,
      "new_path": "docs/api/rules_python/python/uv/bin/index.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "652368944c59f64545eda366b1ef03adbea24957",
      "new_mode": 33188,
      "new_path": "docs/api/rules_python/python/uv/index.md"
    },
    {
      "type": "modify",
      "old_id": "727795c1efbd5c6e4fad1b79b932217334ee8925",
      "old_mode": 33188,
      "old_path": "docs/pypi/lock.md",
      "new_id": "51b5b12e5dcdbd6a8a3142775bb99eb9690e0740",
      "new_mode": 33188,
      "new_path": "docs/pypi/lock.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c3142dc0fe2fcbde1ce08c5839ab562606e4d513",
      "new_mode": 33188,
      "new_path": "news/uv-bin-target.added.md"
    },
    {
      "type": "modify",
      "old_id": "9551051bd25992f4961aa262a5f7852d412ffcda",
      "old_mode": 33188,
      "old_path": "python/uv/BUILD.bazel",
      "new_id": "e2024650bd8fce3bdc9493cfcbedde145e51b410",
      "new_mode": 33188,
      "new_path": "python/uv/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e357c7054545fcdf1624773f8479f0f05b409a79",
      "new_mode": 33188,
      "new_path": "python/uv/bin/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "91a25cb50f1bd22903d76f8d1d566239983d460e",
      "old_mode": 33188,
      "old_path": "python/uv/private/current_toolchain.bzl",
      "new_id": "43b3a30c5556286ae9154703f0adf57ccfe555c0",
      "new_mode": 33188,
      "new_path": "python/uv/private/current_toolchain.bzl"
    },
    {
      "type": "modify",
      "old_id": "1ed9794316c5a09ba6992d0fad48c7677d1751d0",
      "old_mode": 33188,
      "old_path": "python/uv/private/uv.bzl",
      "new_id": "32462c09fbc14f660fbc78a83d58566314932098",
      "new_mode": 33188,
      "new_path": "python/uv/private/uv.bzl"
    },
    {
      "type": "modify",
      "old_id": "1da301159e794d5a10c1bfc9d239b6f46baf3849",
      "old_mode": 33188,
      "old_path": "python/uv/private/uv_register_toolchains.bzl",
      "new_id": "558d6d42326cb74bd8fe4d8cfda5afa0ae94afe8",
      "new_mode": 33188,
      "new_path": "python/uv/private/uv_register_toolchains.bzl"
    },
    {
      "type": "modify",
      "old_id": "7e11e0adb6b33586e207bcf22863efe8ad0d5d96",
      "old_mode": 33188,
      "old_path": "python/uv/private/uv_toolchains_repo.bzl",
      "new_id": "2e62ad929285f635a6bc47052135eba56a11e482",
      "new_mode": 33188,
      "new_path": "python/uv/private/uv_toolchains_repo.bzl"
    },
    {
      "type": "modify",
      "old_id": "f86bf246f1d1295b60a3d59f8a35f597ec188e49",
      "old_mode": 33188,
      "old_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock",
      "new_id": "f2849f45942db6c08871f644ea227d824150c6af",
      "new_mode": 33188,
      "new_path": "tests/integration/bzlmod_lockfile/MODULE.bazel.lock"
    },
    {
      "type": "modify",
      "old_id": "9017396ffe9800276c0034b46f68a5633aba2ddb",
      "old_mode": 33188,
      "old_path": "tests/uv/toolchain/BUILD.bazel",
      "new_id": "21f6d2ac159021dd43f8a5a35eb694409640e14f",
      "new_mode": 33188,
      "new_path": "tests/uv/toolchain/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "c4515277f751395776c5530c9f249ea3c49ac57e",
      "old_mode": 33261,
      "old_path": "tests/uv/toolchain/uv_help_test.py",
      "new_id": "eed10e7470a529a18c2907073eeedb60db44ee46",
      "new_mode": 33261,
      "new_path": "tests/uv/toolchain/uv_help_test.py"
    }
  ]
}
