in elasticsearch/serializer.py [0:0]
def default(self, data: Any) -> Any:
if isinstance(data, TIME_TYPES):
# Little hack to avoid importing pandas but to not
# return 'NaT' string for pd.NaT as that's not a valid
# Elasticsearch date.
formatted_data = data.isoformat()
if formatted_data != "NaT":
return formatted_data
if isinstance(data, uuid.UUID):
return str(data)
elif isinstance(data, FLOAT_TYPES):
return float(data)
# This is kept for backwards compatibility even
# if 'INTEGER_TYPES' isn't used by default anymore.
elif INTEGER_TYPES and isinstance(data, INTEGER_TYPES):
return int(data)
# Special cases for numpy and pandas types
# These are expensive to import so we try them last.
serialized, value = _attempt_serialize_numpy_or_pandas(data)
if serialized:
return value
raise TypeError(f"Unable to serialize {data!r} (type: {type(data)})")