)]}'
{
  "commit": "f570f3ae124ec5d6675d55997e0f747c1b490e5d",
  "tree": "61350480adaa32011507be81a440a24d68bbb37c",
  "parents": [
    "d2e6dbaf275d6ae202952a28c633f1600a2ce721"
  ],
  "author": {
    "name": "Douglas Thor",
    "email": "dougthor42@users.noreply.github.com",
    "time": "Tue Oct 20 16:20:23 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 20 16:20:23 2026 +0000"
  },
  "message": "fix(gazelle): Remove targets without srcs, even if they have an `imports` attribute. (#4283)\n\nBefore this PR,\n\n```starlark\npy_library(   # or py_binary or py_test or any alias_kind/map_kind\n    name \u003d \"foo\"\n    imports \u003d [\"../..\"],\n)\n```\n\nWould not be removed by Gazelle. With this PR, it\u0027s now correctly\nremoved.\n\nFor PR review:\n+ The first commit adds tests. If you\u0027re interested, you can check out\nthat commit and verify that tests fail.\n+  2nd commit adds the fix and shows that the tests now pass\n+  3rd commit is news.\n+  any subsequent commits are followup to review comments.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dac271bec6a6a2448b3cbf0d2a4939695f23543c",
      "old_mode": 33188,
      "old_path": "gazelle/python/kinds.go",
      "new_id": "d0d4492de21e3b5c73d29d72e6c2b3ae15ae5f73",
      "new_mode": 33188,
      "new_path": "gazelle/python/kinds.go"
    },
    {
      "type": "modify",
      "old_id": "815e673ee1931a0d48a592537ae5eb80360447ab",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/remove_invalid_library_package_mode/BUILD.in",
      "new_id": "31c5ca99c97bc64b95cde8d90ffd11b958e67f0f",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/remove_invalid_library_package_mode/BUILD.in"
    },
    {
      "type": "modify",
      "old_id": "d3b15a786617a9952e8c81ab2c588d7b9a25aab6",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/remove_invalid_per_file/BUILD.in",
      "new_id": "1288f9b8c98b741aae266c532fc2d5e326dc3960",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/remove_invalid_per_file/BUILD.in"
    },
    {
      "type": "modify",
      "old_id": "e56ea1617a40ee6d685638f1bb42456eece5d29f",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/remove_invalid_per_file/alias_kind/BUILD.in",
      "new_id": "e00849dc50c585a7655efb78a7d7da88b9c329d5",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/remove_invalid_per_file/alias_kind/BUILD.in"
    },
    {
      "type": "modify",
      "old_id": "19d6c017896095eab66da379691b9696bc075a5c",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/remove_invalid_per_file/alias_kind/BUILD.out",
      "new_id": "884d928acec7f7b2ac968db86c610b19a908009f",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/remove_invalid_per_file/alias_kind/BUILD.out"
    },
    {
      "type": "modify",
      "old_id": "00b9a60d6f97f813d1ea14147faea1d04a92633d",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/remove_invalid_per_file/map_kind/BUILD.in",
      "new_id": "80b58996a6b2d436fc4d4fcdf75c646c99524185",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/remove_invalid_per_file/map_kind/BUILD.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d2ef1d98ba048b83f33d63bc53046e8e15cf4b94",
      "new_mode": 33188,
      "new_path": "news/4282.fixed.md"
    }
  ]
}
