reflex-dev/reflex · error · ValueError

Annotation of the computed var assigned to the data field…

Error message

Annotation of the computed var assigned to the data field should be provided.

What it means

data_table needs the Python type of data to serialize pandas DataFrames correctly. If data is a computed var annotated as Any (no return annotation), Reflex cannot tell whether it is a DataFrame.

Solutions

  1. Annotate the computed var: @rx.var def get_data(self) -> pd.DataFrame: ...
  2. Or annotate as the concrete list type you return

Example fix

# before
@rx.var
def table_data(self):
    return self.df
# after
@rx.var
def table_data(self) -> pd.DataFrame:
    return self.df
Defensive patterns

Strategy: type-guard

Validate before calling

import inspect
ret = inspect.signature(get_data.fn if hasattr(get_data, 'fn') else get_data).return_annotation
assert ret is not inspect.Signature.empty, 'annotate the computed var feeding data_table'

Type guard

def computed_var_is_annotated(v: Any) -> bool:
    return not (is_computed_var(v) and v._var_type is Any)

Prevention

When it happens

Trigger: @rx.var-def computed var without a return annotation passed to rx.data_table(data=...) — data._var_type is Any.

Common situations: Writing @rx.var def get_data(self): return self.df without an annotation, often after refactoring or in dynamically-typed codebases.

Related errors


AI-assisted analysis of reflex-dev/reflex@45b8ed5ab7 (2026-08-28). Data as JSON: /api/errors/328c9c404db65682. Report an issue: GitHub.

Appendix: source

Thrown at packages/reflex-components-gridjs/src/reflex_components_gridjs/datatable.py:68

        Args:
            *children: The children of the component.
            **props: The props to pass to the component.

        Returns:
            The datatable component.

        Raises:
            ValueError: If a pandas dataframe is passed in and columns are also provided.
        """
        data = props.get("data")
        columns = props.get("columns")

        # The annotation should be provided if data is a computed var. We need this to know how to
        # render pandas dataframes.
        if is_computed_var(data) and data._var_type == Any:
            msg = "Annotation of the computed var assigned to the data field should be provided."
            raise ValueError(msg)

        if (
            columns is not None
            and is_computed_var(columns)
            and columns._var_type == Any
        ):
            msg = "Annotation of the computed var assigned to the column field should be provided."
            raise ValueError(msg)

        # If data is a pandas dataframe and columns are provided throw an error.
        if (
            types.is_dataframe(type(data))
            or (isinstance(data, Var) and types.is_dataframe(data._var_type))
        ) and columns is not None:
            msg = "Cannot pass in both a pandas dataframe and columns to the data_table component."
            raise ValueError(msg)

        # If data is a list and columns are not provided, throw an error

View on GitHub (pinned to 45b8ed5ab7)