@@ -204,20 +204,21 @@ def get_enum_value_name(enum_type_name: str, value: int) -> str:
204204 """
205205 return get_enum_type (enum_type_name ).get_value_name (value )
206206
207-
208207def register_decriptor (file_descriptor ) -> None :
209208 """Registers enums and messages defined by protobuf file DESCRIPTOR.
210209 """
211210 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 ))
213213 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 ))
215216
216217def load_registered (group : str ) -> None : # pragma: no cover
217218 """Load registered protobuf packages.
218219
219220 Protobuf packages must register the pb2-file DESCRIPTOR in `entry_points` section of
220- `setup.cfg` file.
221+ `setup.cfg` or `pyproject.toml` file.
221222
222223 Arguments:
223224 group: Entry-point group name.
@@ -233,14 +234,20 @@ def load_registered(group: str) -> None: # pragma: no cover
233234 firebird.base.lib_b = firebird.base.lib_b_pb2:DESCRIPTOR
234235 firebird.base.lib_c = firebird.base.lib_c_pb2:DESCRIPTOR
235236
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+
236244 # will be loaded with:
237245
238246 load_registered('firebird.base.protobuf')
239247 """
240248 for desc in (entry .load () for entry in entry_points ().get (group , [])):
241249 register_decriptor (desc )
242250
243-
244251for well_known in [any_pb2 , struct_pb2 , duration_pb2 , empty_pb2 , timestamp_pb2 , field_mask_pb2 ]:
245252 register_decriptor (well_known .DESCRIPTOR )
246253del any_pb2 , struct_pb2 , duration_pb2 , empty_pb2 , timestamp_pb2 , field_mask_pb2
0 commit comments