)]}'
{
  "commit": "cbc8774681a3c9cf70cf71ddf1a485e06cf20f59",
  "tree": "ffebc4781d32135cdf3149631cde04bc30db562c",
  "parents": [
    "77cf48db6914186efbaae05f6b9ae5941e760c7c"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Sep 15 23:25:19 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 16 06:25:19 2025 +0000"
  },
  "message": "fix: venv site packages with pkgutil packages (#3268)\n\nCurrently, an error occurs if one packages files are intended to go into\na\nsub-directory of another package\u0027s directory. This can happen when\npkgutil-style\nnamespace packages are used, which results in multiple distributions\nwanting\nto install the same files (pkgutil `__init__.py` files) into the same\ntop-level\ndirectories. This eventually results in a Bazel error because Bazel\ndetects that\nthe one output is the prefix of another.\n\nTo fix, detect when distributions overlap in their paths and merge their\nfiles\nmanually. Internally, entries are sorted from shorted venv path to\nlongest,\nhowever, that\u0027s just an implementation detail.\n\nAlong the way, give agents better advice for bzl_library targets.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3204\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e21b15bd03c91c528e76d6ecbd21798a6cd72f07",
      "old_mode": 33188,
      "old_path": "AGENTS.md",
      "new_id": "3d5219c2bca5578854c34af4f3bee2361a7c7cbd",
      "new_mode": 33188,
      "new_path": "AGENTS.md"
    },
    {
      "type": "modify",
      "old_id": "abd89e51b57c72e6d70937479e1b6f4aa00eb437",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "382096f826ec668c4b05463319578f1283eb7764",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "916c14f9f20d2460e0655c41b95ff3f4bdae08c8",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "5e2043c0c57264d07295f101828bf434c3b01afb",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9fc366818dee5a8eed4237210cacbf0cc00079d3",
      "old_mode": 33188,
      "old_path": "python/private/common.bzl",
      "new_id": "33b175c247c50fc68b0115b8bc25031bc78847f1",
      "new_mode": 33188,
      "new_path": "python/private/common.bzl"
    },
    {
      "type": "modify",
      "old_id": "59800da566d03f76ad4eeb3a2886558e868baf76",
      "old_mode": 33188,
      "old_path": "python/private/py_executable.bzl",
      "new_id": "bef5934729b7d353b44b04ceb1270315b758bfb3",
      "new_mode": 33188,
      "new_path": "python/private/py_executable.bzl"
    },
    {
      "type": "modify",
      "old_id": "31df5cfbde9bfa8b4ef3e9028fdbe966c8fd2e21",
      "old_mode": 33188,
      "old_path": "python/private/py_info.bzl",
      "new_id": "f96dec554bdcac76a80960daaa06111569c965f7",
      "new_mode": 33188,
      "new_path": "python/private/py_info.bzl"
    },
    {
      "type": "modify",
      "old_id": "fc8e5839a058d8b7e017954d61200c5759156635",
      "old_mode": 33188,
      "old_path": "python/private/py_library.bzl",
      "new_id": "b2a9fdd3be9f63f724ce011012e211a6246d7fdf",
      "new_mode": 33188,
      "new_path": "python/private/py_library.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "291920b848514f0ec453fefd2268665ca799c198",
      "new_mode": 33188,
      "new_path": "python/private/venv_runfiles.bzl"
    },
    {
      "type": "modify",
      "old_id": "ad4870fe08e5ae1c98862b7a933d3d9bdf38ea93",
      "old_mode": 33188,
      "old_path": "tests/bootstrap_impls/venv_relative_path_tests.bzl",
      "new_id": "72b5012809989c46de142404b0405f3fc3f02375",
      "new_mode": 33188,
      "new_path": "tests/bootstrap_impls/venv_relative_path_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "e64299e1ad86a1ad850f8d7632b784ae8ce2b38b",
      "old_mode": 33188,
      "old_path": "tests/venv_site_packages_libs/BUILD.bazel",
      "new_id": "92d5dec6d367d17db04d23b7957bb19f5ba383fe",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "60afd34c38add0a65f35b811438c6b8c3b474b61",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/app_files_building/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0a0265eb8c3f2f35c0421cc7c03f4403fc9e7f0f",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "7e5838d2c279b7a10fabc35b528c334584d7db54",
      "old_mode": 33188,
      "old_path": "tests/venv_site_packages_libs/bin.py",
      "new_id": "772925f00eabf79565d3447a1cb9486ea4a7b0c1",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/bin.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c805b1ad53ede5f5883341f563915da5aeb79d56",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/pkgutil_top/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e1809a325a1dc6bc1a1f0bbe2d6170c7a54bef72",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/pkgutil_top/site-packages/pkgutil_top/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/pkgutil_top/site-packages/pkgutil_top/top.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d771628a0708829dc38803434030cad1acc9b3a",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/pkgutil_top_sub/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7fb2340ea1603c000e7dcf9952702b0b804c4b8",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/pkgutil_top_sub/site-packages/pkgutil_top/sub/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "tests/venv_site_packages_libs/pkgutil_top_sub/site-packages/pkgutil_top/sub/suba.py"
    }
  ]
}
