Skip to content

Commit 122ad1d

Browse files
authored
added try catch to serializer (#421)
1 parent b17daaa commit 122ad1d

1 file changed

Lines changed: 21 additions & 14 deletions

File tree

agentops/helpers.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,27 @@ def filter_dict(obj):
5959

6060
def safe_serialize(obj):
6161
def default(o):
62-
if isinstance(o, UUID):
63-
return str(o)
64-
elif hasattr(o, "model_dump_json"):
65-
return o.model_dump_json()
66-
elif hasattr(o, "to_json"):
67-
return o.to_json()
68-
elif hasattr(o, "json"):
69-
return o.json()
70-
elif hasattr(o, "to_dict"):
71-
return o.to_dict()
72-
elif hasattr(o, "dict"):
73-
return o.dict()
74-
else:
75-
return f"<<non-serializable: {type(o).__qualname__}>>"
62+
try:
63+
if isinstance(o, UUID):
64+
return str(o)
65+
elif hasattr(o, "model_dump_json"):
66+
return str(o.model_dump_json())
67+
elif hasattr(o, "to_json"):
68+
return str(o.to_json())
69+
elif hasattr(o, "json"):
70+
return str(o.json())
71+
elif hasattr(o, "to_dict"):
72+
return {k: str(v) for k, v in o.to_dict().items() if not callable(v)}
73+
elif hasattr(o, "dict"):
74+
return {k: str(v) for k, v in o.dict().items() if not callable(v)}
75+
elif isinstance(o, dict):
76+
return {k: str(v) for k, v in o.items()}
77+
elif isinstance(o, list):
78+
return [str(item) for item in o]
79+
else:
80+
return f"<<non-serializable: {type(o).__qualname__}>>"
81+
except Exception as e:
82+
return f"<<serialization-error: {str(e)}>>"
7683

7784
def remove_unwanted_items(value):
7885
"""Recursively remove self key and None/... values from dictionaries so they aren't serialized"""

0 commit comments

Comments
 (0)