Skip to content

Commit b18be5a

Browse files
fix(boxsdkgen): Fix dictionary values deserialization (box/box-codegen#966) (#1510)
1 parent ec8d510 commit b18be5a

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "ed5236c", "specHash": "131c54a", "version": "4.12.0" }
1+
{ "engineHash": "5560f9a", "specHash": "131c54a", "version": "4.12.0" }

box_sdk_gen/internal/base_object.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ def _deserialize(cls, key, value, annotation=None):
8181

8282
if get_origin(annotation) == list:
8383
return cls._deserialize_list(key, value, annotation)
84+
elif get_origin(annotation) == dict:
85+
return cls._deserialize_dict(key, value, annotation)
8486
elif get_origin(annotation) == Union:
8587
return cls._deserialize_union(key, value, annotation)
8688
elif isinstance(annotation, EnumMeta):
@@ -104,6 +106,17 @@ def _deserialize_list(cls, key, value, annotation: list):
104106
except Exception:
105107
return value
106108

109+
@classmethod
110+
def _deserialize_dict(cls, key, value, annotation):
111+
try:
112+
args = get_args(annotation)
113+
if len(args) < 2:
114+
return value
115+
value_type = args[1]
116+
return {k: cls._deserialize(key, v, value_type) for k, v in value.items()}
117+
except Exception:
118+
return value
119+
107120
@classmethod
108121
def _deserialize_union(cls, key, value, annotation):
109122
try:

0 commit comments

Comments
 (0)