Skip to content

local_file RAW non supporta correttamente raw.sources[].args.path con {year} #17

@Gabrymi93

Description

@Gabrymi93

Problema

Quando raw.sources[].args.path contiene il placeholder {year} e la source e local_file, il path viene normalizzato troppo presto durante il load della config.

In pratica:

  • il valore viene trasformato in Path
  • run_raw() applica _format_args() solo alle stringhe
  • il placeholder {year} non viene sostituito
  • local_file prova a leggere un path letterale tipo ru_comunali_{year}.csv

Perche conta

Questo rompe un caso di workflow molto naturale per dataset storici o multi-anno locali:

  • una cartella dati locale
  • un file per anno
  • un solo dataset.yml con path templated

Il problema e emerso mentre testavo inspect schema-diff su dataset multi-anno reali.

Repro minimo

raw:
  sources:
    - type: local_file
      args:
        path: "../../data/raw/demo_{year}.csv"
        filename: "demo_{year}.csv"

Poi:

py -m toolkit.cli.app run raw --config dataset.yml --strict-config

Esito prima del fix:

  • il toolkit cerca letteralmente demo_{year}.csv

Comportamento atteso

Il placeholder {year} deve restare disponibile fino a run_raw(), pur mantenendo la risoluzione del path rispetto alla directory del dataset.yml.

Soluzione applicata

Durante la normalizzazione config:

  • i path RAW con {year} vengono risolti come stringhe assolute templated
  • non vengono convertiti a Path
  • il formatter puo ancora sostituire {year} in fase di run

Verifica

Test automatici aggiunti:

  • test config per conservare il template {year}
  • smoke test e2e con local_file templated

Test reali usati:

  1. RU Comunali 2018-2024
    • schema stabile
    • run raw multi-anno ok
  2. IRPEF comunale 2018-2023
    • run raw multi-anno ok
    • utile anche per inspect schema-diff

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Status

✅ Completato

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions