Skip to content
This repository was archived by the owner on Jun 9, 2025. It is now read-only.

Commit 96d52f3

Browse files
Move global message pool to generated code (#34)
* Move global message pool to generated code * Fix error
1 parent 7e76561 commit 96d52f3

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

src/betterproto2_compiler/known_types/any.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import betterproto2
22
from betterproto2.lib.std.google.protobuf import Any as VanillaAny
33

4+
# TODO put back
5+
# default_message_pool = betterproto2.MessagePool() # Only for typing purpose
6+
default_message_pool = ...
7+
48

59
class Any(VanillaAny):
610
def pack(self, message: betterproto2.Message, message_pool: "betterproto2.MessagePool | None" = None) -> None:
@@ -10,7 +14,7 @@ def pack(self, message: betterproto2.Message, message_pool: "betterproto2.Messag
1014
The message type must be registered in the message pool, which is done automatically when the module defining
1115
the message type is imported.
1216
"""
13-
message_pool = message_pool or betterproto2.default_message_pool
17+
message_pool = message_pool or default_message_pool
1418

1519
self.type_url = message_pool.type_to_url[type(message)]
1620
self.value = bytes(message)
@@ -22,7 +26,7 @@ def unpack(self, message_pool: "betterproto2.MessagePool | None" = None) -> bett
2226
The target message type must be registered in the message pool, which is done automatically when the module
2327
defining the message type is imported.
2428
"""
25-
message_pool = message_pool or betterproto2.default_message_pool
29+
message_pool = message_pool or default_message_pool
2630

2731
message_type = message_pool.url_to_type[self.type_url]
2832

src/betterproto2_compiler/plugin/parser.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ def generate_code(request: CodeGeneratorRequest) -> CodeGeneratorResponse:
173173
for init_file in init_files:
174174
response.file.append(CodeGeneratorResponseFile(name=str(init_file)))
175175

176+
response.file.append(
177+
CodeGeneratorResponseFile(
178+
name="message_pool.py", content="import betterproto2\n\ndefault_message_pool = betterproto2.MessagePool()\n"
179+
)
180+
)
181+
176182
for output_package_name in sorted(output_paths.union(init_files)):
177183
print(f"Writing {output_package_name}", file=sys.stderr)
178184

src/betterproto2_compiler/templates/header.py.j2

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ import grpclib
4444

4545
from typing import TYPE_CHECKING
4646

47+
{# Import the message pool of the generated code. #}
48+
{% if output_file.package %}
49+
from {{ "." * output_file.package.count(".") }}..message_pool import default_message_pool
50+
{% else %}
51+
from .message_pool import default_message_pool
52+
{% endif %}
53+
4754
if TYPE_CHECKING:
4855
import grpclib.server
4956
from betterproto2.grpc.grpclib_client import MetadataLike

src/betterproto2_compiler/templates/template.py.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class {{ message.py_name }}(betterproto2.Message):
8181
{{ method_source }}
8282
{% endfor %}
8383

84-
betterproto2.default_message_pool.register_message("{{ output_file.package }}", "{{ message.proto_name }}", {{ message.py_name }})
84+
default_message_pool.register_message("{{ output_file.package }}", "{{ message.proto_name }}", {{ message.py_name }})
8585

8686

8787
{% endfor %}

0 commit comments

Comments
 (0)