)]}'
{
  "commit": "9d3665209e991b7359d7d6c077798484059d374c",
  "tree": "ae120e5f4d31b0e8ecf847222dcdc5b331363dd7",
  "parents": [
    "fd22cfff38697b2c10b3feff88ea55d6d57bed7f"
  ],
  "author": {
    "name": "Showta Ishizaki",
    "email": "zakinko@snowrabbit.org",
    "time": "Sun Sep 27 20:36:52 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Sep 27 20:36:52 2026 +0000"
  },
  "message": "fix(pypi): skip a pip.parse version with no interpreter for the host (#4184)\n\nOn Windows ARM64, evaluating the `pip` extension fails as soon as any\nmodule in the graph calls `pip.parse` for Python 3.9 or 3.10:\n\n```\nUnable to find interpreter for pip hub \u0027grpc_python_dependencies\u0027 for python_version\u003d3.9: ...\nExpected to find python_3_9_host among registered versions:\n  python_3_11_host\n  python_3_12_host\n  python_3_13_host\n```\n\nThere is no CPython 3.9 or 3.10 build for `aarch64-pc-windows-msvc` in\nthe\nruntime manifest, so those toolchains have no host interpreter there.\n\n`_pip_parse` already handles a close relative of this: a version missing\nfrom `minor_mapping` is skipped with an info message, and the hub\u0027s\nselect fails later only if that version is actually used. This treats a\nversion with no host interpreter the same way, right after that check.\nThe `python_X_Y_host` name is built in one small helper, so the new\ncheck\nand `_detect_interpreter` look at the same thing.\n\nTo check it, I ran `bazel query @bazel_pip_dev_deps//:all` in a plain\ncheckout of Bazel master (rules_python 1.9.2, grpc 1.76.0) with and\nwithout this change back-ported to 1.9.2, on `windows-11-arm` and\n`ubuntu-latest`:\n\n```\n                 without   with\nwindows-arm64    rc\u003d7      rc\u003d0    3.9 and 3.10 skipped for grpc, protoc-gen-validate\n                                   and rules_fuzzing\nlinux-x86_64     rc\u003d0      rc\u003d0    nothing new skipped\n```\n\nhttps://github.com/zakinko/NetBSD-i386/actions/runs/36248007899\n\nWith `RULES_PYTHON_REPO_DEBUG_VERBOSITY\u003dINFO` the Windows run prints the\nnew message once for each of the six hub and version pairs, next to the\nexisting \"no registered toolchain\" one for rules_fuzzing\u0027s 3.8.\n\nThe new test in `hub_builder_tests.bzl` fails without the change with\nthe\nsame error, and `//tests/pypi/...` passes with it (254 tests, on macOS).\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": "edd4167df71dbfc2e1d4f12bc9bd047ccda5caf9",
      "new_mode": 33188,
      "new_path": "news/4184.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "596cfb2cbe40f53eebd2202fccd3926d469c1c9a",
      "old_mode": 33188,
      "old_path": "python/private/pypi/hub_builder.bzl",
      "new_id": "d1b583dc325b2051c028d7e021de5467838fe0a5",
      "new_mode": 33188,
      "new_path": "python/private/pypi/hub_builder.bzl"
    },
    {
      "type": "modify",
      "old_id": "f421c7e351e6bc5ecd220c71cc61c14e2c485bbd",
      "old_mode": 33188,
      "old_path": "tests/pypi/hub_builder/hub_builder_tests.bzl",
      "new_id": "1d4a602dc9b6d5b35374e3aaaac933af233f11b1",
      "new_mode": 33188,
      "new_path": "tests/pypi/hub_builder/hub_builder_tests.bzl"
    }
  ]
}
