)]}'
{
  "commit": "37cb91a33fecc10597c67fef6fe0c35011cf7e67",
  "tree": "671b79b6ab94c245c3a7e9253cbd343c6f5bace5",
  "parents": [
    "6df5cbb68b15b70ecff20d7054fb051edad41864"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Sep 08 21:41:19 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 09 04:41:19 2025 +0000"
  },
  "message": "feat: allow registering arbitrary settings for py_binary transitions (#3248)\n\nThis implements the ability for users to add additional settings that\npy_binary, py_test,\nand py_wheel can transition on.\n\nThere were three main use cases motivating this feature:\n1. Making it easier to have multiple pypi dependency closures and shared\ndependencies.\n2. Making it easier to override flags for `py_wheel`.\n3. Making it easier to have per-target setting of things like\nbootstrap_impl, venv\n   site packages, etc.\n\nIt also adds most of our config settings to the the transition\ninputs/outputs for those\nrules, which allows users to per-target force particular settings\nwithout having to\nuse e.g. `with_cfg` to wrap a target with the desired transition\nsettings. It also\nlets use avoid adding dozens of attributes (one per setting); today\nthere are\nabout 17 flags.\n\nUnder the hood, this works by having a bzlmod api that users can pass\nlabels to. These\nlabels are put into a generated bzl file, which the rules load and add\nto their\nlist of transition inputs/outputs. On the target level, the\n`config_settings` attribute,\nwhich is a `dict[label, str]`, can be set to change the particular flags\nof interest.\n\nAlong the way...\n* Create a common_labels.bzl file for the shared label strings\n* Remove the defunct py_reconfig code in sh_py_run_test.\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": "1dca3e91fa72104790d973c0801cfd615071d860",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "6251ed4c3c2bf81567ac649e611cd5976cce1b8d",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "5c2136666d75f254bd3d4d35c7a4e87655fe49e2",
      "old_mode": 33188,
      "old_path": "WORKSPACE",
      "new_id": "077ddb5e686316d4905fa2446b37626a2a18b7d8",
      "new_mode": 33188,
      "new_path": "WORKSPACE"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ba3568682fef8e0b58dbd8f14537f3eb739bbcd6",
      "new_mode": 33188,
      "new_path": "docs/howto/common-deps-with-multipe-pypi-versions.md"
    },
    {
      "type": "modify",
      "old_id": "e1a6562fe6b49e18a55fc8a40e8fb164e1d0dde7",
      "old_mode": 33188,
      "old_path": "internal_dev_deps.bzl",
      "new_id": "91f5defd3ed535580431ce6649d6e468e11860e7",
      "new_mode": 33188,
      "new_path": "internal_dev_deps.bzl"
    },
    {
      "type": "modify",
      "old_id": "e8a63d6d5b2f35a85dc51362b74a8cace94593fd",
      "old_mode": 33188,
      "old_path": "python/extensions/BUILD.bazel",
      "new_id": "e6c876c76f8bae459debe103acea3e723da82c9d",
      "new_mode": 33188,
      "new_path": "python/extensions/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2667b2a4fb8d18777fd7f7a0a0a151c8b08fe307",
      "new_mode": 33188,
      "new_path": "python/extensions/config.bzl"
    },
    {
      "type": "modify",
      "old_id": "6fc78efc2526a8eeb053196c03257b1fcd0ad827",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "f31b56ec50dae866344f00c3c263258ef053afc4",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "be9fa221385d92fb0bf39da0c1f182f168dbbea2",
      "old_mode": 33188,
      "old_path": "python/private/attr_builders.bzl",
      "new_id": "ecfc570a2b658eff50248c76a1e3ca1f06318a3f",
      "new_mode": 33188,
      "new_path": "python/private/attr_builders.bzl"
    },
    {
      "type": "modify",
      "old_id": "641fa13a23c92b08181d136da7e0f93ace86ca42",
      "old_mode": 33188,
      "old_path": "python/private/attributes.bzl",
      "new_id": "0ff92e31ee73f918760e1fa2ddd72a91e3493b5f",
      "new_mode": 33188,
      "new_path": "python/private/attributes.bzl"
    },
    {
      "type": "modify",
      "old_id": "139084f79a603990a4590d8bb30cb34c6f102405",
      "old_mode": 33188,
      "old_path": "python/private/builders_util.bzl",
      "new_id": "7710383cb1e34170e8064ca511f9892e35d1b846",
      "new_mode": 33188,
      "new_path": "python/private/builders_util.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a55b594706c276aeafad52744b2196e70ae11677",
      "new_mode": 33188,
      "new_path": "python/private/common_labels.bzl"
    },
    {
      "type": "modify",
      "old_id": "cfe2fdfd77e96f18aace9befa4a7e82390150109",
      "old_mode": 33188,
      "old_path": "python/private/internal_config_repo.bzl",
      "new_id": "b57275b672fe59e0b01934a5494fad2600fc8a33",
      "new_mode": 33188,
      "new_path": "python/private/internal_config_repo.bzl"
    },
    {
      "type": "delete",
      "old_id": "6ea3fa40c767dde0047015ebb80a6730cc273bc7",
      "old_mode": 33188,
      "old_path": "python/private/internal_deps.bzl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "41938ebf787ee328032bf0af6a97a4a4b1972a8e",
      "old_mode": 33188,
      "old_path": "python/private/py_executable.bzl",
      "new_id": "98dbc7f2848d27165585819cdf2482301933080b",
      "new_mode": 33188,
      "new_path": "python/private/py_executable.bzl"
    },
    {
      "type": "modify",
      "old_id": "c09ba68361ad59e4fe2c9e18861d97ef9019ead3",
      "old_mode": 33188,
      "old_path": "python/private/py_repositories.bzl",
      "new_id": "3ad2a972148d409be86d6c950b45c3229bb849c6",
      "new_mode": 33188,
      "new_path": "python/private/py_repositories.bzl"
    },
    {
      "type": "modify",
      "old_id": "e6352efcea52839b2308a28f0b0a51fc96363998",
      "old_mode": 33188,
      "old_path": "python/private/py_wheel.bzl",
      "new_id": "8202fa015a101c4522b9262a9032c7d84d3df894",
      "new_mode": 33188,
      "new_path": "python/private/py_wheel.bzl"
    },
    {
      "type": "modify",
      "old_id": "360503b21b68bdc61d9f05a7b28d7049439def7b",
      "old_mode": 33188,
      "old_path": "python/private/rule_builders.bzl",
      "new_id": "876ca2bf97bc40b4d53c28fea77e279c02814dea",
      "new_mode": 33188,
      "new_path": "python/private/rule_builders.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b2cf6d7d885a0e8cc852c141152667ad9622bc09",
      "new_mode": 33188,
      "new_path": "python/private/transition_labels.bzl"
    },
    {
      "type": "modify",
      "old_id": "9a91ceb062f7346784ab77bde3fe77aac060eb76",
      "old_mode": 33188,
      "old_path": "tests/builders/rule_builders_tests.bzl",
      "new_id": "3f14832d80e20727bd90416429eaa4115556dcb0",
      "new_mode": 33188,
      "new_path": "tests/builders/rule_builders_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a119ebe11694871a9eed10b67f7f428e27c57290",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7b56e0a547e07df3af76b94410577b8737ac344d",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/alpha/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8f99cd08fc4ec408c89f6617dcd7c86318fa8055",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/alpha/pyproject.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "febb6b72ae526406b5aeb83595f6b89b3dfee511",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/alpha/requirements.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7b56e0a547e07df3af76b94410577b8737ac344d",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/beta/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "02a510ffa213acc21561b616e705f64eba586d44",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/beta/pyproject.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "de05f6dc9ab5835080dca7a29ab1a2cc18fb67bd",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/beta/requirements.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47e3b2fa88161a1c6d19ab8591afc375235f43b0",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/pypi_alpha/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0521327563c4161b116a304949bf41d84403b1ad",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/pypi_alpha/pypi_alpha_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "077d87bdf0c6f2575378340a33b66132b59f8dab",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/pypi_beta/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8c34de0735e186027d4b55e6a3170f37d44b4318",
      "new_mode": 33188,
      "new_path": "tests/multi_pypi/pypi_beta/pypi_beta_test.py"
    },
    {
      "type": "modify",
      "old_id": "43c068e5971ddaa1b69ad69c0e11699619f6f54c",
      "old_mode": 33188,
      "old_path": "tests/py_wheel/py_wheel_tests.bzl",
      "new_id": "75fef3a622dc37c0beb2b3d7ba0f1863fc858b45",
      "new_mode": 33188,
      "new_path": "tests/py_wheel/py_wheel_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "b33f679e77a612ac986f118bcc2b9586684d02e0",
      "old_mode": 33188,
      "old_path": "tests/support/py_reconfig.bzl",
      "new_id": "38d53667fd73fb8564ba93832f088178014378ba",
      "new_mode": 33188,
      "new_path": "tests/support/py_reconfig.bzl"
    },
    {
      "type": "modify",
      "old_id": "49445ed3048df21d78f82cf639627eddb36f36af",
      "old_mode": 33188,
      "old_path": "tests/support/sh_py_run_test.bzl",
      "new_id": "83ac2c814b47ed60ae3917cb2d9018a029a0a4ae",
      "new_mode": 33188,
      "new_path": "tests/support/sh_py_run_test.bzl"
    },
    {
      "type": "modify",
      "old_id": "f8694629c1e1bb094456842827b7cc221e9f14fd",
      "old_mode": 33188,
      "old_path": "tests/support/support.bzl",
      "new_id": "28cab0dcbf546b26a1515d87fb515b1aac4eb54d",
      "new_mode": 33188,
      "new_path": "tests/support/support.bzl"
    },
    {
      "type": "modify",
      "old_id": "b9952865cbc48eb3a2c37cafb2bc87a138dbb23f",
      "old_mode": 33188,
      "old_path": "tests/toolchains/BUILD.bazel",
      "new_id": "f32ab6f056e93aec33ad850c1435603a391e774b",
      "new_mode": 33188,
      "new_path": "tests/toolchains/BUILD.bazel"
    }
  ]
}
