Skip to content
Snippets Groups Projects
Commit d10e2376 authored by Leah Tacke genannt Unterberg's avatar Leah Tacke genannt Unterberg
Browse files

hotfixed caching of iterator property

parent d289b1ee
No related branches found
No related tags found
No related merge requests found
......@@ -52,8 +52,7 @@ class HeaderEntry(pydantic.BaseModel):
return HeaderEntry(concept=concept, kind=kind, type_name=type_name, attributes=tuple(attrs),
attribute_dtypes=tuple(attr_dts))
@cached_property
def attr_dtype_pairs(self) -> Iterable[tuple[TypeName, MITMDataType]]:
def iter_attr_dtype_pairs(self) -> Iterable[tuple[TypeName, MITMDataType]]:
return zip(self.attributes, self.attribute_dtypes)
@cached_property
......@@ -80,7 +79,7 @@ def mk_typed_df_columns(mitm: MITM, he: HeaderEntry) -> tuple[list[str], dict[st
'foreign': lambda: [
(name, dt) for fk_types in mitm_def.resolve_foreign_types(concept).values() for name, dt in
fk_types.items()],
'attributes': lambda: list(he.attr_dtype_pairs),
'attributes': lambda: list(he.iter_attr_dtype_pairs()),
})
return list(dts.keys()), dict(dts)
......
......@@ -2,7 +2,7 @@ from __future__ import annotations
from collections import defaultdict
from collections.abc import Callable, Iterable
from typing import TYPE_CHECKING, Any, Sequence
from typing import Any, Sequence
import pandas as pd
import pydantic
......@@ -10,20 +10,21 @@ import sqlalchemy as sa
from sqlalchemy import func
from mitm_tooling.definition import MITMDefinition, ConceptName, TypeName, get_mitm_def
from mitm_tooling.utilities.sql_utils import EngineOrConnection, use_db_bind
from mitm_tooling.utilities.sql_utils import EngineOrConnection
from mitm_tooling.utilities.sql_utils import use_nested_conn, AnyDBBind
from .sql_representation import SQLRepresentationSchema, _get_unique_id_col_name, has_type_tables
from ..df import TypedMitMDataFrameStream
from ..intermediate.header import Header, HeaderEntry
from .sql_representation import SQLRepresentationSchema, _get_unique_id_col_name, has_type_tables, HeaderMetaTableName
def insert_db_schema(bind: EngineOrConnection, sql_rep_schema: SQLRepresentationSchema) -> None:
sql_rep_schema.sa_meta.create_all(bind=bind, checkfirst=True)
def drop_db_schema(bind: EngineOrConnection, sql_rep_schema: SQLRepresentationSchema) -> None:
sql_rep_schema.sa_meta.drop_all(bind=bind, checkfirst=True)
def insert_header_data(bind: EngineOrConnection, sql_rep_schema: SQLRepresentationSchema, header: Header) -> None:
if (meta_tables := sql_rep_schema.meta_tables) is not None:
mitm_def_json = header.mitm_def.model_dump(mode='json', by_alias=True, exclude_unset=True, exclude_none=True)
......@@ -45,8 +46,8 @@ def insert_header_data(bind: EngineOrConnection, sql_rep_schema: SQLRepresentati
'type': he.type_name,
'attribute_order': i,
'attribute_name': a,
'attribute_dtype': str(dt)} for he in header.header_entries for
i, (a, dt) in enumerate(he.attr_dtype_pairs)]))
'attribute_dtype': str(dt)} for he in header.header_entries for i, (a, dt) in
enumerate(he.iter_attr_dtype_pairs())]))
# conn.commit()
......
......@@ -384,7 +384,7 @@ def mk_sql_rep_schema(header: Header,
mitm_def.resolve_foreign_types(he_concept).items() for name, dt in
resolved_fk.items()],
'attributes': lambda: [(name, sa.Column(name, dt.sa_sql_type)) for name, dt in
he.attr_dtype_pairs],
he.iter_attr_dtype_pairs()],
}, additional_column_generators=(_gen_within_concept_id_col,),
schema_item_generators=type_table_schema_item_generators,
override_schema=schema_name)
......
......@@ -37,7 +37,7 @@ def unpack_concept_table_as_typed_dfs(header: Header, concept: ConceptName, df:
type_df = type_df.rename(columns=he.attr_name_map)
dt_map = dict(itertools.chain(
((a, dt) for a, dt in normal_form_dts.items() if a in set(type_df.columns)),
he.attr_dtype_pairs
he.iter_attr_dtype_pairs()
))
res[he.type_name] = convert.convert_df(type_df, dt_map)
......
......@@ -15,7 +15,7 @@ def mk_header_markdown(header: Header) -> tuple[str, str]:
+ '\n'.join((
f'| {he.kind} | {he.type_name} ' + ''.join(
(f'| {a} (_{dt}_) ' for a, dt in
he.attr_dtype_pairs)) + ('| ' * max(0, header.max_k - he.attr_k)) + '|' for he
he.iter_attr_dtype_pairs())) + ('| ' * max(0, header.max_k - he.attr_k)) + '|' for he
in header.header_entries))) + '\n'
mitm_def = header.mitm_def
......@@ -109,7 +109,7 @@ class ExperimentalMAEDDashboard(MitMDashboardCreator):
(3, [HEADER(t)]),
(4, [MARKDOWN(
'# Attributes\n' + '\n'.join((f'- {a} (_{dt}_)' for a, dt in
he.attr_dtype_pairs))
he.iter_attr_dtype_pairs()))
, 4, 25)])
),
CHART(chart_collection[f'{he.concept}-{t}-big-number'], 4, 25)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment