77from sentry_sdk .utils import logger
88
99
10- def _normalize_data (data ):
11- # type: (Any) -> Any
10+ def _normalize_data (data , unpack = True ):
11+ # type: (Any, bool ) -> Any
1212
1313 # convert pydantic data (e.g. OpenAI v1+) to json compatible format
1414 if hasattr (data , "model_dump" ):
@@ -18,18 +18,18 @@ def _normalize_data(data):
1818 logger .warning ("Could not convert pydantic data to JSON: %s" , e )
1919 return data
2020 if isinstance (data , list ):
21- if len (data ) == 1 :
22- return _normalize_data (data [0 ]) # remove empty dimensions
23- return list (_normalize_data (x ) for x in data )
21+ if unpack and len (data ) == 1 :
22+ return _normalize_data (data [0 ], unpack = unpack ) # remove empty dimensions
23+ return list (_normalize_data (x , unpack = unpack ) for x in data )
2424 if isinstance (data , dict ):
25- return {k : _normalize_data (v ) for (k , v ) in data .items ()}
25+ return {k : _normalize_data (v , unpack = unpack ) for (k , v ) in data .items ()}
2626
2727 return data
2828
2929
30- def set_data_normalized (span , key , value ):
31- # type: (Span, str, Any) -> None
32- normalized = _normalize_data (value )
30+ def set_data_normalized (span , key , value , unpack = True ):
31+ # type: (Span, str, Any, bool ) -> None
32+ normalized = _normalize_data (value , unpack = unpack )
3333 if isinstance (normalized , (int , float , bool , str )):
3434 span .set_data (key , normalized )
3535 else :
0 commit comments