{"record":{"id":"8c9a4d6a72012d1c","repo":"OpenBB-finance/OpenBB","slug":"unsupported-data-type-type-data","errorCode":null,"errorMessage":"Unsupported data type: {type(data)}","messagePattern":"Unsupported data type: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"openbb_platform/core/openbb_core/app/utils.py","lineNumber":146,"sourceCode":"\n\ndef convert_to_basemodel(data) -> Data | list[Data]:\n    \"\"\"Dispatch function to convert different types to BaseModel.\"\"\"\n    # pylint: disable=import-outside-toplevel\n    from numpy import ndarray\n    from pandas import DataFrame, Series\n\n    if isinstance(data, Data) or issubclass(type(data), Data):\n        return data\n    if isinstance(data, list):\n        return list_to_basemodel(data)\n    if isinstance(data, dict):\n        return dict_to_basemodel(data)\n    if isinstance(data, (DataFrame, Series)):\n        return df_to_basemodel(data)\n    if isinstance(data, ndarray):\n        return ndarray_to_basemodel(data)\n    raise ValueError(f\"Unsupported data type: {type(data)}\")\n\n\ndef get_target_column(df: \"DataFrame\", target: str) -> \"Series\":\n    \"\"\"Get target column from time series data.\"\"\"\n    if target not in df.columns:\n        choices = \", \".join(df.columns)\n        raise ValueError(\n            f\"Target column '{target}' not found in data. Choose from {choices}\"\n        )\n    return df[target]\n\n\ndef get_target_columns(df: \"DataFrame\", target_columns: list[str]) -> \"DataFrame\":\n    \"\"\"Get target columns from time series data.\"\"\"\n    # pylint: disable=import-outside-toplevel\n    from pandas import DataFrame\n\n    df_result = DataFrame()","sourceCodeStart":128,"sourceCodeEnd":164,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/core/openbb_core/app/utils.py#L128-L164","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before\ndef fetch():\n    return ('AAPL', 'MSFT')  # tuple -> Unsupported data type\n\n# after\ndef fetch():\n    return [{'symbol': 'AAPL'}, {'symbol': 'MSFT'}]","handlingStrategy":"type-guard","validationCode":"from openbb_core.provider.abstract.data import Data\n\ndef supported(data) -> bool:\n    import numpy as np, pandas as pd\n    return isinstance(data, (Data, list, dict, pd.DataFrame, pd.Series, np.ndarray))","typeGuard":"import pandas as pd, numpy as np\nfrom openbb_core.provider.abstract.data import Data\n\ndef is_convertible(x) -> bool:\n    return isinstance(x, (Data, list, dict, pd.DataFrame, pd.Series, np.ndarray))","tryCatchPattern":"try:\n    models = convert_to_basemodel(payload)\nexcept ValueError as e:\n    if 'Unsupported data type' in str(e):\n        payload = payload.json() if hasattr(payload, 'json') else [dict(x) for x in payload]\n        models = convert_to_basemodel(payload)\n    else:\n        raise","preventionTips":["Fix the fetcher contract: return list/DataFrame only","Parse HTTP responses fully before returning from fetch()","Test custom extensions against convert_to_basemodel directly"],"tags":["openbb","type-conversion","dispatch","provider-dev"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}