)]}'
{
  "commit": "a506d774dd60eedf6fce94dcccd2c233553b06d4",
  "tree": "3d813aedfd2da054d0a79177cf2375e8389f7d50",
  "parents": [
    "c181f93c9f473cf73bb1522720d12280d8f46b2c"
  ],
  "author": {
    "name": "Joel Sing",
    "email": "jsing@canva.com",
    "time": "Thu Nov 06 15:35:38 2025 +1100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Nov 06 04:35:38 2025 +0000"
  },
  "message": "fix(runfiles): correct Python runfiles path assumption (#3086)\n\nThe current _FindPythonRunfilesRoot() implementation assumes that\nthe Python module has been unpacked four levels below the runfiles\ndirectory. This is not the case in multiple situations, for example when\nrules_pycross is in use and has installed the module via pypi (in which\ncase it is five levels below runfiles).\n\nBoth strategies already know where the runfiles directory exists -\nimplement _GetRunfilesDir() on the _DirectoryBased strategy, then call\n_GetRunfilesDir() in order to populate self._python_runfiles_dir.\n\nStop passing a bogus path to runfiles.Create() in\ntestCurrentRepository(),\nsuch that the test actually uses the appropriate runfiles path.\n\nFixes #3085\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bae98230e00adfcf39667fcdb93fa25dcd84df66",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "9c6a6b62c84e460b10a17c3771cf2f6a852c7f09",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "fc794272c93ba2606b16e5e53782792c255d3d06",
      "old_mode": 33188,
      "old_path": "python/runfiles/runfiles.py",
      "new_id": "bfa9d0d05301170656d828acdf29265b197bc117",
      "new_mode": 33188,
      "new_path": "python/runfiles/runfiles.py"
    },
    {
      "type": "modify",
      "old_id": "5c92026082089001a5b263ded78c2bf1b06a79e7",
      "old_mode": 33188,
      "old_path": "tests/runfiles/BUILD.bazel",
      "new_id": "84602d2bd61600f744c4ba450dbc3485451c7d2b",
      "new_mode": 33188,
      "new_path": "tests/runfiles/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b8a3d5f7b7dccf37013c4c8f9a6185e287b86c08",
      "old_mode": 33188,
      "old_path": "tests/runfiles/runfiles_test.py",
      "new_id": "165ab8c8a9d85f21fdd4b6af47e9ec1f7911d62b",
      "new_mode": 33188,
      "new_path": "tests/runfiles/runfiles_test.py"
    },
    {
      "type": "modify",
      "old_id": "c66b0bbd8a72853498bb587ad0b4238bbe5f89e3",
      "old_mode": 33188,
      "old_path": "tests/runtime_env_toolchain/toolchain_runs_test.py",
      "new_id": "6f0948feffde5603f2ff1778dbc0fc3d5458cc6a",
      "new_mode": 33188,
      "new_path": "tests/runtime_env_toolchain/toolchain_runs_test.py"
    }
  ]
}
