pola-rs/polars · error · InvalidArgument
given {n_dtypes} dtypes for {n_cols} names
Error message
given {n_dtypes} dtypes for {n_cols} names What it means
Validation in the legacy `dataframes` strategy: when dtype is passed as a sequence, its length must equal the number of generated column names (cols). A mismatch means dtypes cannot be paired with columns one-to-one. Supply one dtype per column or a single dtype.
Source
Thrown at py-polars/src/polars/testing/parametric/strategies/legacy.py:102
... assert_something(df)
"""
# create/assign named columns
if cols is None:
cols = st.integers(min_value=min_cols, max_value=max_cols).example()
if isinstance(cols, int):
names: Sequence[str] = [f"col{n}" for n in range(cols)]
else:
names = cols
n_cols = len(names)
if dtype is None:
dtypes: Sequence[PolarsDataType | None] = [None] * n_cols
elif is_polars_dtype(dtype):
dtypes = [dtype] * n_cols
elif isinstance(dtype, Sequence):
if (n_dtypes := len(dtype)) != n_cols:
msg = f"given {n_dtypes} dtypes for {n_cols} names"
raise InvalidArgument(msg)
dtypes = dtype
else:
msg = f"{dtype!r} is not a valid polars datatype"
raise InvalidArgument(msg)
# init list of named/typed columns
return [
column(name=nm, dtype=tp, unique=unique)
for nm, tp in zip(names, dtypes, strict=True)
]
@deprecated("`create_list_strategy` is deprecated; use `lists` instead.")
def create_list_strategy(
inner_dtype: PolarsDataType | None = None,
*,
select_from: Sequence[Any] | None = None,
size: int | None = None,View on GitHub (pinned to 9b5d73fd00)
Solutions
- Pass the same number of dtypes as column names (or omit dtypes to let them be inferred).
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at py-polars/src/polars/testing/parametric/strategies/legacy.py:102 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pola-rs/polars@9b5d73fd00 (2026-08-19).
Data as JSON: /api/errors/6034696e4a8de8ed.
Report an issue: GitHub.