Skip to content

feat: config auto-detect, run default, inspect unificato - #439

Merged
Gabrymi93 merged 8 commits into
mainfrom
feat/config-auto-detect
Jul 30, 2026
Merged

feat: config auto-detect, run default, inspect unificato#439
Gabrymi93 merged 8 commits into
mainfrom
feat/config-auto-detect

Conversation

@Gabrymi93

@Gabrymi93 Gabrymi93 commented Jul 30, 2026

Copy link
Copy Markdown
Member

Sintesi

Centralizzata la risoluzione del path di dataset.yml (prima sparsa in MCP, catalog, notebook_helpers, CLI). Unificato toolkit run (default = pipeline completa) e semplificato toolkit inspect (default + 2 subcomandi). --config diventa opzionale con auto-detect CWD/slug.

Cosa cambia

  • Refactor / performance
  • CLI (comando nuovo, cambio parametro)

CLI finale

toolkit run           → pipeline completa (default)
  run raw|clean|mart  → layer singolo
  run preflight       → diagnostica fonti

toolkit inspect       → riassunto dataset (default)
  inspect config      → schema, preview, profile, SQL o diff
  inspect runs        → storico run o resume

toolkit validate|batch|contract|scout
  • --config opzionale: se omesso cerca dataset.yml nella CWD; se è uno slug (es. terna-electricity-by-source) risolve in dataset-incubator/{candidates,compose,support_datasets}/
  • Subcomandi rimossi dalla CLI: run all, run full, run init, inspect summary, inspect profile, inspect paths
  • run_full() mantenuto come API Python deprecata (DeprecationWarning)

Verifica

pytest -x --tb=short  # 1239 passano
ruff check .          # OK
mypy toolkit/         # 2 errori preesistenti (non toccati)
  • pytest -m core passa
  • ruff check . passa
  • mypy toolkit/ passa (2 errori preesistenti in read_excel.py e profile/raw.py, non toccati)

Metriche (root-cause-change)

Tipo: contract alignment + cleanup reale

Problema reale: 4 implementazioni sparse della stessa logica (risoluzione path dataset.yml) + CLI con troppi subcomandi ridondanti

Contratto riusato/sostituito: resolve_config_path() in core/discovery.py assorbe MCP._resolve_dataset + notebook_helpers.find_config + CLI --config obbligatorio

Codice rimosso o duplicazione eliminata:

  • mcp/path_safety.py: da ~140 a ~30 righe (delega a discovery.py)
  • inspect/__init__.py: da 251 a 68 righe (subcomandi, non flag di modo)
  • Rimossi subcomandi CLI: run all, run full, run init, inspect summary, inspect profile, inspect paths
  • Bilancio totale: +488 / -474 righe

Rischio residuo:

  • Auto-detect è magia (CWD/slug), ma errore in chiaro se non trova nulla
  • inspect paths non ha equivalente diretto

Note per chi revisiona

Il grosso del refactor è in:

  • core/discovery.py (nuovo): risoluzione config in 86 righe
  • cli/inspect/__init__.py: inspect con default + 2 subcomandi (config, runs)
  • cli/cmd_run.py: run diventa default, subcomandi ridotti a 4
  • mcp/path_safety.py: thin wrapper su discovery

- Nuovo core/discovery.py con resolve_config_path() centralizzata
- load_config() accetta path=None (auto-detect da CWD, climbing, slug)
- toolkit run diventa il default (preflight + support + raw->clean->mart)
  Subcomandi: preflight, raw, clean, mart
- toolkit inspect diventa comando unico con flag di modo
  --schema|--preview|--profile|--runs|--resume|--diff
- Vecchi subcomandi inspect deprecati (hidden, backward compat)
- dataset_loader.py usa resolve_config_path() anziché risoluzione ad-hoc
- mcp/path_safety.py: thin wrapper su resolve_config_path()
- 1165 test passano, 0 falliti
style: ruff format dopo refactor inspect
@Gabrymi93
Gabrymi93 force-pushed the feat/config-auto-detect branch from 1b6d3ea to 2342891 Compare July 30, 2026 17:50
…i alla nuova CLI

Aggiunti test contract per auto-detect config (CWD, slug, mancante).
Docstring _execute_pipeline() con parametri documentati.
@Gabrymi93
Gabrymi93 merged commit 3f19e68 into main Jul 30, 2026
3 checks passed
@Gabrymi93
Gabrymi93 deleted the feat/config-auto-detect branch July 30, 2026 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant