)]}'
{
  "commit": "004be45d2bf9924fc6805445d34885b0e1d6283d",
  "tree": "906efb59a27d289359040d97ea6591342a43f0ea",
  "parents": [
    "f02c9c72f5f0d63ce10da7b7393f58bc541e835a"
  ],
  "author": {
    "name": "Charles OuGuo",
    "email": "shaldengeki@gmail.com",
    "time": "Sun Jul 20 16:54:06 2025 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Jul 20 20:54:06 2025 +0000"
  },
  "message": "feat(gazelle): `python_proto_naming_convention` directive controls `py_proto_library` naming (#3093)\n\nCloses https://github.com/bazel-contrib/rules_python/issues/3081.\n\nThis adds support in the Gazelle plugin for controlling how the\ngenerated `py_proto_library` rules are named; support for these was\noriginally added in\nhttps://github.com/bazel-contrib/rules_python/pull/3057. We do this via\na new Gazelle directive, `python_proto_naming_convention`, which is\nsimilar to `python_library_naming_convention` and the like, except it\ninterpolates `$proto_name$`, which is the `proto_library` rule minus any\ntrailing `_proto`. We default to `$proto_name$_py_pb2`.\n\nFor instance, for a `proto_library` named `foo_proto`, the default value\nwould generate `foo_py_pb2`, aligning with [the convention stated in the\nBazel\ndocs.](https://bazel.build/reference/be/protocol-buffer#py_proto_library)",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b36ceafa27d7ba0fd5c950609bf9ae6c7560e42c",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "d54d3a888114397f601b63ff519ce14f379edcf6",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "cf91461e392eba3ff062715478cbcb0e18f1e520",
      "old_mode": 33188,
      "old_path": "gazelle/README.md",
      "new_id": "222c1171ab84d7be4ddd2e2a725671dc76e3d0ab",
      "new_mode": 33188,
      "new_path": "gazelle/README.md"
    },
    {
      "type": "modify",
      "old_id": "7131be283d0c1d4ef2c328d509877b35b092d9c6",
      "old_mode": 33188,
      "old_path": "gazelle/python/configure.go",
      "new_id": "079f1d84d465d83102cd58d6c8a0ea2d44d2a98a",
      "new_mode": 33188,
      "new_path": "gazelle/python/configure.go"
    },
    {
      "type": "modify",
      "old_id": "279bee6af7ce90ce5ceb7c2adf87a4347ed272ba",
      "old_mode": 33188,
      "old_path": "gazelle/python/generate.go",
      "new_id": "5b6ba79d6982f3abe0d45208a46fa71be24e2e10",
      "new_mode": 33188,
      "new_path": "gazelle/python/generate.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "594379cdfc55c6ee4a7a03fd8433ea375df24a84",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "faff6af87ac0ef60c3f9dacae80ca00b08118b58",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/WORKSPACE"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "36dd656b39e5bc20d7483645c4bd79ddeeffaa1c",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2171d877f47cc34847c4034f2c274e9a6ec86450",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test1_python_generation_disabled_does_nothing/BUILD.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2171d877f47cc34847c4034f2c274e9a6ec86450",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test1_python_generation_disabled_does_nothing/BUILD.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "022e29ae693935d2b849417b57da915c5dadf56a",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test1_python_generation_disabled_does_nothing/foo.proto"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4713404b19cec05fd6b4486ccaa84c45dc32be87",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test2_python_generation_enabled_uses_default/BUILD.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "686252f27c793aff7497599e5c1034721c1d21a7",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test2_python_generation_enabled_uses_default/BUILD.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fe2af27aa6fb6f86b01f01c75a115f887143a181",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test2_python_generation_enabled_uses_default/foo.proto"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b68a9937dc6d05e138d426aada3de836eff6bb3d",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test3_python_generation_enabled_uses_value/BUILD.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f432e9a0c35677ebdb937293a975206505141fc4",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test3_python_generation_enabled_uses_value/BUILD.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fe2af27aa6fb6f86b01f01c75a115f887143a181",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test3_python_generation_enabled_uses_value/foo.proto"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cc7d120a7eb45a6432beb62f6eff0c7646ccf457",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test4_python_generation_enabled_with_preexisting_keeps_intact/BUILD.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "080b83f1fb4702e04d546a9b6560508b47e1f598",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test4_python_generation_enabled_with_preexisting_keeps_intact/BUILD.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fe2af27aa6fb6f86b01f01c75a115f887143a181",
      "new_mode": 33188,
      "new_path": "gazelle/python/testdata/directive_python_proto_naming_convention/test4_python_generation_enabled_with_preexisting_keeps_intact/foo.proto"
    },
    {
      "type": "modify",
      "old_id": "b76e1f92ec67e328476ce1e6db3754b0f30fb5d6",
      "old_mode": 33188,
      "old_path": "gazelle/pythonconfig/pythonconfig.go",
      "new_id": "001fd334a41e8b86d695f7abe1ecc8e5a29573f8",
      "new_mode": 33188,
      "new_path": "gazelle/pythonconfig/pythonconfig.go"
    }
  ]
}
