OpenBB-finance/OpenBB · error · ValueError

Unsupported data type: {type(data)}

Error message

Unsupported data type: {type(data)}

What it means

ValueError from convert_to_basemodel, the dispatch function normalizing provider results to Data models. Supported inputs are: Data instances, list, dict, pandas DataFrame/Series, and numpy ndarray. Any other type (str, int, tuple, generator, custom class) falls through to this raise.

Source

Thrown at openbb_platform/core/openbb_core/app/utils.py:146


def convert_to_basemodel(data) -> Data | list[Data]:
    """Dispatch function to convert different types to BaseModel."""
    # pylint: disable=import-outside-toplevel
    from numpy import ndarray
    from pandas import DataFrame, Series

    if isinstance(data, Data) or issubclass(type(data), Data):
        return data
    if isinstance(data, list):
        return list_to_basemodel(data)
    if isinstance(data, dict):
        return dict_to_basemodel(data)
    if isinstance(data, (DataFrame, Series)):
        return df_to_basemodel(data)
    if isinstance(data, ndarray):
        return ndarray_to_basemodel(data)
    raise ValueError(f"Unsupported data type: {type(data)}")


def get_target_column(df: "DataFrame", target: str) -> "Series":
    """Get target column from time series data."""
    if target not in df.columns:
        choices = ", ".join(df.columns)
        raise ValueError(
            f"Target column '{target}' not found in data. Choose from {choices}"
        )
    return df[target]


def get_target_columns(df: "DataFrame", target_columns: list[str]) -> "DataFrame":
    """Get target columns from time series data."""
    # pylint: disable=import-outside-toplevel
    from pandas import DataFrame

    df_result = DataFrame()

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Return one of the supported types from the fetcher: Data, list[Data|dict], dict, DataFrame/Series, or 2D ndarray
  2. Parse JSON strings to dicts/lists before conversion
  3. Convert tuples to lists, materialize generators
  4. Align provider extension version with the installed openbb-core

Example fix

# before
def fetch():
    return ('AAPL', 'MSFT')  # tuple -> Unsupported data type

# after
def fetch():
    return [{'symbol': 'AAPL'}, {'symbol': 'MSFT'}]
Defensive patterns

Strategy: type-guard

Validate before calling

from openbb_core.provider.abstract.data import Data

def supported(data) -> bool:
    import numpy as np, pandas as pd
    return isinstance(data, (Data, list, dict, pd.DataFrame, pd.Series, np.ndarray))

Type guard

import pandas as pd, numpy as np
from openbb_core.provider.abstract.data import Data

def is_convertible(x) -> bool:
    return isinstance(x, (Data, list, dict, pd.DataFrame, pd.Series, np.ndarray))

Try / catch

try:
    models = convert_to_basemodel(payload)
except ValueError as e:
    if 'Unsupported data type' in str(e):
        payload = payload.json() if hasattr(payload, 'json') else [dict(x) for x in payload]
        models = convert_to_basemodel(payload)
    else:
        raise

Prevention

When it happens

Trigger: A provider fetcher or custom extension returning a raw JSON string, a tuple of dicts, a generator, or an int/float scalar; passing requests.Response objects instead of parsed payloads into the result pipeline.

Common situations: Custom provider extensions forgetting to structure fetch() output; returning response.json() which is sometimes a scalar; tuple literals instead of lists; older provider code incompatible with the installed openbb-core version.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/8c9a4d6a72012d1c. Report an issue: GitHub.