)]}'
{
  "commit": "102b5014c33397293a50cd82cce9108d6de9837d",
  "tree": "821f25d06e04d7d811563319b3084b956d89f832",
  "parents": [
    "6ce7840252cfe2b4ba4484007d0c1c1650d1196d"
  ],
  "author": {
    "name": "John Sun",
    "email": "79071267+jsun-splunk@users.noreply.github.com",
    "time": "Wed Jun 17 15:03:18 2026 +1000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jun 17 05:03:18 2026 +0000"
  },
  "message": "feat: expose interpreter files-to-run on PyRuntimeInfo (#3795)\n\nRules that execute a py_runtime interpreter in an action need the\ninterpreter executable together with its runfiles metadata. The existing\nPyRuntimeInfo fields identify the interpreter file and runtime files,\nbut do not preserve the target\u0027s FilesToRunProvider for executable\ninterpreter targets.\n\nAdd PyRuntimeInfo.interpreter_files_to_run for runtimes created from an\nexecutable interpreter target, and validate that direct provider\nconstruction keeps the FilesToRunProvider executable aligned with the\ninterpreter field. Direct file interpreters and platform runtimes\ncontinue to leave this field unset, preserving existing py_runtime\nbehavior.\n\nDocument the new public provider field and add focused analysis-test\ncoverage for executable, file-only, platform, and invalid constructor\ncases.\n\nOne example is\n[rules_pycross](https://github.com/jvolkman/rules_pycross) wheel\nbuilding with an in-build executable Python runtime. pycross needs to\nrun the selected Python interpreter in an action, but PyRuntimeInfo\npreviously exposed only the interpreter File and runtime files, not the\ninterpreter target\u0027s FilesToRunProvider. For executable in-build\nruntimes, the FilesToRunProvider is the Bazel-native handle that carries\nboth the executable and the runfiles metadata needed to stage it as an\naction tool. Exposing it lets pycross consume the runtime interpreter\ndirectly for wheel-build actions instead of reconstructing or\napproximating the interpreter\u0027s runtime closure from separate fields.\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7efdd663122047d89a5a3010513215ca4f6fff8f",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "05daf8c85f92574f0740d46183d4761db99a7012",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "d94f469fc096c6a0ff593a1131e3dcdaf05abbff",
      "old_mode": 33188,
      "old_path": "python/private/py_runtime_info.bzl",
      "new_id": "64fef399e22454d3a58c7e9766f672d2b14eb8fa",
      "new_mode": 33188,
      "new_path": "python/private/py_runtime_info.bzl"
    },
    {
      "type": "modify",
      "old_id": "dfc915f46360b82902a2d81f1a6fa7a22e8c3506",
      "old_mode": 33188,
      "old_path": "python/private/py_runtime_rule.bzl",
      "new_id": "48637389bf99faa96b32a4c44143582513c330b4",
      "new_mode": 33188,
      "new_path": "python/private/py_runtime_rule.bzl"
    },
    {
      "type": "modify",
      "old_id": "b8aa1f3fa6a00061d82dbe2f474f6b3e6f48f050",
      "old_mode": 33188,
      "old_path": "tests/py_runtime/py_runtime_tests.bzl",
      "new_id": "ac80c8556d479fbfc6d33208ab15b935a7a8a9bf",
      "new_mode": 33188,
      "new_path": "tests/py_runtime/py_runtime_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "a44fb60c2f0c530df318ff621066c298861a87b3",
      "old_mode": 33188,
      "old_path": "tests/py_runtime_info/py_runtime_info_tests.bzl",
      "new_id": "6b9ecac605cfc0fbc43e58d787b1ec5de91ecc5e",
      "new_mode": 33188,
      "new_path": "tests/py_runtime_info/py_runtime_info_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "541d4d9e1881b30cd8d8461e0c3cf6be2703deae",
      "old_mode": 33188,
      "old_path": "tests/support/py_runtime_info_subject.bzl",
      "new_id": "0c6c672743b933596132f4968fee06011c115466",
      "new_mode": 33188,
      "new_path": "tests/support/py_runtime_info_subject.bzl"
    }
  ]
}
