)]}'
{
  "commit": "f45711741e0e6f4731d2da12509a2ec31e85c41e",
  "tree": "53cada2a27562de11ef452342502ec88bb62ea28",
  "parents": [
    "01fedb2279e5174bcc9e63f8cdd7ac7ebad72f21"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Sun Nov 08 22:48:19 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Nov 08 22:48:19 2026 +0000"
  },
  "message": "fix(pypi): only expose uv.lock packages present on all platforms (#4444)\n\nPreviously, `_parse_uv_lock_json` in\n`python/private/pypi/parse_requirements.bzl`\nset `is_exposed \u003d bool(info[\"resolved_srcs\"])`, which exposed any\npackage that resolved on at least one configured platform in\n`all_requirements` / `all_whl_requirements`. When a `uv.lock` file\nincluded platform-specific dependencies (such as `pywin32-ctypes` on\nWindows), targets depending on `all_requirements` failed to build on\nother platforms with a `_no_matching_repository` error.\n\nUpdate `_parse_uv_lock_json` to compute `is_exposed` using\n`bool(all_platforms) and len(resolved_platforms) \u003d\u003d len(all_platforms)`,\nmatching the multi-platform exposure behavior of\n`_parse_requirements_from_req_files` when `requirements_by_platform` is\nused.",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b4ae0a256e4762d94213563b414bc8d3d3e67e55",
      "new_mode": 33188,
      "new_path": "news/uv-lock-expose-all-platforms.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "9782494caf853570d27d58e74f63d2e9b14c87f2",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_requirements.bzl",
      "new_id": "2d8c4b4774098e43cb54682c3c5f5a64e5451670",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_requirements.bzl"
    },
    {
      "type": "modify",
      "old_id": "148a51aa8675201abe4d5194400f833f326cd4d9",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl",
      "new_id": "3838ad4c73af107c0b257d69d94ba4f93a26edaa",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl"
    }
  ]
}
