Source code for jivago.serialization.deserialization.typed_dictionary_deserialization_strategy

from typing import Dict, Type

from jivago.inject import typing_meta_helper
from jivago.lang.annotations import Override
from jivago.lang.stream import Stream
from jivago.serialization.deserialization_strategy import DeserializationStrategy, T


[docs]class TypedDictionaryDeserializationStrategy(DeserializationStrategy): def __init__(self, deserializer: "Deserializer"): self.deserializer = deserializer
[docs] @Override def can_handle_deserialization(self, declared_type: type) -> bool: return typing_meta_helper.is_typing_meta_collection(declared_type, ('Dict',))
[docs] @Override def deserialize(self, obj, declared_type: Type[Dict[str, T]]) -> dict: value_type = declared_type.__args__[1] return Stream(obj.items()) \ .map(lambda k, v: (k, self.deserializer.deserialize(v, value_type))) \ .toDict()