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
- Return one of the supported types from the fetcher: Data, list[Data|dict], dict, DataFrame/Series, or 2D ndarray
- Parse JSON strings to dicts/lists before conversion
- Convert tuples to lists, materialize generators
- 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
- Fix the fetcher contract: return list/DataFrame only
- Parse HTTP responses fully before returning from fetch()
- Test custom extensions against convert_to_basemodel directly
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
- Unsupported list item type: {type(item)}
- Validation error when converting dict to BaseModel: {e}
- Only 2D arrays are supported.
- Unsupported file format. Please use .json or .env files.
- Failed to get Jupyter URL
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/8c9a4d6a72012d1c.
Report an issue: GitHub.