OpenBB-finance/OpenBB · error · ValueError
Unsupported list item type: {type(item)}
Error message
Unsupported list item type: {type(item)} What it means
ValueError from list_to_basemodel in openbb_core/app/utils.py: while converting a list of results into OpenBB Data models, an item was not a Data instance, a dict, a pandas DataFrame, or a Series. Each supported type has a conversion path; anything else (str, int, tuple, custom objects) is rejected.
Source
Thrown at openbb_platform/core/openbb_core/app/utils.py:106
Data(**d) for d in json.loads(df.to_json(orient="records", date_format="iso"))
]
def list_to_basemodel(data_list: list) -> list[Data]:
"""Convert a list to a list of BaseModel."""
# pylint: disable=import-outside-toplevel
from pandas import DataFrame, Series
base_models = []
for item in data_list:
if isinstance(item, Data) or issubclass(type(item), Data):
base_models.append(item)
elif isinstance(item, dict):
base_models.append(Data(**item))
elif isinstance(item, (DataFrame, Series)):
base_models.extend(df_to_basemodel(item))
else:
raise ValueError(f"Unsupported list item type: {type(item)}")
return base_models
def dict_to_basemodel(data_dict: dict) -> Data:
"""Convert a dictionary to BaseModel."""
try:
return Data(**data_dict)
except ValidationError as e:
raise ValueError(
f"Validation error when converting dict to BaseModel: {e}"
) from e
def ndarray_to_basemodel(array: "ndarray") -> list[Data]:
"""Convert a NumPy array to list of BaseModel."""
# Assuming a 2D array where rows are records
if array.ndim != 2:
raise ValueError("Only 2D arrays are supported.")View on GitHub (pinned to 3e071fcc2c)
Solutions
- Make every list item a dict keyed by field name: [{'symbol': 'AAPL', 'close': 190.5}]
- Or return a pandas DataFrame/Series from the fetcher so df_to_basemodel handles it
- Or return Data subclass instances directly
- Upgrade openbb-core if the provider expects newer conversion support
Example fix
# before
data = ['AAPL', 'MSFT']
models = convert_to_basemodel(data) # ValueError: Unsupported list item type
# after
data = [{'symbol': 'AAPL'}, {'symbol': 'MSFT'}]
models = convert_to_basemodel(data) Defensive patterns
Strategy: type-guard
Validate before calling
def coercible_items(data_list: list) -> bool:
from pandas import DataFrame, Series
from openbb_core.provider.abstract.data import Data
return all(
isinstance(i, (Data, dict, DataFrame, Series)) for i in data_list
) Type guard
from openbb_core.provider.abstract.data import Data
from pandas import DataFrame, Series
def is_supported_item(item) -> bool:
return isinstance(item, (Data, dict, DataFrame, Series)) Try / catch
try:
models = convert_to_basemodel(data)
except ValueError as e:
if 'Unsupported list item type' in str(e):
data = [d if isinstance(d, dict) else dict(d) for d in data]
models = convert_to_basemodel(data)
else:
raise Prevention
- Standardize fetcher returns to list[dict] or DataFrame
- Add unit tests on provider fetch() output types
- Never return raw strings/scalars from data pipeline stages
When it happens
Trigger: Calling convert_to_basemodel / list_to_basemodel (used when normalizing provider fetch results) with e.g. [1, 2, 3], ['AAPL'], a list of namedtuples, or a list mixing JSON strings with dicts. Providers whose fetchers return raw strings/lists of scalars hit this during result processing.
Common situations: Writing a custom provider extension whose fetch() returns non-tabular data; passing already-serialized JSON strings; a tuple of values instead of a dict per record; version drift where a provider returns a new type not handled by the installed openbb-core.
Related errors
- Unsupported data type: {type(data)}
- 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/7cf9823e5e9784a2.
Report an issue: GitHub.