{"record":{"id":"7cf9823e5e9784a2","repo":"OpenBB-finance/OpenBB","slug":"unsupported-list-item-type-type-item","errorCode":null,"errorMessage":"Unsupported list item type: {type(item)}","messagePattern":"Unsupported list item type: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"openbb_platform/core/openbb_core/app/utils.py","lineNumber":106,"sourceCode":"        Data(**d) for d in json.loads(df.to_json(orient=\"records\", date_format=\"iso\"))\n    ]\n\n\ndef list_to_basemodel(data_list: list) -> list[Data]:\n    \"\"\"Convert a list to a list of BaseModel.\"\"\"\n    # pylint: disable=import-outside-toplevel\n    from pandas import DataFrame, Series\n\n    base_models = []\n    for item in data_list:\n        if isinstance(item, Data) or issubclass(type(item), Data):\n            base_models.append(item)\n        elif isinstance(item, dict):\n            base_models.append(Data(**item))\n        elif isinstance(item, (DataFrame, Series)):\n            base_models.extend(df_to_basemodel(item))\n        else:\n            raise ValueError(f\"Unsupported list item type: {type(item)}\")\n    return base_models\n\n\ndef dict_to_basemodel(data_dict: dict) -> Data:\n    \"\"\"Convert a dictionary to BaseModel.\"\"\"\n    try:\n        return Data(**data_dict)\n    except ValidationError as e:\n        raise ValueError(\n            f\"Validation error when converting dict to BaseModel: {e}\"\n        ) from e\n\n\ndef ndarray_to_basemodel(array: \"ndarray\") -> list[Data]:\n    \"\"\"Convert a NumPy array to list of BaseModel.\"\"\"\n    # Assuming a 2D array where rows are records\n    if array.ndim != 2:\n        raise ValueError(\"Only 2D arrays are supported.\")","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/core/openbb_core/app/utils.py#L88-L124","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before\ndata = ['AAPL', 'MSFT']\nmodels = convert_to_basemodel(data)  # ValueError: Unsupported list item type\n\n# after\ndata = [{'symbol': 'AAPL'}, {'symbol': 'MSFT'}]\nmodels = convert_to_basemodel(data)","handlingStrategy":"type-guard","validationCode":"def coercible_items(data_list: list) -> bool:\n    from pandas import DataFrame, Series\n    from openbb_core.provider.abstract.data import Data\n    return all(\n        isinstance(i, (Data, dict, DataFrame, Series)) for i in data_list\n    )","typeGuard":"from openbb_core.provider.abstract.data import Data\nfrom pandas import DataFrame, Series\n\ndef is_supported_item(item) -> bool:\n    return isinstance(item, (Data, dict, DataFrame, Series))","tryCatchPattern":"try:\n    models = convert_to_basemodel(data)\nexcept ValueError as e:\n    if 'Unsupported list item type' in str(e):\n        data = [d if isinstance(d, dict) else dict(d) for d in data]\n        models = convert_to_basemodel(data)\n    else:\n        raise","preventionTips":["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"],"tags":["openbb","type-conversion","basemodel","provider-dev"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}