From 2996138341687412794f20f86a57688805e4b1e9 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Tue, 19 Dec 2017 09:21:31 +0000 Subject: [PATCH] protobuf: Call _fill_missing in __init__ --- trezorlib/protobuf.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/trezorlib/protobuf.py b/trezorlib/protobuf.py index da6cdc2..d367556 100644 --- a/trezorlib/protobuf.py +++ b/trezorlib/protobuf.py @@ -95,6 +95,7 @@ class MessageType: def __init__(self, **kwargs): for kw in kwargs: setattr(self, kw, kwargs[kw]) + self._fill_missing() def __eq__(self, rhs): return (self.__class__ is rhs.__class__ and @@ -149,10 +150,12 @@ class MessageType: def _fill_missing(self): # fill missing fields - for tag in self.FIELDS: - field = self.FIELDS[tag] - if not hasattr(self, field[0]): - setattr(self, field[0], None) + for fname, ftype, fflags in self.FIELDS.values(): + if not hasattr(self, fname): + if fflags & FLAG_REPEATED: + setattr(self, fname, []) + else: + setattr(self, fname, None) def CopyFrom(self, obj): self.__dict__ = obj.__dict__.copy() @@ -242,12 +245,11 @@ def load_message(reader, msg_type): raise TypeError # field type is unknown if fflags & FLAG_REPEATED: - pvalue = getattr(msg, fname, []) + pvalue = getattr(msg, fname) pvalue.append(fvalue) fvalue = pvalue setattr(msg, fname, fvalue) - msg._fill_missing() return msg