generated from dopt-python/py311
Pydantic supported saving and loading prepared
This commit is contained in:
1312
prototypes/t_qt_2.py
1312
prototypes/t_qt_2.py
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@ from collections.abc import Sequence
|
||||
from typing import Any
|
||||
|
||||
import babel
|
||||
from pydantic import BaseModel
|
||||
from PySide6.QtCore import QDate, Qt
|
||||
|
||||
# %%
|
||||
@@ -52,21 +53,76 @@ new_content = {
|
||||
}
|
||||
}
|
||||
|
||||
new_content = {
|
||||
"Stammdaten": {
|
||||
"Stammdaten_anzahl_kinder-[0]": {"Stammdaten_anzahl_kinder": "5"},
|
||||
"Stammdaten_anzahl_kinder-[1]": {"Stammdaten_alter_kinder": None},
|
||||
"Stammdaten_anzahl_kinder-[2]": {"Stammdaten_alter_kinder": None},
|
||||
"Stammdaten_anzahl_kinder-[3]": {"Stammdaten_alter_kinder": None},
|
||||
"Stammdaten_anzahl_kinder-[4]": {"Stammdaten_alter_kinder": None},
|
||||
"Stammdaten_anzahl_kinder-[5]": {"Stammdaten_alter_kinder": None},
|
||||
}
|
||||
}
|
||||
# object Stammdaten_Anzahl_Kinder: Stammdaten_anzahl_kinder: int, Stammdaten_alter_kinder: list[int]
|
||||
|
||||
def flat_dict(contents):
|
||||
for x in contents:
|
||||
if isinstance(contents, dict):
|
||||
yield from flat_dict(tuple(contents[x]))
|
||||
elif isinstance(x, (list, tuple, set)):
|
||||
yield from flat_dict(x)
|
||||
else:
|
||||
yield x
|
||||
|
||||
def get_leafs(data):
|
||||
if isinstance(data, dict):
|
||||
for value in data.values():
|
||||
yield from get_leafs(value)
|
||||
elif isinstance(data, (list, tuple, set)):
|
||||
for item in data:
|
||||
yield from get_leafs(item)
|
||||
else:
|
||||
yield data
|
||||
|
||||
|
||||
def get_leaf_dicts(data):
|
||||
if isinstance(data, dict):
|
||||
has_inner_dicts = False
|
||||
|
||||
for value in data.values():
|
||||
for inner_dict in get_leaf_dicts(value):
|
||||
has_inner_dicts = True
|
||||
yield inner_dict
|
||||
|
||||
if not has_inner_dicts:
|
||||
yield data
|
||||
|
||||
elif isinstance(data, (list, tuple, set)):
|
||||
for item in data:
|
||||
yield from get_leaf_dicts(item)
|
||||
|
||||
|
||||
# %%
|
||||
for x in flat_dict(new_content):
|
||||
for x in get_leafs(new_content):
|
||||
print(x)
|
||||
|
||||
# %%
|
||||
export_dict = {}
|
||||
children_values: list[str] | None = None
|
||||
for idx, data_dict in enumerate(get_leaf_dicts(new_content)):
|
||||
if idx == 0:
|
||||
export_dict.update(data_dict)
|
||||
else:
|
||||
for key in data_dict:
|
||||
if key not in export_dict:
|
||||
children_values = export_dict.setdefault(key, [])
|
||||
assert children_values is not None
|
||||
children_values.append(data_dict[key])
|
||||
|
||||
|
||||
export_dict
|
||||
|
||||
|
||||
# %%
|
||||
class Stammdaten_AnzahlKinder(BaseModel):
|
||||
Stammdaten_anzahl_kinder: int | None
|
||||
Stammdaten_alter_kinder: list[int | None]
|
||||
|
||||
|
||||
# %%
|
||||
Stammdaten_AnzahlKinder(**export_dict)
|
||||
|
||||
# %%
|
||||
find_dynamic_content(dynamic_content)
|
||||
|
||||
Reference in New Issue
Block a user