# Automatically generated by pb2py # fmt: off # isort:skip_file from enum import IntEnum from typing import List, 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] def type_name(field): if field.type_object is not None: return field.type_name else: return '"' + field.type_name + '"' %>\ class ${message.name}(protobuf.MessageType): MESSAGE_WIRE_TYPE = ${message.wire_type} % if message.fields: FIELDS = { % for field in message.fields: ${field.number}: protobuf.Field("${field.name}", ${type_name(field)}, repeated=${field.repeated}, required=${field.required}), % endfor } def __init__( self, *, % for field in required_fields: ${field.name}: ${field.python_type}, % endfor % for field in repeated_fields: ${field.name}: Optional[List[${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} = ${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