mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-17 01:52:02 +00:00
protobuf: Call _fill_missing in __init__
This commit is contained in:
parent
1c8f03968c
commit
2996138341
@ -95,6 +95,7 @@ class MessageType:
|
|||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
for kw in kwargs:
|
for kw in kwargs:
|
||||||
setattr(self, kw, kwargs[kw])
|
setattr(self, kw, kwargs[kw])
|
||||||
|
self._fill_missing()
|
||||||
|
|
||||||
def __eq__(self, rhs):
|
def __eq__(self, rhs):
|
||||||
return (self.__class__ is rhs.__class__ and
|
return (self.__class__ is rhs.__class__ and
|
||||||
@ -149,10 +150,12 @@ class MessageType:
|
|||||||
|
|
||||||
def _fill_missing(self):
|
def _fill_missing(self):
|
||||||
# fill missing fields
|
# fill missing fields
|
||||||
for tag in self.FIELDS:
|
for fname, ftype, fflags in self.FIELDS.values():
|
||||||
field = self.FIELDS[tag]
|
if not hasattr(self, fname):
|
||||||
if not hasattr(self, field[0]):
|
if fflags & FLAG_REPEATED:
|
||||||
setattr(self, field[0], None)
|
setattr(self, fname, [])
|
||||||
|
else:
|
||||||
|
setattr(self, fname, None)
|
||||||
|
|
||||||
def CopyFrom(self, obj):
|
def CopyFrom(self, obj):
|
||||||
self.__dict__ = obj.__dict__.copy()
|
self.__dict__ = obj.__dict__.copy()
|
||||||
@ -242,12 +245,11 @@ def load_message(reader, msg_type):
|
|||||||
raise TypeError # field type is unknown
|
raise TypeError # field type is unknown
|
||||||
|
|
||||||
if fflags & FLAG_REPEATED:
|
if fflags & FLAG_REPEATED:
|
||||||
pvalue = getattr(msg, fname, [])
|
pvalue = getattr(msg, fname)
|
||||||
pvalue.append(fvalue)
|
pvalue.append(fvalue)
|
||||||
fvalue = pvalue
|
fvalue = pvalue
|
||||||
setattr(msg, fname, fvalue)
|
setattr(msg, fname, fvalue)
|
||||||
|
|
||||||
msg._fill_missing()
|
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user