Skip to content

Commit c489984

Browse files
committed
Correctly parse List[X] annotated objects from dictionaries
1 parent ab01bec commit c489984

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

pycardano/plutus.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,23 @@ def _dfs(obj):
589589
raise DeserializeException(
590590
f"Unexpected data structure: {f}."
591591
)
592+
elif (
593+
hasattr(f_info.type, "__origin__")
594+
and f_info.type.__origin__ is list
595+
):
596+
t_args = f_info.type.__args__
597+
if len(t_args) != 1:
598+
raise DeserializeException(f"List types need exactly one type argument, but got {t_args}")
599+
if not "list" in f:
600+
raise DeserializeException(f"Expected type \"list\" for constructor List but got {f}")
601+
t = t_args[0]
602+
if (
603+
inspect.isclass(t)
604+
and issubclass(t, PlutusData)
605+
):
606+
converted_fields.append(t.from_dict(f))
607+
else:
608+
converted_fields.append(_dfs(f))
592609
else:
593610
converted_fields.append(_dfs(f))
594611
return cls(*converted_fields)

0 commit comments

Comments
 (0)