Files
ImageUtils/.CondaPkg/env/lib/python3.11/site-packages/jsons/deserializers/default_complex.py
2023-03-18 20:03:34 +07:00

29 lines
1.1 KiB
Python

from typing import Dict
from jsons._load_impl import load
from jsons.exceptions import DeserializationError
def default_complex_deserializer(obj: Dict[str, float],
cls: type = complex,
**kwargs) -> complex:
"""
Deserialize a dictionary with 'real' and 'imag' keys to a complex number.
:param obj: the dict that is to be deserialized.
:param cls: not used.
:param kwargs: not used.
:return: an instance of ``complex``.
"""
try:
clean_obj = load({'real': obj['real'], 'imag': obj['imag']},
cls=Dict[str, float])
return complex(clean_obj['real'], clean_obj['imag'])
except KeyError as err:
raise AttributeError("Cannot deserialize {} to a complex number, "
"does not contain key '{}'"
.format(obj, err.args[0])) from err
except DeserializationError as err:
raise AttributeError("Cannot deserialize {} to a complex number, "
"cannot cast value {} to float"
.format(obj, err.source)) from err