Skip to content

feat: cli remove validate, absorb batch into run --batch - #440

Merged
Gabrymi93 merged 4 commits into
mainfrom
feat/cli-assorbi-validate-batch
Jul 30, 2026
Merged

feat: cli remove validate, absorb batch into run --batch#440
Gabrymi93 merged 4 commits into
mainfrom
feat/cli-assorbi-validate-batch

Conversation

@Gabrymi93

Copy link
Copy Markdown
Member

Sintesi

Rimosso toolkit validate (coperto da run --dry-run + validazione interna).
Assorbito toolkit batch in toolkit run --batch <file>.
Aggiunto smoke/batch.txt con smoke test offline.

Contesto collegato

Non ci sono issue collegate — Fase 1 del refactor CLI discusso in chat dopo il merge della PR #439.

Cosa cambia

  • Bug fix
  • Nuova funzionalità del motore
  • Nuovo plugin sorgente
  • Modifica contratto pubblico (dataset.yml, path output, schema parquet)
  • Refactor / performance
  • Documentazione
  • Dipendenze o CI

Impatto su contratti pubblici

  • Struttura dataset.yml (nuovo campo, cambio obbligatorietà)
  • Path output (nuovo layer, cambio percorso artifact)
  • Schema parquet (nuova colonna, rename, cambio tipo)
  • CLI o MCP tool (nuovo comando, cambio parametro)
  • API pubblica del toolkit (firma funzione, classe, eccezione)

Se segnato, hai aggiornato downstream? [ ] dataset-incubator — [ ] docs/

Verifica

pytest tests/test_batch_cli.py tests/test_cmd_batch.py tests/test_dataset_loader.py tests/test_cli_path_contract.py tests/test_smoke_templates_contract_years.py tests/test_smoke_templates_golden_path.py -x --tb=short -q
ruff check .
  • pytest -m core passa
  • ruff check . passa
  • mypy toolkit/ passa (2 errori preesistenti in read_excel.py e profile/raw.py, non toccati)
  • Modificato o aggiunto test con marker appropriato (contract)

Checklist PR

  • Perimetro stretto: una PR = Fase 1 refactor CLI (validate + batch)
  • Se nuovo plugin: test + docs inclusi (N/A)
  • Issue collegata o motivazione dell'assenza
  • Se rimuovo un modulo/funzione pubblica: verificata assenza di import con rg
    e lasciato shim backward compat con DeprecationWarning

Metriche (root-cause-change)

Tipo: cleanup reale + contract alignment

Problema reale: validate e batch duplicavano funzionalità già in run

Contratto riusato/sostituito: _run_batch() in cmd_run.py assorbe la logica batch;
run --dry-run copre già la validazione che faceva validate

Codice rimosso o duplicazione eliminata:

  • cmd_validate.py eliminato (110 righe)
  • cmd_batch.py da 272 a 65 righe (thin wrapper deprecato)
  • Bilancio netto: -32 righe (425 aggiunte, 452 rimosse)
  • 6 comandi root → 5 (batch è hidden/deprecato)

Test aggiunti: test_run_batch_end_to_end (@pytest.mark.contract)

Rischio residuo: batch comando hidden esiste ancora come backward compat;
utenti che usano toolkit validate in script devono passare a toolkit run --dry-run

Follow-up obbligatorio: Fase 2 (assorbire contract in inspect --contract)

Note per chi revisiona

Il grosso del refactor è in:

  • toolkit/cli/cmd_run.py: nuovo _run_batch() + helper batch condivisi
  • toolkit/cli/cmd_batch.py: riscritto come thin wrapper deprecato
  • toolkit/cli/cmd_validate.py: eliminato
  • smoke/batch.txt: batch list per smoke offline
  • Test: aggiornati dove usavano CLI validate o importavano da cmd_validate

Rimosso `toolkit validate` (coperto da run --dry-run).
Assorbito `toolkit batch` in `toolkit run --batch <file>`.
Aggiunto smoke/batch.txt con smoke test offline.
Backward compat: batch come comando hidden + deprecation warning.

- toolkit/cli/cmd_validate.py eliminato
- toolkit/cli/cmd_run.py: _run_batch(), flag --batch, helper condivisi
- toolkit/cli/cmd_batch.py: thin wrapper deprecato (272 -> 65 righe)
- toolkit/cli/app.py: remove validate registration
- smoke/batch.txt: batch list per smoke offline
- Test: aggiornati per validate rimosso e run --batch
- Nuovo test: test_run_batch_end_to_end (@pytest.mark.contract)

Bilancio: -32 netto righe, 116 test passano, ruff OK
I 6 helper di formattazione e silenziamento (format_years,
format_duration, print_table, build_row, silence_typer_echo,
silence_logger) erano in cmd_run.py, ingrossandolo di ~60 righe.

Estratti in toolkit/cli/_batch_helpers.py, importati da cmd_run.py.
Riduce cmd_run.py di ~60 righe, mantiene separazione netta.
- Fix tabella CLI in README.md (|---|---|---| -> | |)
- Aggiungi run --batch alla tabella comandi
- feature-stability.md: validate all -> run --batch
- Smoke README: inspect summary -> inspect, run all/full -> run
@Gabrymi93
Gabrymi93 merged commit a8833b5 into main Jul 30, 2026
2 checks passed
@Gabrymi93
Gabrymi93 deleted the feat/cli-assorbi-validate-batch branch July 30, 2026 20:19
Gabrymi93 added a commit that referenced this pull request Jul 31, 2026
- fix: readiness legge columns/rules dal run record (#442)
- inspect default mostra verdict readiness con check
- refactor: eliminati 4 duplicazioni CLI, sql_dry_run in core (#441)
- feat: validate rimosso, batch in run --batch (#440)
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