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

  1. If extending the decorator, add your branch before the else in _raise_removed_argument_error (contribute upstream)
  2. Do not rely on private polars internals; vendor your own decorator
  3. 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

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


AI-assisted analysis of pola-rs/polars@5d8ebabf11 (2026-08-28). Data as JSON: /api/errors/82f4eb4f1a2d825d. Report an issue: GitHub.