)]}'
{
  "commit": "984d4852ed1d7084d8f80e63f1e71d383f5ab815",
  "tree": "5e105b666a6f74c94625d6a9b9ada527ea4a57be",
  "parents": [
    "7905d790118254d18ebc1e8fae2ccc887770d028"
  ],
  "author": {
    "name": "Henrique",
    "email": "121921605+henriquejsza@users.noreply.github.com",
    "time": "Sat Aug 22 04:51:50 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Aug 22 04:51:50 2026 +0000"
  },
  "message": "fix(pypi): handle revisions in uv.lock Git sources (#4086)\n\nGit sources in `uv.lock` can include a revision in the URL query and\nfragment. `pip.parse` currently includes those components in the derived\nfilename, which can produce an invalid Bazel repository name.\n\nDerive the filename from only the URL path while preserving the complete\nrevision-bearing Git URL. Regression coverage verifies the filename is\nclean\nand the fetch URL remains unchanged.\n\nFixes #4084",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e19ca38351bc229eb47d10a0eef958f78d5dde9",
      "new_mode": 33188,
      "new_path": "news/4084.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "4874c7ac7936b53756282c14c4be8c842ce1a730",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_requirements.bzl",
      "new_id": "580989e3ffc930ef4ebc7ce75d624d0752dc07bb",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_requirements.bzl"
    },
    {
      "type": "modify",
      "old_id": "54f906929a1fb24b54c74cb7ec08293dccc991b2",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl",
      "new_id": "f6b9d7e5a5be1c8eeeb0e3b9a6a368c39e0879b0",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl"
    }
  ]
}
