pola-rs/polars · error · TypeError
Unexpected parameter type: {type(param)!r}
Error message
Unexpected parameter type: {type(param)!r} What it means
Defensive TypeError inside polars' _raise_removed_argument_error indicating that the parameter object passed to the removed_parameters decorator machinery is neither RenamedParameter nor RemovedParameter. It signals an internal programming error in polars or a misuse of the private decorator API, not a user data problem.
Source
Thrown at py-polars/src/polars/_utils/expired.py:161
raise ArgumentRemovedError(msg)
else:
msg = (
f"the argument {param.name!r} for {func_name!r}{was_deprecated_and}"
f" has been removed in version {param.removed_in}."
f" It was renamed to {param.new_name!r}."
)
msg = msg if param.hint is None else f"{msg} {param.hint}"
raise ArgumentRemovedError(msg)
elif isinstance(param, RemovedParameter):
msg = (
f"the argument {param.name!r} for {func_name!r}{was_deprecated_and}"
f" has been removed in version {param.removed_in}."
)
msg = msg if param.hint is None else f"{msg} {param.hint}"
raise ArgumentRemovedError(msg)
else:
msg = f"Unexpected parameter type: {type(param)!r}"
raise TypeError(msg)
View on GitHub (pinned to 5d8ebabf11)
Solutions
- If extending the decorator, add your branch before the else in _raise_removed_argument_error (contribute upstream)
- Do not rely on private polars internals; vendor your own decorator
- Report as a polars bug if reached without touching private APIs
Defensive patterns
Strategy: try-catch
Try / catch
try:
fn(**kwargs)
except TypeError as e:
if 'Unexpected parameter type' in str(e):
# internal misuse; report upstream
raise Prevention
- Do not depend on private polars internals
- Vendor your own parameter decorator if you need similar behavior
When it happens
Trigger: Registering a custom or unsupported parameter class with polars' removed_parameters decorator, or monkeypatching the private expired module's parameter types; unreachable through normal public API calls.
Common situations: Library developers copying polars' expired-parameter helpers; polars contributors adding a new parameter type without extending the isinstance chain.
Related errors
- list.to_struct() got a str instead of a list. hint: pass ['{
- schema_mode='overwrite' requires mode='overwrite'
- `{name}` was removed in version {version}
- {objname} object has no attribute {name!r}
- {func_name!r} received both {param.name!r} and {param.new_na
AI-assisted analysis of pola-rs/polars@5d8ebabf11 (2026-08-28).
Data as JSON: /api/errors/82f4eb4f1a2d825d.
Report an issue: GitHub.