@@ -204,20 +204,21 @@ def get_enum_value_name(enum_type_name: str, value: int) -> str:
204
204
"""
205
205
return get_enum_type (enum_type_name ).get_value_name (value )
206
206
207
-
208
207
def register_decriptor (file_descriptor ) -> None :
209
208
"""Registers enums and messages defined by protobuf file DESCRIPTOR.
210
209
"""
211
210
for msg_desc in file_descriptor .message_types_by_name .values ():
212
- _msgreg .store (ProtoMessageType (msg_desc .full_name , msg_desc ._concrete_class ))
211
+ if not msg_desc .full_name in _msgreg :
212
+ _msgreg .store (ProtoMessageType (msg_desc .full_name , msg_desc ._concrete_class ))
213
213
for enum_desc in file_descriptor .enum_types_by_name .values ():
214
- _enumreg .store (ProtoEnumType (enum_desc ))
214
+ if not enum_desc .full_name in _enumreg :
215
+ _enumreg .store (ProtoEnumType (enum_desc ))
215
216
216
217
def load_registered (group : str ) -> None : # pragma: no cover
217
218
"""Load registered protobuf packages.
218
219
219
220
Protobuf packages must register the pb2-file DESCRIPTOR in `entry_points` section of
220
- `setup.cfg` file.
221
+ `setup.cfg` or `pyproject.toml` file.
221
222
222
223
Arguments:
223
224
group: Entry-point group name.
@@ -233,14 +234,20 @@ def load_registered(group: str) -> None: # pragma: no cover
233
234
firebird.base.lib_b = firebird.base.lib_b_pb2:DESCRIPTOR
234
235
firebird.base.lib_c = firebird.base.lib_c_pb2:DESCRIPTOR
235
236
237
+ # pyproject.toml
238
+
239
+ [project.entry-points."firebird.base.protobuf"]
240
+ "firebird.base.lib_a" = "firebird.base.lib_a_pb2:DESCRIPTOR"
241
+ "firebird.base.lib_b" = "firebird.base.lib_b_pb2:DESCRIPTOR"
242
+ "firebird.base.lib_c" = "firebird.base.lib_c_pb2:DESCRIPTOR"
243
+
236
244
# will be loaded with:
237
245
238
246
load_registered('firebird.base.protobuf')
239
247
"""
240
248
for desc in (entry .load () for entry in entry_points ().get (group , [])):
241
249
register_decriptor (desc )
242
250
243
-
244
251
for well_known in [any_pb2 , struct_pb2 , duration_pb2 , empty_pb2 , timestamp_pb2 , field_mask_pb2 ]:
245
252
register_decriptor (well_known .DESCRIPTOR )
246
253
del any_pb2 , struct_pb2 , duration_pb2 , empty_pb2 , timestamp_pb2 , field_mask_pb2
0 commit comments