Skip to content

feat(config): add optional dataset.tags and dataset.category fields - #434

Merged
Gabrymi93 merged 2 commits into
mainfrom
feat/dataset-tags-category
Jul 29, 2026
Merged

feat(config): add optional dataset.tags and dataset.category fields#434
Gabrymi93 merged 2 commits into
mainfrom
feat/dataset-tags-category

Conversation

@Gabrymi93

Copy link
Copy Markdown
Member

Sintesi

Aggiunge tags (list[str]) e category (str | None) come campi opzionali del blocco dataset: in dataset.yml, con propagazione in modello Pydantic, dataclass pubblica, manifest e MCP server. Base per i selettori batch semantici (futuro).

Contesto collegato

Nessuna issue — richiesta diretta per organizzare batch smart in dataset-incubator.

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)

I nuovi campi sono opzionali — nessun dataset.yml esistente si rompe.

Downstream aggiornato:

  • dataset-incubator — x [x] docs/

Verifica

pytest toolkit/tests/test_config_loading.py -v --no-header -k "not test_project_example"
pytest toolkit/tests/test_dataset_loader.py -v --no-header
pytest toolkit/tests/test_mcp_toolkit_client.py -v --no-header
ruff check .
  • pytest -m core passa
  • ruff check . passa
  • mypy toolkit/ passa (o motiva le eccezioni)
  • Modificato o aggiunto test con marker appropriato (contract / policy / pure_unit)

Checklist PR

  • Perimetro stretto: una PR = un layer o un fix mirato
  • Se nuovo plugin: test + docs inclusi
  • Issue collegata o motivazione dell'assenza (richiesta diretta via chat)
  • Se rimuovo un modulo/funzione pubblica: N/A

Note per chi revisiona

I campi sono parsati dal Pydantic DatasetBlock e propagati in:

  • ToolkitConfig (dataclass pubblica) — accesso via cfg.tags, cfg.category
  • load_dataset_manifest() — per cataloghi e CI
  • dataset_info() (MCP server) — esposizione ad agenti AI

Fix minore: _model field in ToolkitConfig ora ha default=None esplicito (era field() senza default, che causava errore dataclass quando altri campi con default vengono aggiunti prima).

Aggiunge i campi opzionali tags (list[str]) e category (str | None)
al blocco dataset: del dataset.yml, con propagazione in:

- DatasetBlock Pydantic model (shared_models.py)
- ToolkitConfig dataclass pubblica (config.py)
- load_config() — popolamento da YAML
- load_dataset_manifest() — manifest pubblico
- dataset_info() — esposizione via MCP server

I campi sono backward-compatibili: dataset.yml esistenti continuano
a funzionare senza modifiche. tags defaulta a [], category a None.

Test: 5 nuovi test in test_config_loading.py (contract + policy),
4 nuovi test in test_dataset_loader.py (pure_unit).
@Gabrymi93
Gabrymi93 force-pushed the feat/dataset-tags-category branch from af5c6e8 to f12ee3e Compare July 29, 2026 19:38
Allinea dataset_info() con tags/category — espone anche source_id
per coerenza nei metadati del dataset via MCP.
@Gabrymi93
Gabrymi93 merged commit ed48fbf into main Jul 29, 2026
3 checks passed
@Gabrymi93
Gabrymi93 deleted the feat/dataset-tags-category branch July 29, 2026 20:09
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