[Feature] Custom Serializer For OptionsChainsData For Outputting List Of Records (#7035)

* add a custom serializer to OptionsChainsData to convert model output to list of dictionaries

* unused items

---------

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
This commit is contained in:
Danglewood
2025-03-05 08:15:43 -08:00
committed by GitHub
parent 532e71a721
commit 202eb6b173

View File

@@ -12,7 +12,7 @@ from openbb_core.provider.utils.descriptions import (
QUERY_DESCRIPTIONS,
)
from openbb_core.provider.utils.options_chains_properties import OptionsChainsProperties
from pydantic import Field, field_validator
from pydantic import Field, field_validator, model_serializer
class OptionsChainsQueryParams(QueryParams):
@@ -351,3 +351,22 @@ class OptionsChainsData(OptionsChainsProperties):
if isinstance(v[0], str):
return [datetime.strptime(d, "%Y-%m-%d") if d else None for d in v]
return v
@model_serializer
def model_serialize(self):
"""Return the serialized data."""
data: dict = {}
for field in self.model_fields:
value = getattr(self, field)
if isinstance(value, list):
if value: # Check if the list is not empty
if isinstance(value[0], datetime):
data[field] = [str(v) if v else None for v in value]
else:
data[field] = value
else:
data[field] = value
records = [dict(zip(data.keys(), values)) for values in zip(*data.values())]
return records