)]}'
{
  "commit": "3730803afa098274d538869e6aa7a63e1a424e5a",
  "tree": "3e19a73126dbae9219d4c083fb4b0b997dc58389",
  "parents": [
    "45363a124572c4954b84ba6c948012f0e9061aed"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "rlevasseur@google.com",
    "time": "Sat May 18 09:44:18 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat May 18 16:44:18 2024 +0000"
  },
  "message": "feat: compile source files at build time (#1902)\n\nThis implements precompiling: performing Python source to byte code\ncompilation at build time. This allows improved program startup time by\nallowing the byte code compilation step to be skipped at runtime.\n\nPrecompiling is disabled by default, for now. A subsequent release will\nenable it by default. This allows the necessary flags and attributes to\nbecome available so users can opt-out prior to it being enabled by\ndefault. Similarly, `//python:features.bzl` is introduced to allow\nfeature detection.\n\nThis implementation is made to serve a variety of use cases, so there\nare several attributes and flags to control behavior. The main use cases\nbeing served are:\n* Large mono-repos that need to incrementally enable/disable\nprecompiling.\n* Remote execution builds, where persistent workers aren\u0027t easily\navailable.\n* Environments where toolchains are custom defined instead of using the\nones created by rules_python.\n\nTo that end, there are several attributes and flags to control behavior,\nand the toolchains allow customizing the tools used.\n\nFixes https://github.com/bazelbuild/rules_python/issues/1761",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9bcb523a38f24be49e43c02324c40a32b29eae36",
      "old_mode": 33188,
      "old_path": ".bazelignore",
      "new_id": "713903d83286218a1c80561adaa95fc341b39980",
      "new_mode": 33188,
      "new_path": ".bazelignore"
    },
    {
      "type": "modify",
      "old_id": "61fd0e760181d41ff1178e500b51aa732d787cdb",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "94cfb93350805891bff792d5b741dabc388aa464",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "modify",
      "old_id": "3b0d526870e4b56add238eabb6443866b5e25d6c",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "61e9d95cd278ec2bf8419465e903811f44b94afe",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "eadd3ac11a0660748ff14fb1ac4060d41092b608",
      "old_mode": 33188,
      "old_path": "docs/sphinx/index.md",
      "new_id": "13cfa56aa47f49a73ea7ffa777217b0d9597e83f",
      "new_mode": 33188,
      "new_path": "docs/sphinx/index.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "791fc41145786bcdbece1357ad69033f0bda9f77",
      "new_mode": 33188,
      "new_path": "docs/sphinx/precompiling.md"
    },
    {
      "type": "modify",
      "old_id": "d5863473d7b29053cbecf64c5d7ad91cdb004ac2",
      "old_mode": 33188,
      "old_path": "python/BUILD.bazel",
      "new_id": "51404701a50d85638001f761a435a708cfe3d7b3",
      "new_mode": 33188,
      "new_path": "python/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a017f9767edfb6255480be47b89f50e883da862f",
      "old_mode": 33188,
      "old_path": "python/config_settings/BUILD.bazel",
      "new_id": "a0e59f70c0bf8bed93f6f504b9991a716d7b6933",
      "new_mode": 33188,
      "new_path": "python/config_settings/BUILD.bazel"
    },
    {
      "type": "rename",
      "old_id": "3ff3c507fc51dd52a3e75f065425a90139857e6c",
      "old_mode": 33188,
      "old_path": "tests/support/test_platforms.bzl",
      "new_id": "3a10532c6e282114061496e57273edae58ab9490",
      "new_mode": 33188,
      "new_path": "python/features.bzl",
      "score": 60
    },
    {
      "type": "modify",
      "old_id": "fdbd20b896e06ed7bc8d7b0f422f2f96d5609af6",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "181175679a5b33bafd0fc932c293e2309cd01f5a",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "2f0683bf1bb30f1a1d7a9193101850f1e9a35afc",
      "old_mode": 33188,
      "old_path": "python/private/common/BUILD.bazel",
      "new_id": "e258f8a5eb3ab37305dccbf016ca6fffceee4283",
      "new_mode": 33188,
      "new_path": "python/private/common/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "d4f853247f2cc5a501e80f04513fc1cf7145721f",
      "old_mode": 33188,
      "old_path": "python/private/common/attributes.bzl",
      "new_id": "eb70055787159b10c76957d7f433c425c7d9f200",
      "new_mode": 33188,
      "new_path": "python/private/common/attributes.bzl"
    },
    {
      "type": "modify",
      "old_id": "75c117f5cd00478ec7fa77a895268611ef16c7d0",
      "old_mode": 33188,
      "old_path": "python/private/common/common.bzl",
      "new_id": "cfa7db7a2dc3e82ffae69a6240b42eb344f30822",
      "new_mode": 33188,
      "new_path": "python/private/common/common.bzl"
    },
    {
      "type": "modify",
      "old_id": "a03721334d013b8de2e740b6095a16dea8e1f5f4",
      "old_mode": 33188,
      "old_path": "python/private/common/common_bazel.bzl",
      "new_id": "8f86fb57969bb615f31c2d639967a722398af8ca",
      "new_mode": 33188,
      "new_path": "python/private/common/common_bazel.bzl"
    },
    {
      "type": "modify",
      "old_id": "0b43413dc0a9a1d24465df8cfcb22292ceb12a75",
      "old_mode": 33188,
      "old_path": "python/private/common/providers.bzl",
      "new_id": "ab56fbef4d486bd3014cf29231ff2384a2d1306b",
      "new_mode": 33188,
      "new_path": "python/private/common/providers.bzl"
    },
    {
      "type": "modify",
      "old_id": "03608930f0a7f3b1ad370ed10bed611b2cb2f0d6",
      "old_mode": 33188,
      "old_path": "python/private/common/py_executable.bzl",
      "new_id": "cf7d6fad507f826343fc8121a2a4aab35ee8cde4",
      "new_mode": 33188,
      "new_path": "python/private/common/py_executable.bzl"
    },
    {
      "type": "modify",
      "old_id": "ff4e3c1fb041474ea51b3d3dd52b9bb133added4",
      "old_mode": 33188,
      "old_path": "python/private/common/py_executable_bazel.bzl",
      "new_id": "1c41fc15e56f58062fd1709ab6f12d0ecb11822d",
      "new_mode": 33188,
      "new_path": "python/private/common/py_executable_bazel.bzl"
    },
    {
      "type": "modify",
      "old_id": "28ee7bf4b6897b66801ea3a95b0fa6b80c02b7c3",
      "old_mode": 33188,
      "old_path": "python/private/common/py_library.bzl",
      "new_id": "b927a4fb9ad92d463bb110a072f31c21d23df797",
      "new_mode": 33188,
      "new_path": "python/private/common/py_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "190158bed000bd1f613325f34f995e9df08b9c87",
      "old_mode": 33188,
      "old_path": "python/private/common/py_runtime_rule.bzl",
      "new_id": "53d925cdba5c7badbc309ff666fab72f13b58b04",
      "new_mode": 33188,
      "new_path": "python/private/common/py_runtime_rule.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "011d9fbda14ea4d56e51281b6cef3e3438f44e28",
      "new_mode": 33188,
      "new_path": "python/private/enum.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "36d305da8ac352b2d72e2d08346cc1673f70f669",
      "new_mode": 33188,
      "new_path": "python/private/flags.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3011f531c883897a909a74ed894620845f967e8f",
      "new_mode": 33188,
      "new_path": "python/private/py_exec_tools_info.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6036db4e7c4a9cd5829d1610bd108a60b1177d72",
      "new_mode": 33188,
      "new_path": "python/private/py_exec_tools_toolchain.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "833ea53b1cc83777d3ad9a111b62a47c4e61933b",
      "new_mode": 33188,
      "new_path": "python/private/py_interpreter_program.bzl"
    },
    {
      "type": "modify",
      "old_id": "5b4b6f89729b61aebc77f3b6dfb13ee086306f3d",
      "old_mode": 33188,
      "old_path": "python/private/py_toolchain_suite.bzl",
      "new_id": "9971a8a4c33008642f50482c132fcbb47a3d0b7f",
      "new_mode": 33188,
      "new_path": "python/private/py_toolchain_suite.bzl"
    },
    {
      "type": "modify",
      "old_id": "49f4cb544595951b057d45f67fd30c6c7b53ba23",
      "old_mode": 33188,
      "old_path": "python/private/python_bootstrap_template.txt",
      "new_id": "8eaedbc4dc1a3782290e87472e70e9607e758791",
      "new_mode": 33188,
      "new_path": "python/private/python_bootstrap_template.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef81bf3bd48adfb704ac71327476c8b287997aff",
      "new_mode": 33188,
      "new_path": "python/private/toolchain_types.bzl"
    },
    {
      "type": "modify",
      "old_id": "eb122b6e7b1dfe535823d547e64900b8aa6ac528",
      "old_mode": 33188,
      "old_path": "python/repositories.bzl",
      "new_id": "26081a6b48d483c3af18dfdb2aa2aa8835e9b74d",
      "new_mode": 33188,
      "new_path": "python/repositories.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "201adbadd65a89fee3086e7cd72544fda6ad2bdc",
      "new_mode": 33188,
      "new_path": "tests/base_rules/precompile/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f88a438685c0f11583a815f89df24e50ded44c6c",
      "new_mode": 33188,
      "new_path": "tests/base_rules/precompile/precompile_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "ce86ecaf113bbee5cea15bed4aabd48a392d26ee",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_executable_base_tests.bzl",
      "new_id": "b6f28026dba63366fa78e0154dafc502dd74164c",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_executable_base_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "b23308c388debd04f21d2250ce6a5c41cd3434f1",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_info_subject.bzl",
      "new_id": "bfed0b335df6ae748b86de9ea301759ff37b6e16",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_info_subject.bzl"
    },
    {
      "type": "modify",
      "old_id": "f4b704e6caf4495e0ca6018b4dd61be0e361ffca",
      "old_mode": 33188,
      "old_path": "tests/base_rules/py_test/py_test_tests.bzl",
      "new_id": "50c1db27cfbc2bb9ba7505ea47387442514f9982",
      "new_mode": 33188,
      "new_path": "tests/base_rules/py_test/py_test_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "0a4c98ccce07135fb5a4024fa99777dccfdb5d2c",
      "old_mode": 33188,
      "old_path": "tests/support/BUILD.bazel",
      "new_id": "3b77cde0c5c8e47f202210bc62d8775a4978c58f",
      "new_mode": 33188,
      "new_path": "tests/support/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "14a743b8a202be8477d3d6ede879a02f33f946df",
      "new_mode": 33188,
      "new_path": "tests/support/support.bzl"
    },
    {
      "type": "modify",
      "old_id": "8776eba919f54e25b9d787119f6a97744062b79a",
      "old_mode": 33188,
      "old_path": "tests/toolchains/defs.bzl",
      "new_id": "bfc55199d38f9a363640778d5d67fe6d81ebb8da",
      "new_mode": 33188,
      "new_path": "tests/toolchains/defs.bzl"
    },
    {
      "type": "modify",
      "old_id": "b2aca5cd870b0b6678c9b2585e5ddbe132c38c53",
      "old_mode": 33188,
      "old_path": "tools/BUILD.bazel",
      "new_id": "4f42bcb02dd9ab1d6e9017e7182de5e263a5550e",
      "new_mode": 33188,
      "new_path": "tools/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aa4610671b607f05e3fa57838b5833c7fab00982",
      "new_mode": 33188,
      "new_path": "tools/launcher/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "268f41b032c9579cc08926f80a8eb9033b5affcb",
      "new_mode": 33188,
      "new_path": "tools/precompiler/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d1b17132e77d32a47f0ecfdbe833451d1fd38274",
      "new_mode": 33188,
      "new_path": "tools/precompiler/precompiler.py"
    }
  ]
}
