pola-rs/polars · error

didn't understand polars_expr attribute

Error message

didn't understand polars_expr attribute

What it means

Proc-macro parse failure for the #[polars_expr] attribute: the attribute TokenStream failed to parse as ExprsFunctionOptions (unrecognised option key or malformed syntax), so the input is rejected with this generic marker via parse_macro_input.

Source

Thrown at pyo3-polars/pyo3-polars-derive/src/lib.rs:275

            let out = polars_arrow::ffi::export_field_to_c(&out.to_arrow(polars_core::datatypes::CompatLevel::newest()));
            *return_value = out;
        }
    )
}

#[proc_macro_attribute]
pub fn polars_expr(attr: TokenStream, input: TokenStream) -> TokenStream {
    let ast = parse_macro_input!(input as syn::ItemFn);

    let options = parse_macro_input!(attr as attr::ExprsFunctionOptions);
    let expanded_field_fn = if let Some(fn_name) = options.output_type_fn {
        create_field_function(&ast.sig.ident, &fn_name, false)
    } else if let Some(fn_name) = options.output_type_fn_kwargs {
        create_field_function(&ast.sig.ident, &fn_name, true)
    } else if let Some(dtype) = options.output_dtype {
        create_field_function_from_with_dtype(&ast.sig.ident, dtype)
    } else {
        panic!("didn't understand polars_expr attribute")
    };

    let expanded_expr = create_expression_function(ast);
    let expanded = quote!(
        #expanded_field_fn

        #expanded_expr
    );
    TokenStream::from(expanded)
}

View on GitHub (pinned to 9b5d73fd00)

Solutions

  1. Check the syntax of the `polars_expr` attribute against the documented forms and fix it.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at pyo3-polars/pyo3-polars-derive/src/lib.rs:275 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/fe229c1dbdc6ffa2. Report an issue: GitHub.