8 moduli leaf portati verbatim da ChironeWp3 con rename psdwp3→tht: - vendor/thoth_lsh (MinHash/LSH, leaf puro datasketch+tqdm) + VENDORED.md - lshindex/ (build/save/load/query, dipende vendor + LshConfig) - sqlcheck/ (validate_sql, leaf ExecutionConfig+mschema) - execute/ + execute/warnings (run_controlled/explain, leaf sqlglot+sqlalchemy) - rest/execute + rest/explain (REST variants, dipendono execute+rest.client) - ctetest (CTE test records, leaf sqlglot+pydantic) - report (validation report rendering, dipende execute+sqlcheck) - datamart (stub NotImplementedError) Verifica: import smoke catena completa OK, pytest 109 passed. Deps (datasketch, sqlglot, sqlalchemy, pydantic, requests, tqdm) già in pyproject. VENDORED.md neutralizzato (riferimenti PsdWp3→Thoth).
27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
"""Fase 8 — generazione dbt del datamart (hook, non ancora implementato).
|
|
|
|
Punto d'innesto unico per la generazione del modello dbt da aggiungere al flusso
|
|
ETL di creazione dei datamart. La logica vera verra' sviluppata in seguito: per
|
|
ora qui vive solo la firma della funzione (il "hook") con le due varianti del
|
|
paziente.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
# Le due varianti previste per il paziente nel datamart:
|
|
# - "clear": nome, cognome, ecc. in chiaro
|
|
# - "pseudonymized": nome, cognome, ecc. mascherati (pseudoanonimizzati)
|
|
DATAMART_MODES = ("clear", "pseudonymized")
|
|
|
|
|
|
def generate_dbt_datamart(session_dir: Path, mode: str) -> None:
|
|
"""Genera il modello dbt del datamart per la sessione (HOOK — stub).
|
|
|
|
`mode` sceglie la variante del paziente (vedi DATAMART_MODES). Non ancora
|
|
implementato: solleva NotImplementedError, intercettata dalla CLI che mostra
|
|
un messaggio pulito senza interrompere il workflow.
|
|
"""
|
|
raise NotImplementedError(
|
|
"Generazione dbt del datamart non ancora implementata"
|
|
)
|