)]}'
{
  "commit": "d6cb4504e2e51594d057e3d469bf51743c207e61",
  "tree": "7f55ad970d079310d45919a04c67eebd8d776ffc",
  "parents": [
    "cf828825aab6a0426a032105210584e7b5872e2f"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Sun Nov 08 21:15:07 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Nov 08 21:15:07 2026 +0000"
  },
  "message": "refactor(toolchain): select bundled coverage wheels with select_whl (#4414)\n\nrefactor(toolchain): select bundled coverage wheels with select_whl\n\nBefore this change the coverage wheels bundled with the hermetic\ntoolchain\nwere stored as a nested dict keyed by the python ABI and the toolchain\nplatform, and the platform filtering was done in the Python update\nscript.\n\nNow the update script stores all of the wheels as a flat list using a\nformat similar to `uv.lock` - `struct(url \u003d ..., hash \u003d \"sha256:...\")` -\nand\nthe Starlark side uses `select_whl` to pick the wheel that is compatible\nwith\nthe python version and the toolchain platform. The update script no\nlonger\ndoes any filtering, but it accepts multiple coverage versions, each with\nan\noptional PEP 508 marker for when it should be used, because newer\ncoverage\nreleases drop support for older python versions, e.g.:\n\n```\nbazel run //dev/update_deps:update_coverage_deps -- \\\n    \"7.10.7; python_full_version \u003c \u00273.15\u0027\" \\\n    \"7.17.0; python_full_version \u003e\u003d \u00273.15\u0027\"\n```\n\nThe marker is stored on each wheel and is evaluated against the python\nversion of the toolchain before selecting the wheel.\n\nThe wheel that is selected for each toolchain is unchanged, except for\nthe\npython 3.15+ toolchains on the platforms without a platform specific\nwheel,\nwhich now fall back to the `py3-none-any` wheel of coverage 7.17.0\ninstead of\n7.10.7.\n\nThis prepares for selecting the platform specific wheels for more of the\ntoolchain platforms.\n\nWork towards #3902",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70de4d907b9d25822da73126f2de76106f827893",
      "old_mode": 33261,
      "old_path": "dev/update_deps/update_coverage_deps.py",
      "new_id": "655a1ae6d557d71a98a6248f1bd97d166ac3e77d",
      "new_mode": 33261,
      "new_path": "dev/update_deps/update_coverage_deps.py"
    },
    {
      "type": "modify",
      "old_id": "3fd205f5bcd329607437b7a72750143f66aef051",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "dc0758efa58f5c52b1bd3acbb7224a35c89ab6e0",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "98088e3d8af799e34cabb4e4f0bc33892534483d",
      "old_mode": 33188,
      "old_path": "python/private/coverage_deps.bzl",
      "new_id": "6f826f897af7e2fd75cc194a7581e505785e7f88",
      "new_mode": 33188,
      "new_path": "python/private/coverage_deps.bzl"
    },
    {
      "type": "modify",
      "old_id": "ddb82cd6c5a271c350c6153262626d2728db2f2d",
      "old_mode": 33188,
      "old_path": "tests/coverage_deps/coverage_deps_test.bzl",
      "new_id": "d53ac667903c466c4c0bdae86fac5f269272cd37",
      "new_mode": 33188,
      "new_path": "tests/coverage_deps/coverage_deps_test.bzl"
    }
  ]
}
