py.lib

Yohn Y. 2022-08-20

38:4f4cc2fc9805 Go to Latest

py.lib/type_utils/json_tools.py

. Полный рефакторинг кода модулей dataclass_utils.py и config_parse_helper.py. Теперь логика предсказуема. + функция dataobj_extract не просто бездумно загоняет данные в класс данных, но имеет функционал проверки данных с возбуждением исключения при разнице (по умолчанию) и принудительного приведения типов.

History
1 # coding: utf-8
2 from dataclasses import is_dataclass, asdict
5 def json_type_sanitizer(val):
6 """\
7 Преобразует значение ``val`` в пригодное для преобразования в json значение.
8 """
10 val_t = type(val)
12 if is_dataclass(val):
13 return json_type_sanitizer(asdict(val))
15 elif val_t in (int, float, str, bool) or val is None:
16 return val
18 elif val_t in (list, tuple):
19 return list(map(json_type_sanitizer, val))
21 elif val_t == dict:
22 return dict((key, json_type_sanitizer(d_val)) for key, d_val in val.items())
24 else:
25 return str(val)