You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/src/trezor/_proto_messages.mako

65 lines
1.6 KiB

# Automatically generated by pb2py
# fmt: off
# isort:skip_file
from trezor import protobuf
from typing import Any, TYPE_CHECKING
def __getattr__(name: str) -> Any:
try:
return protobuf.type_for_name(name)
except ValueError:
raise AttributeError(name)
if TYPE_CHECKING:
from typing import TypeGuard
% for enum in sorted(enums, key=lambda e: e.name):
from trezor.enums import ${enum.name} # noqa: F401
% 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 member_type(field):
if field.required:
return field.python_type
if field.optional and field.default_value is not None:
return field.python_type
if field.repeated:
return f"list[{field.python_type}]"
return f"{field.python_type} | None"
%>\
class ${message.name}(protobuf.MessageType):
% if message.fields:
% for field in message.fields:
${field.name}: "${member_type(field)}"
% endfor
def __init__(
self,
*,
% for field in required_fields:
${field.name}: "${field.python_type}",
% endfor
% for field in repeated_fields:
${field.name}: "list[${field.python_type}] | None" = None,
% endfor
% for field in optional_fields:
${field.name}: "${field.python_type} | None" = None,
% endfor
) -> None:
pass
% endif # if fields
@classmethod
def is_type_of(cls, msg: protobuf.MessageType) -> TypeGuard["${message.name}"]:
return isinstance(msg, cls)
% endfor