mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
[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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user