)]}'
{
  "commit": "c953e5e96b2b7fb4a7adcfdfd55d686f7a30fbc9",
  "tree": "40a6aa002e71222d01b6284e5ea12275fff55dcb",
  "parents": [
    "f323d06a702c1240bb92d597eb851498b16ce571"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Wed Aug 26 07:56:55 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 26 07:56:55 2026 +0000"
  },
  "message": "fix(precompile): skip precompilation for directory and pyc inputs in srcs (#4113)\n\nPrecompiling `py_library`, `py_binary`, or `py_test` targets fails when\n`srcs` contains directory artifacts or `.pyc` files. The precompiler\ndeclares invalid actions on directories and drops non-`.py` sources from\ndefault outputs.\n\nThis change:\n* Expands direct sources to include Python files, `.pyc` files, and\n  directories.\n* Skips precompilation for directories and non-Python files while\n  retaining them in default outputs.\n* Updates `srcs` validation and documentation.\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e852e1ac96258e58301c0919d566ec82bff44dfa",
      "new_mode": 33188,
      "new_path": "news/4113.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "0b0dc97f66daaa48f6402f351d8d0811723dafb2",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "72bf7138f8e4c521da18dd6f58c2d285c142452a",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e1e77cba032d6fde9af39d5f7b2acb94358ce635",
      "old_mode": 33188,
      "old_path": "python/private/attributes.bzl",
      "new_id": "5b842f85bc0ac385d0d8ec783e22801bc1d4a0cb",
      "new_mode": 33188,
      "new_path": "python/private/attributes.bzl"
    },
    {
      "type": "modify",
      "old_id": "7e8c6decf36287f47b7a5fc88a179d439640bedb",
      "old_mode": 33188,
      "old_path": "python/private/common.bzl",
      "new_id": "5cff7f8723daaf5ff05959c404f0cbde33f32aa4",
      "new_mode": 33188,
      "new_path": "python/private/common.bzl"
    },
    {
      "type": "modify",
      "old_id": "898dc3ee2ac1b8035eb4f4c28332c7aa10891c8a",
      "old_mode": 33188,
      "old_path": "python/private/precompile.bzl",
      "new_id": "ceaa76cf88cd9d09ab72b833fb7e405dd13521da",
      "new_mode": 33188,
      "new_path": "python/private/precompile.bzl"
    },
    {
      "type": "modify",
      "old_id": "0e9c315a731d0090b0860ee9476d1aee478cdc1b",
      "old_mode": 33188,
      "old_path": "python/private/py_executable.bzl",
      "new_id": "368a785686547272dda2ee188f24fa962991b808",
      "new_mode": 33188,
      "new_path": "python/private/py_executable.bzl"
    },
    {
      "type": "modify",
      "old_id": "3118d3c9a19e08bc753fd33c668775c386cb61ac",
      "old_mode": 33188,
      "old_path": "python/private/py_library.bzl",
      "new_id": "6282b71ee1139f2f901eb3700dac5c3831f3d24a",
      "new_mode": 33188,
      "new_path": "python/private/py_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "d2c1da6b8f874a34c56324f9e41fba49d77fea2a",
      "old_mode": 33188,
      "old_path": "tests/base_rules/precompile/precompile_tests.bzl",
      "new_id": "63865a30e6ecdfb18e28e8fc18d87c282193afc7",
      "new_mode": 33188,
      "new_path": "tests/base_rules/precompile/precompile_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "a3be7c4bcf911fb459aefbae16bb15baffe26ff6",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_library/py_library_tests.bzl",
      "new_id": "80e3e1ba22c94247f5b41b3ad72d532b7d28b9f5",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_library/py_library_tests.bzl"
    }
  ]
}
