Skip to content

Commit 9a65b9d

Browse files
committed
Mirror structure of serialize in deserialize
1 parent fb3155a commit 9a65b9d

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

fsspec/spec.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,10 +1486,15 @@ def from_dict(dct: Dict[str, Any]) -> AbstractFileSystem:
14861486

14871487
json_decoder = FilesystemJSONDecoder()
14881488

1489-
def deserialize(obj: Any):
1489+
def deserialize(obj: Any) -> Any:
14901490
if isinstance(obj, dict):
1491-
return json_decoder.custom_object_hook(obj)
1492-
1491+
obj = json_decoder.custom_object_hook(obj)
1492+
if isinstance(obj, dict):
1493+
return {k: deserialize(v) for k, v in obj.items()}
1494+
1495+
if isinstance(obj, (list, tuple)):
1496+
return [deserialize(v) for v in obj]
1497+
14931498
return obj
14941499

14951500
dct = dict(dct) # Defensive copy
@@ -1501,10 +1506,10 @@ def deserialize(obj: Any):
15011506
dct.pop("cls", None)
15021507
dct.pop("protocol", None)
15031508

1504-
args = tuple(deserialize(arg) for arg in dct.pop("args", ()))
1505-
kwargs = {k: deserialize(v) for k, v in dct.items()}
1506-
1507-
return cls(*args, **kwargs)
1509+
return cls(
1510+
*deserialize(dct.pop("args", ())),
1511+
**deserialize(dct),
1512+
)
15081513

15091514
def _get_pyarrow_filesystem(self):
15101515
"""

0 commit comments

Comments
 (0)