# Automatically generated by pb2py # fmt: off # isort:skip_file from enum import IntEnum from typing import Sequence, Optional from . import protobuf % for enum in enums: class ${enum.name}(IntEnum): % for value in enum.value: ${value.name} = ${value.number} % endfor % endfor % for message in messages: <% required_fields = [f for f in message.fields if f.required] repeated_fields = [f for f in message.fields if f.repeated] optional_fields = [f for f in message.fields if f.optional] %>\ class ${message.name}(protobuf.MessageType): MESSAGE_WIRE_TYPE = ${message.wire_type} % if message.fields: FIELDS = { % for field in message.fields: % if not field.required: ${field.number}: protobuf.Field("${field.name}", "${field.type_name}", repeated=${field.repeated}, required=${field.required}, default=${field.default_value_repr}), % else: ${field.number}: protobuf.Field("${field.name}", "${field.type_name}", repeated=${field.repeated}, required=${field.required}), % endif % endfor } def __init__( self, *, % for field in required_fields: ${field.name}: "${field.python_type}", % endfor % for field in repeated_fields: ${field.name}: Optional[Sequence["${field.python_type}"]] = None, % endfor % for field in optional_fields: ${field.name}: Optional["${field.python_type}"] = ${field.default_value_repr}, % endfor ) -> None: % for field in repeated_fields: self.${field.name}: Sequence["${field.python_type}"] = ${field.name} if ${field.name} is not None else [] % endfor % for field in required_fields + optional_fields: self.${field.name} = ${field.name} % endfor % endif % endfor