`get_dataframe_report()` raises TypeError when a step has `columns_subset` (rows_distinct, rows_complete)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
- #446 di @manan28025 — chiusa senza merge
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia da get_dataframe_report() ed esamina la definizione di pl_schema per il campo column. Poi segui come rows_distinct() e rows_complete() con columns_subset= valorizzano validation_info[i].column. Riproduci il problema con l’esempio fornito e controlla, dopo la modifica, i valori delle colonne del report per entrambi i passaggi con sottoinsiemi; il report dovrebbe essere generato senza TypeError e mantenere i nomi delle colonne selezionate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Validate.get_dataframe_report() fails with a Polars TypeError as soon as the plan contains a step whose column is a list, i.e. rows_distinct() or rows_complete() with columns_subset=. The whole report is lost, not just that step.
Reproducer
import polars as pl
import pointblank as pb
df = pl.DataFrame({"a": [1, 2, 2], "b": ["x", "y", None]})
pb.Validate(df).rows_distinct().interrogate().get_dataframe_report() # OK
pb.Validate(df).rows_distinct(columns_subset=["a"]).interrogate().get_dataframe_report()
Error:
TypeError: unexpected value while building Series of type String; found value of type List(String): ["a"]
Hint: Try setting `strict=False` to allow passing data with mixed types.
Same result with rows_distinct(columns_subset=["a", "b"]) and rows_complete(columns_subset=["a", "b"]). Steps where columns= is a list (e.g. col_vals_gt(columns=["a"])) are fine, since they are expanded into one step per column.
Reproduced on 0.24.0 (where the method was added in #341), 0.27.0 and 1.0.1.
Cause
In get_dataframe_report(), the Polars schema declares the column field as a string (line 21497 on main at 4510729):
pl_schema = pl.Schema(
{
...
"column": pl.String,
...
}
)
For rows_distinct() / rows_complete() with columns_subset=, validation_info[i].column is a list of names, so pl.DataFrame(data=final_report, schema=pl_schema) fails.
Possible fix
Normalize list values before building the frame, e.g. join them into a string ("a, b"), which keeps columns a String column for every step. Alternatively declare it as pl.List(pl.String) and wrap single names in a list, though that changes the column type for all users.
Environment
- pointblank 1.0.1
- polars 1.38.1
- Python 3.12.7
- Linux
Found while using pointblank in fauxdata.
- Lingua principale
- Python
- Stelle
- 496
- Fork
- 38
- Merge medio
- 7h 27m
- PR unite (30g)
- 55
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di posit-dev/pointblank
-
Type: ★ Enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
posit-dev/pointblank#379 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
posit-dev/pointblank#395 ·
I maintainer di solito rispondono entro 1 giorno
-
Type: ★ Enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
posit-dev/pointblank#394 ·
I maintainer di solito rispondono entro 1 giorno
-
YAML value column selectorForse già presa @rich-iannone l’ha presa 326 giorni fa. ApertaDifficulty: [2] Intermediate Effort: [3] High Priority: [3] High Type: ☹︎ Bug
posit-dev/pointblank#333 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Type: ⁇ Question
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
posit-dev/pointblank#323 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di posit-dev/pointblank
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
UKGovernmentBEIS/optstop#10 ·
-
maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
pollen-robotics/reachy_mini#1508 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] `cloud-keys.env` values retain enclosing quotes causing 401 Unauthorized, and missing utf-8 encoding crashes on WindowsForse già presa @divyanshu07-code l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
open-jarvis/OpenJarvis#1192 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
sylvainmetayer/homelab#851 ·
I maintainer di solito rispondono entro 1 giorno