10000 Fix from_pydict · AdrienVannson/python-betterproto@3d44dc2 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3d44dc2

Browse files
committed
Fix from_pydict
1 parent 5e65d4f commit 3d44dc2

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

src/betterproto/__init__.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1714,21 +1714,18 @@ def from_pydict(self: T, value: Mapping[str, Any]) -> T:
17141714
if value[key] is not None:
17151715
if meta.proto_type == TYPE_MESSAGE:
17161716
v = getattr(self, field_name)
1717-
if isinstance(v, list):
1718-
cls = self._betterproto.cls_by_field[field_name]
1717+
cls = self._betterproto.cls_by_field[field_name]
1718+
if issubclass(cls, list):
17191719
for item in value[key]:
17201720
v.append(cls().from_pydict(item))
1721-
elif isinstance(v, datetime):
1721+
elif issubclass(cls, datetime):
17221722
v = value[key]
1723-
elif isinstance(v, timedelta):
1723+
elif issubclass(cls, timedelta):
17241724
v = value[key]
17251725
elif meta.wraps:
17261726
v = value[key]
17271727
else:
1728-
raise NotImplementedError
1729-
# NOTE: `from_pydict` mutates the underlying message, so no
1730-
# assignment here is necessary.
1731-
v.from_pydict(value[key])
1728+
v = cls().from_pydict(value[key])
17321729
elif meta.map_types and meta.map_types[1] == TYPE_MESSAGE:
17331730
v = getattr(self, field_name)
17341731
cls = self._betterproto.cls_by_field[f"{field_name}.value"]

0 commit comments

Comments
 (0)
0