Skip to content

feat(core): preprocessing utilities — normalize_number, normalize_columns_map, decode_bytes (#411)#415

Merged
Gabrymi93 merged 2 commits into
mainfrom
feat/preprocessing-utils-411
Jul 21, 2026
Merged

feat(core): preprocessing utilities — normalize_number, normalize_columns_map, decode_bytes (#411)#415
Gabrymi93 merged 2 commits into
mainfrom
feat/preprocessing-utils-411

Conversation

@Gabrymi93

Copy link
Copy Markdown
Member

Sintesi

Nuovo modulo toolkit/core/normalize.py con utility di preprocessing centralizzate per normalizzare numeri in formato italiano, mappare colonne con regex e decodificare bytes con fallback multi-encoding.

Rimpiazza 13 copie identiche nei candidate di dataset-incubator (elezioni-*, iva-regionale).

Contesto collegato

Closes #411

Cosa cambia

  • Bug fix
  • Nuova funzionalità del motore
  • Nuovo plugin sorgente
  • Modifica contratto pubblico
  • Refactor / performance
  • Documentazione
  • Dipendenze o CI

Impatto su contratti pubblici

Nessuno. Nuovo codice, nessuna modifica a funzioni esistenti.

Verifica

pytest tests/test_normalize.py -v
  • pytest -m pure_unit passa (417 test)
  • Nuovo file test tests/test_normalize.py (45 test, marker pure_unit)

Checklist PR

Cosa contiene

  • normalize_number(val, *, strip_dot_zero, empty_values) -> str | None — normalizza numeri formato italiano (1.234,56 → 1234.56, gestisce *** / - / N.D. → None, convalida output con _looks_like_number)
  • normalize_columns_map(header, col_map) -> (list[str], list[int]) — mappa colonne via regex con stripping di virgolette/whitespace
  • decode_bytes(data, encodings) -> str — decodifica multi-encoding con cp1252 prima di iso-8859-1 (€ corretto)
  • decode_csv_bytes(data) -> str — wrapper specializzato per CSV

@Gabrymi93
Gabrymi93 marked this pull request as draft July 15, 2026 17:18
…a docstring encoding

- _looks_like_number: aggiunto re.search(r'\d', val) per evitare che
  normalize_number(',') ritorni '.' o normalize_number('-') ritorni '-'
- decode_bytes: docstring allineata all'ordine reale (cp1252 prima di
  iso-8859-1) con nota sulla preservazione di €
- Test: 6 nuovi casi edge per normalize_number (',' , '-,' , '.' , '-'
  con empty_values custom, punteggiatura varia)
- Test: commento cp1252 aggiornato
- .gitignore: aggiunto .tmp/ (DuckDB temp storage)
@Gabrymi93
Gabrymi93 marked this pull request as ready for review July 21, 2026 08:11
@Gabrymi93
Gabrymi93 merged commit 5c793c5 into main Jul 21, 2026
3 checks passed
@Gabrymi93
Gabrymi93 deleted the feat/preprocessing-utils-411 branch July 21, 2026 08:14
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.

feat(core): utility preprocessing — normalize_number, decode_bytes, normalize_columns_map

1 participant