comment here
This commit is contained in:
30
.CondaPkg/env/lib/python3.11/site-packages/jsons/deserializers/default_iterable.py
vendored
Normal file
30
.CondaPkg/env/lib/python3.11/site-packages/jsons/deserializers/default_iterable.py
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
from collections.abc import Mapping, Iterable
|
||||
from typing import Iterable as IterableType
|
||||
|
||||
from jsons._compatibility_impl import get_naked_class
|
||||
from jsons.deserializers.default_list import default_list_deserializer
|
||||
|
||||
|
||||
def default_iterable_deserializer(
|
||||
obj: list,
|
||||
cls: type,
|
||||
**kwargs) -> Iterable:
|
||||
"""
|
||||
Deserialize a (JSON) list into an ``Iterable`` by deserializing all items
|
||||
of that list. The given obj is assumed to be homogeneous; if the list has a
|
||||
generic type (e.g. Set[datetime]) then it is assumed that all elements can
|
||||
be deserialized to that type.
|
||||
:param obj: The list that needs deserializing to an ``Iterable``.
|
||||
:param cls: The type, optionally with a generic (e.g. Deque[str]).
|
||||
:param kwargs: Any keyword arguments.
|
||||
:return: A deserialized ``Iterable`` (e.g. ``set``) instance.
|
||||
"""
|
||||
cls_ = Mapping
|
||||
if hasattr(cls, '__args__'):
|
||||
cls_ = IterableType[cls.__args__]
|
||||
list_ = default_list_deserializer(obj, cls_, **kwargs)
|
||||
result = list_
|
||||
naked_cls = get_naked_class(cls)
|
||||
if not isinstance(result, naked_cls):
|
||||
result = naked_cls(list_)
|
||||
return result
|
||||
Reference in New Issue
Block a user