)]}'
{
  "commit": "efa67e940e630b66f50cede36c08ea6271fef2e5",
  "tree": "91d867188c2d92e10ad6239eb696182df8907c9c",
  "parents": [
    "b1fb23bc41b451aece46f8d24f09e63b312388bb"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Wed Jul 01 16:28:37 2026 -0700"
  },
  "committer": {
    "name": "github-actions[bot]",
    "email": "41898282+github-actions[bot]@users.noreply.github.com",
    "time": "Thu Jul 02 07:56:07 2026 +0000"
  },
  "message": "feat(pypi): add pip.dep to declare abstract pypi dependencies (#3850)\n\nIntroduce the pip.dep tag class to allow modules to declare abstract\nPyPI dependencies. These declarations ensure the target structure for\na PyPI package is created, but provide a no-op implementation that\npasses analysis time, but fails at execution time.\n\nAlong the way, create an agent rule for `*.bzl` files to help guide it\nin creating better bzl files.\n\n(cherry picked from commit 30a05831ff8cda98b7fe62fb48fdbf70a01faf09)\n\nWork towards #3867\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "10aca72184b1b5188fc76d6840e8ffe277534d74",
      "new_mode": 33188,
      "new_path": ".agents/rules/bzl.md"
    },
    {
      "type": "modify",
      "old_id": "6506c8d608ae8dd2f8ff2ed1cb146d8c6ee34ed7",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "0e9160892b171cfb68f3f2275e396a6dc44ee6eb",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "161a7536454c763584d151a69d73a598936e891b",
      "old_mode": 33188,
      "old_path": "docs/pypi/download.md",
      "new_id": "88c2dd296d27e1b7b96f3655b5144ffbf0626d6f",
      "new_mode": 33188,
      "new_path": "docs/pypi/download.md"
    },
    {
      "type": "modify",
      "old_id": "02c5ad0c34485fcb7254d3f9cdc19321f8c9a69a",
      "old_mode": 33188,
      "old_path": "python/private/pypi/extension.bzl",
      "new_id": "094cac7f3f562c9d2d53fef00773a4cf56e576f0",
      "new_mode": 33188,
      "new_path": "python/private/pypi/extension.bzl"
    },
    {
      "type": "modify",
      "old_id": "c59f754b105ac7ec0c7ff1a47f89823c8b9c87f0",
      "old_mode": 33188,
      "old_path": "python/private/pypi/missing_package.bzl",
      "new_id": "46823e813b1bc98cb0ebe530fa513e8d65f346ee",
      "new_mode": 33188,
      "new_path": "python/private/pypi/missing_package.bzl"
    },
    {
      "type": "modify",
      "old_id": "8a37d4b153f9c06f3b700a4bb05ea928a6140be0",
      "old_mode": 33188,
      "old_path": "tests/integration/unified_pypi/BUILD.bazel",
      "new_id": "c0b9905fa63de63ef1275fdf5d1d1d02bf20b33a",
      "new_mode": 33188,
      "new_path": "tests/integration/unified_pypi/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "0d0f44f61c29f0d7b5f29d5101170b91328d84cd",
      "old_mode": 33188,
      "old_path": "tests/integration/unified_pypi/MODULE.bazel",
      "new_id": "6a4b87e015e7c578839387bd96d86fb7c6550a2e",
      "new_mode": 33188,
      "new_path": "tests/integration/unified_pypi/MODULE.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b03607e77db673ad6035886853826dd12a346d1",
      "new_mode": 33188,
      "new_path": "tests/integration/unified_pypi/bin_declared_only.py"
    },
    {
      "type": "modify",
      "old_id": "707ab13444830da9c8f3f05d113119896240bdfe",
      "old_mode": 33188,
      "old_path": "tests/integration/unified_pypi_test.py",
      "new_id": "a19a9fcfbe4718c90dfcffe7f15685b4f8abfd00",
      "new_mode": 33188,
      "new_path": "tests/integration/unified_pypi_test.py"
    },
    {
      "type": "modify",
      "old_id": "bc4c0bcb5b77b32a9a35548c63d0b08ed82381d6",
      "old_mode": 33188,
      "old_path": "tests/pypi/extension/extension_tests.bzl",
      "new_id": "c2e0c8b60f1f587178841135e99e4660a84acd19",
      "new_mode": 33188,
      "new_path": "tests/pypi/extension/extension_tests.bzl"
    }
  ]
}
