)]}'
{
  "commit": "5ba63a88d44e80255fafdfb8fefe4c76967ee3e0",
  "tree": "620aee70e4663420f695d08980090fc5966cb1b7",
  "parents": [
    "eca368af58ec8368fe3ba5422f2617e389481ce6"
  ],
  "author": {
    "name": "Siddhartha Bagaria",
    "email": "starsid@gmail.com",
    "time": "Wed Dec 20 19:11:19 2023 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Dec 20 10:11:19 2023 +0000"
  },
  "message": "fix(gazelle): __init__.py in per-file targets (#1582)\n\nAs per Python spec, `__init__.py` files are depended upon by every file\nin the package, so let\u0027s make sure that our generated targets also\nunderstand this implicit dependency. Note that because Python module\ndependencies are not a DAG, we can not depend on the Bazel target for\n`__init__.py` files (to avoid cycles in Bazel), and hence a non-empty\n`__init__.py` file is added to the `srcs` attribute of every\n`py_library` target.\n\nThe language spec also says that each package depends on the parent\npackage, but that is a less commonly used feature, and can make things\nmore complex.\n\nFrom [importlib] docs:\n\u003e Changed in version 3.3: Parent packages are automatically imported.\n\nFrom [import] language reference:\n\u003e Importing parent.one will implicitly execute parent/__init__.py and\nparent/one/__init__.py.\n\n\n[importlib]:\nhttps://docs.python.org/3/library/importlib.html#importlib.import_module\n[import]:\nhttps://docs.python.org/3/reference/import.html#regular-packages\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b032f4e427c9f50691303ae99cb995b34aab7aef",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "b524536b8cc2952257cdf0ee1075cb0abee069bc",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "8272b490f763c95f8014b376160fcc06f02b144d",
      "old_mode": 33188,
      "old_path": "gazelle/README.md",
      "new_id": "567d290395ebc06a66bdafbe78e17344cfe8ca92",
      "new_mode": 33188,
      "new_path": "gazelle/README.md"
    },
    {
      "type": "modify",
      "old_id": "2d3880571c163415af7f43b1936aa391c87ea4b3",
      "old_mode": 33188,
      "old_path": "gazelle/python/configure.go",
      "new_id": "69d276266e735b010f88fdc42d5b04fd2f775f5d",
      "new_mode": 33188,
      "new_path": "gazelle/python/configure.go"
    },
    {
      "type": "modify",
      "old_id": "5ab9f53c792865bcfecd2db4d2c4abd061df64ae",
      "old_mode": 33188,
      "old_path": "gazelle/python/generate.go",
      "new_id": "8d9b1699b5943249811b82127c36c0b76a18a444",
      "new_mode": 33188,
      "new_path": "gazelle/python/generate.go"
    },
    {
      "type": "modify",
      "old_id": "1ddd63d3c2f0d93ee5e34bd0434feeeec2a07b30",
      "old_mode": 33188,
      "old_path": "gazelle/python/resolve.go",
      "new_id": "f019a64c1a6e72695f19f26b32b6378a647e7ecf",
      "new_mode": 33188,
      "new_path": "gazelle/python/resolve.go"
    },
    {
      "type": "modify",
      "old_id": "a5853f6c5c0f47711558036f63acdfd24eb6ecd4",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/per_file_non_empty_init/BUILD.in",
      "new_id": "f76a3d0b49b3cf97b402bde584a26eda8f1ee1e7",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/per_file_non_empty_init/BUILD.in"
    },
    {
      "type": "modify",
      "old_id": "8733dbd971a1d193c4596ed9a4cad5a6793a4c55",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/per_file_non_empty_init/BUILD.out",
      "new_id": "ee4a417966dec4ad0f67d0fce1d6fd3a093bb379",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/per_file_non_empty_init/BUILD.out"
    },
    {
      "type": "modify",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/per_file_subdirs/bar/BUILD.in",
      "new_id": "4fc674a69a3c7a596155bece389932083283181e",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/per_file_subdirs/bar/BUILD.in"
    },
    {
      "type": "modify",
      "old_id": "4da8d9c8b7cfab8478e143a2c0e0082a2b5de69d",
      "old_mode": 33188,
      "old_path": "gazelle/python/testdata/per_file_subdirs/bar/BUILD.out",
      "new_id": "8835fb2ad7fa98c59affc1d83d0c9ea6834cd08d",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/per_file_subdirs/bar/BUILD.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/per_file_subdirs/bar/bar.py"
    },
    {
      "type": "modify",
      "old_id": "636d6a4cfcb5eb2c3a40deae4314f4c3ea80597a",
      "old_mode": 33188,
      "old_path": "gazelle/pythonconfig/pythonconfig.go",
      "new_id": "09d308ad359f9d04a349afc13ccc8e622b4a42ad",
      "new_mode": 33188,
      "new_path": "gazelle/pythonconfig/pythonconfig.go"
    }
  ]
}
