Files
ThothII/harness/tht/vendor/VENDORED.md
T
marcopan ea6412fafc feat(harness): port backend Onda 0 — vendor, lshindex, sqlcheck, execute, rest/exec, ctetest, report, datamart
8 moduli leaf portati verbatim da ChironeWp3 con rename psdwp3→tht:
- vendor/thoth_lsh (MinHash/LSH, leaf puro datasketch+tqdm) + VENDORED.md
- lshindex/ (build/save/load/query, dipende vendor + LshConfig)
- sqlcheck/ (validate_sql, leaf ExecutionConfig+mschema)
- execute/ + execute/warnings (run_controlled/explain, leaf sqlglot+sqlalchemy)
- rest/execute + rest/explain (REST variants, dipendono execute+rest.client)
- ctetest (CTE test records, leaf sqlglot+pydantic)
- report (validation report rendering, dipende execute+sqlcheck)
- datamart (stub NotImplementedError)

Verifica: import smoke catena completa OK, pytest 109 passed. Deps (datasketch, sqlglot,
sqlalchemy, pydantic, requests, tqdm) già in pyproject. VENDORED.md neutralizzato
(riferimenti PsdWp3→Thoth).
2026-06-27 10:34:23 +02:00

31 lines
1.8 KiB
Markdown

# Codice vendorizzato
## thoth_lsh.py
- Origine: `thoth_sqldb2` (pacchetto PyPI `thoth-dbmanager` 0.7.4), file `thoth_dbmanager/lsh/core.py`
- Copyright 2025 Marco Pancotti — Apache License 2.0
- Modifiche locali:
1. rimosso blocco di debug su colonna "doctype" in `create_lsh_index`;
2. `skip_column`: soglie parametrizzate (`max_total_chars`, `max_avg_length`) con default
identici agli originali (50000 / 20);
3. rimossa `query_lsh_index` (sostituita da `tht.lshindex.query_index`, che restituisce
anche gli score per il ranking spiegabile);
4. try/except generico rimosso da `create_lsh_index`: gli errori devono emergere.
5. `skip_column`: la guardia "name-like" (originariamente solo `"name"`) è stata estesa
a token bilingui EN/IT tramite la costante `NAME_LIKE_TOKENS`
(`name`, `nome`, `nominativ`, `denominazion`, `ragione_sociale`), sovrascrivibile col
parametro `name_tokens`. Necessario perché il datawarehouse Chirone è in italiano e le
colonne `nome`/`cognome`/`denominazione`/`ragione_sociale` non venivano riconosciute
dalla sola parola inglese `name`.
**Nota: `skip_column` e `NAME_LIKE_TOKENS` non sono più usati dal flusso Thoth.**
La selezione delle colonne da indicizzare è ora governata dal *principio di eleggibilità
delle colonne* (spec: `docs/superpowers/specs/2026-06-13-tht-column-eligibility-principle.md`).
L'esclusione dei testi larghi avviene a monte tramite il flag `eligible` persistito in
`physical.yaml` (impostato da `nsp schema introspect`), non tramite l'euristica sulla
lunghezza del vendorizzato. Le funzioni restano nel file per fedeltà alla sorgente upstream;
Thoth ha semplicemente smesso di importarle (vedi `tht/db/sampling.py`).
Le query di introspezione in `tht/db/introspect.py` sono ADATTATE (non copiate verbatim)
da `thoth_dbmanager/adapters/postgresql.py` della stessa versione.