Skip to content

Commit 6e0a140

Browse files
committed
Do not raise error on double protobuf registration, just ignore it
1 parent c32fbb5 commit 6e0a140

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/firebird/base/protobuf.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
208207
def 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

216217
def 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-
244251
for well_known in [any_pb2, struct_pb2, duration_pb2, empty_pb2, timestamp_pb2, field_mask_pb2]:
245252
register_decriptor(well_known.DESCRIPTOR)
246253
del any_pb2, struct_pb2, duration_pb2, empty_pb2, timestamp_pb2, field_mask_pb2

0 commit comments

Comments
 (0)