mirror of
https://github.com/tiennm99/litellm.git
synced 2026-07-30 00:21:04 +00:00
refactor: remove unused function
This commit is contained in:
@@ -50,94 +50,3 @@ def safe_dumps(data: Any, max_depth: int = DEFAULT_MAX_RECURSE_DEPTH) -> str:
|
||||
|
||||
safe_data = _serialize(data, set(), 0)
|
||||
return json.dumps(safe_data, default=str)
|
||||
|
||||
|
||||
def filter_json_serializable(
|
||||
data: Any, max_depth: int = DEFAULT_MAX_RECURSE_DEPTH
|
||||
) -> Any:
|
||||
"""
|
||||
Recursively filter data to only include JSON serializable items.
|
||||
Non-serializable items are completely skipped (not included in the result).
|
||||
"""
|
||||
|
||||
def _is_json_serializable(obj: Any) -> bool:
|
||||
"""Test if an object is JSON serializable."""
|
||||
try:
|
||||
json.dumps(obj)
|
||||
return True
|
||||
except (TypeError, ValueError):
|
||||
return False
|
||||
|
||||
def _filter(obj: Any, seen: set, depth: int) -> Any:
|
||||
# Check for maximum depth.
|
||||
if depth > max_depth:
|
||||
return None
|
||||
|
||||
# Base-case: if it is a primitive, test if it's serializable
|
||||
if isinstance(obj, (str, int, float, bool, type(None))):
|
||||
return obj if _is_json_serializable(obj) else None
|
||||
|
||||
# Check for circular reference.
|
||||
if id(obj) in seen:
|
||||
return None
|
||||
|
||||
seen.add(id(obj))
|
||||
|
||||
try:
|
||||
if isinstance(obj, dict):
|
||||
result = {}
|
||||
for k, v in obj.items():
|
||||
# Only include keys that are strings and values that are serializable
|
||||
if isinstance(k, str):
|
||||
filtered_value = _filter(v, seen, depth + 1)
|
||||
# Only add the key-value pair if the value is serializable
|
||||
if filtered_value is not None or v is None:
|
||||
if _is_json_serializable(filtered_value):
|
||||
result[k] = filtered_value
|
||||
seen.remove(id(obj))
|
||||
return result
|
||||
|
||||
elif isinstance(obj, list):
|
||||
result = []
|
||||
for item in obj:
|
||||
filtered_item = _filter(item, seen, depth + 1)
|
||||
# Only include items that are serializable
|
||||
if filtered_item is not None or item is None:
|
||||
if _is_json_serializable(filtered_item):
|
||||
result.append(filtered_item)
|
||||
seen.remove(id(obj))
|
||||
return result
|
||||
|
||||
elif isinstance(obj, tuple):
|
||||
filtered_items = []
|
||||
for item in obj:
|
||||
filtered_item = _filter(item, seen, depth + 1)
|
||||
# Only include items that are serializable
|
||||
if filtered_item is not None or item is None:
|
||||
if _is_json_serializable(filtered_item):
|
||||
filtered_items.append(filtered_item)
|
||||
seen.remove(id(obj))
|
||||
return tuple(filtered_items)
|
||||
|
||||
elif isinstance(obj, set):
|
||||
filtered_items = []
|
||||
for item in obj:
|
||||
filtered_item = _filter(item, seen, depth + 1)
|
||||
# Only include items that are serializable
|
||||
if filtered_item is not None or item is None:
|
||||
if _is_json_serializable(filtered_item):
|
||||
filtered_items.append(filtered_item)
|
||||
seen.remove(id(obj))
|
||||
return sorted(filtered_items)
|
||||
|
||||
else:
|
||||
# Test if the object is directly serializable
|
||||
seen.remove(id(obj))
|
||||
return obj if _is_json_serializable(obj) else None
|
||||
|
||||
except Exception:
|
||||
if id(obj) in seen:
|
||||
seen.remove(id(obj))
|
||||
return None
|
||||
|
||||
return _filter(data, set(), 0)
|
||||
|
||||
Reference in New Issue
Block a user