comment here
This commit is contained in:
32
.CondaPkg/env/lib/python3.11/site-packages/jsons/deserializers/default_defaultdict.py
vendored
Normal file
32
.CondaPkg/env/lib/python3.11/site-packages/jsons/deserializers/default_defaultdict.py
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
from collections import defaultdict
|
||||
from typing import Optional, Callable, Dict
|
||||
|
||||
from typish import get_args
|
||||
|
||||
from jsons._load_impl import load
|
||||
|
||||
|
||||
def default_defaultdict_deserializer(
|
||||
obj: dict,
|
||||
cls: type,
|
||||
*,
|
||||
key_transformer: Optional[Callable[[str], str]] = None,
|
||||
**kwargs) -> dict:
|
||||
"""
|
||||
Deserialize a defaultdict.
|
||||
:param obj: the dict that needs deserializing.
|
||||
:param key_transformer: a function that transforms the keys to a different
|
||||
style (e.g. PascalCase).
|
||||
:param cls: not used.
|
||||
:param kwargs: any keyword arguments.
|
||||
:return: a deserialized defaultdict instance.
|
||||
"""
|
||||
args = get_args(cls)
|
||||
default_factory = None
|
||||
cls_ = Dict
|
||||
if args:
|
||||
key, value = get_args(cls)
|
||||
cls_ = Dict[key, value]
|
||||
default_factory = value
|
||||
loaded = load(obj, cls_, key_transformer=key_transformer, **kwargs)
|
||||
return defaultdict(default_factory, loaded)
|
||||
Reference in New Issue
Block a user