Skip to content

Commit 88f9c26

Browse files
deeleeramonepiiq
authored andcommitted
[Feature] Custom Serializer For OptionsChainsData For Outputting List Of Records (OpenBB-finance#7035)
* add a custom serializer to OptionsChainsData to convert model output to list of dictionaries * unused items --------- Co-authored-by: Theodore Aptekarev <[email protected]>
1 parent 4f73e72 commit 88f9c26

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

openbb_platform/core/openbb_core/provider/standard_models/options_chains.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
QUERY_DESCRIPTIONS,
1313
)
1414
from openbb_core.provider.utils.options_chains_properties import OptionsChainsProperties
15-
from pydantic import Field, field_validator
15+
from pydantic import Field, field_validator, model_serializer
1616

1717

1818
class OptionsChainsQueryParams(QueryParams):
@@ -351,3 +351,22 @@ def _date_validate(cls, v):
351351
if isinstance(v[0], str):
352352
return [datetime.strptime(d, "%Y-%m-%d") if d else None for d in v]
353353
return v
354+
355+
@model_serializer
356+
def model_serialize(self):
357+
"""Return the serialized data."""
358+
data: dict = {}
359+
for field in self.model_fields:
360+
value = getattr(self, field)
361+
if isinstance(value, list):
362+
if value: # Check if the list is not empty
363+
if isinstance(value[0], datetime):
364+
data[field] = [str(v) if v else None for v in value]
365+
else:
366+
data[field] = value
367+
else:
368+
data[field] = value
369+
370+
records = [dict(zip(data.keys(), values)) for values in zip(*data.values())]
371+
372+
return records

0 commit comments

Comments
 (0)