)]}'
{
  "commit": "acc3e756a6a7bcb07bb84b4ae12d98c0a6f5d74d",
  "tree": "983288694f70beec02ffc6d9fed19f68c2046994",
  "parents": [
    "151e4419d9da289f78047513c3caa0d865d4d426"
  ],
  "author": {
    "name": "faximan",
    "email": "207300+faximan@users.noreply.github.com",
    "time": "Thu Oct 08 06:15:06 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 08 06:15:06 2026 +0000"
  },
  "message": "fix: do not include transitive sources from `pyi_deps` in runtime runfiles (#4178)\n\n`pyi_deps` are documented as build-time only dependencies for type\nchecking and static analysis, but currently leaks into the runfiles.\n\nBefore: `create_py_info` merged `pyi_deps` targets using\n`py_info.merge()`, which caused all transitive sources from type stubs\nand their dependencies to be placed in `PyInfo.transitive_sources` and\nincluded in downstream binary/test runfiles.\n\nAfter: `create_py_info` only propagates `imports` (for module import\nresolution during type checking), `transitive_pyi_files`, and\n`transitive_original_sources` from `pyi_deps`. Adds unit tests verifying\n`transitive_sources` and binary runfiles exclusion.\n\nTested: in our repo using `rules_python` and `pyi_deps` for type\nchecking, this reduced the runfile tree size with 20M for a sample\n`py_test`.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "830d0a62bfb7a3662f73bb6947dbb56c413a8920",
      "old_mode": 33188,
      "old_path": "docs/api/rules_python/python/config_settings/index.md",
      "new_id": "2def8231d8569564ec0a2ccb6f882caf8bbf2627",
      "new_mode": 33188,
      "new_path": "docs/api/rules_python/python/config_settings/index.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b96863bc6b3efef824923ab2734c3edf05acf58d",
      "new_mode": 33188,
      "new_path": "news/4178.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "fc59aaf60a7eb168fca635730f654bdbee1a41fd",
      "old_mode": 33188,
      "old_path": "python/config_settings/BUILD.bazel",
      "new_id": "3dbb6c14b889ae19478d0b19ff0ebc75535d79e3",
      "new_mode": 33188,
      "new_path": "python/config_settings/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a59bf2a3fe376bf1119c28406efb4146c8f8ee0d",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "a393d90f40d57574a645fd9c4de31ae8f17c385c",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e52cd8dccd6adcdd6b76153932ab004fc052c4da",
      "old_mode": 33188,
      "old_path": "python/private/attributes.bzl",
      "new_id": "7fc87ed81eed7c2481e0e77d8044590b09ea4094",
      "new_mode": 33188,
      "new_path": "python/private/attributes.bzl"
    },
    {
      "type": "modify",
      "old_id": "5cff7f8723daaf5ff05959c404f0cbde33f32aa4",
      "old_mode": 33188,
      "old_path": "python/private/common.bzl",
      "new_id": "0a2d8a115b8ba99b7044eedf396de45af3180d38",
      "new_mode": 33188,
      "new_path": "python/private/common.bzl"
    },
    {
      "type": "modify",
      "old_id": "082ae06de06c3c6ebd3129e4a0f95446c8d8a42f",
      "old_mode": 33188,
      "old_path": "python/private/common_labels.bzl",
      "new_id": "a3b9b2ac1f889b479f4af42ea8c7a9319d6a825a",
      "new_mode": 33188,
      "new_path": "python/private/common_labels.bzl"
    },
    {
      "type": "modify",
      "old_id": "676163a59b073da18ad906e39aae0c6855af2a89",
      "old_mode": 33188,
      "old_path": "python/private/flags.bzl",
      "new_id": "372a779e56c6c3cefa7c1b96bc3847081fbc7402",
      "new_mode": 33188,
      "new_path": "python/private/flags.bzl"
    },
    {
      "type": "modify",
      "old_id": "ceaa76cf88cd9d09ab72b833fb7e405dd13521da",
      "old_mode": 33188,
      "old_path": "python/private/precompile.bzl",
      "new_id": "56666fe62a9f335c119095ee8ba02e656f7eda63",
      "new_mode": 33188,
      "new_path": "python/private/precompile.bzl"
    },
    {
      "type": "modify",
      "old_id": "dac1ddeff371fc6bd641bef9f305e86f6929964a",
      "old_mode": 33188,
      "old_path": "python/private/py_info.bzl",
      "new_id": "79483ab2f5b707df003c520461711ff1cca950d9",
      "new_mode": 33188,
      "new_path": "python/private/py_info.bzl"
    },
    {
      "type": "modify",
      "old_id": "a9fadd7564a69dae566e06a45db5d7fb3bdd1652",
      "old_mode": 33188,
      "old_path": "tests/base_rules/base_tests.bzl",
      "new_id": "9ee7e5b46ec0399ce7d1bb082baad9d668d125fb",
      "new_mode": 33188,
      "new_path": "tests/base_rules/base_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "f6b3c9bb60ca2874fa7eca0fee6d03ee071e7a02",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_executable_base_tests.bzl",
      "new_id": "34b922a6fbd1cce075783fb60cd88500216d3dc4",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_executable_base_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "0e1a96548cdaec0146283cc6a66f667fed5b84bc",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_info/py_info_tests.bzl",
      "new_id": "1aa7ff24299b3b132d52873d00259a805b6c19f6",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_info/py_info_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "6db7245d24f6a926f8ace96b20a5721ed5121df5",
      "old_mode": 33188,
      "old_path": "tests/integration/whl_library/test_contents.py",
      "new_id": "58f13354e3604b30a4a1414ed5d218eb5f2b0c59",
      "new_mode": 33188,
      "new_path": "tests/integration/whl_library/test_contents.py"
    },
    {
      "type": "modify",
      "old_id": "9122eaa9fd1532a5fdec417e3d8e1ad4c99814e1",
      "old_mode": 33188,
      "old_path": "tests/support/py_info_subject.bzl",
      "new_id": "f526f5d563097c3d432cf7a828d4a18773bca48a",
      "new_mode": 33188,
      "new_path": "tests/support/py_info_subject.bzl"
    }
  ]
}
