)]}'
{
  "commit": "8a3b77ca63e2db53a65aea55e999be3de9101831",
  "tree": "9744ef08c134cf0fb1ae15ae44449eb652628930",
  "parents": [
    "30f81a09648c8537eb4885bdb24184989b2c27b4"
  ],
  "author": {
    "name": "Karlo Delalic",
    "email": "karlo.delalic1@gmail.com",
    "time": "Sun Nov 08 01:47:45 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Nov 08 01:47:45 2026 +0000"
  },
  "message": "fix(pypi): respect uv.lock dependency platform markers (#4286)\n\nFixes #4287.\n\n`pip.parse` can select Linux-only dependencies on macOS because it\nignores platform conditions on dependency edges in `uv.lock`. For\nexample, `uvloop; sys_platform \u003d\u003d \u0027linux\u0027` incorrectly selects a source\narchive on macOS.\n\nThis change follows dependencies from the workspace roots and keeps each\npackage only on the platforms where it is reachable. It preserves\nsupport for optional extras and development dependency groups.\n\nValidation:\n- All 94 parser and uv-lock tests pass, including regression coverage\nfor platform filtering, extras, and development groups.\n- The real uvloop reproduction now selects only the Linux wheel.\n- Buildifier and `git diff --check` pass.\n\nIncludes updated API documentation and a release note.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "11fe026a64347ada364a7453c8b55e9bae8b7b0c",
      "new_mode": 33188,
      "new_path": "news/4286.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "f7a1dadaf7e35dd115afda195033215f133e2bcd",
      "old_mode": 33188,
      "old_path": "python/private/pypi/extension.bzl",
      "new_id": "ec3193778c7c21ee2d16ffcb12d5c00bb090671b",
      "new_mode": 33188,
      "new_path": "python/private/pypi/extension.bzl"
    },
    {
      "type": "modify",
      "old_id": "2ac8b3724f5e41b517b43c6e3431b3e6a33b454e",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_requirements.bzl",
      "new_id": "9782494caf853570d27d58e74f63d2e9b14c87f2",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_requirements.bzl"
    },
    {
      "type": "modify",
      "old_id": "733abe42d42495d2d8aea9284f0ea776e2841fe1",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl",
      "new_id": "148a51aa8675201abe4d5194400f833f326cd4d9",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl"
    }
  ]
}
