From 5d6532419febfdc0be03fbc9e8c0b16c043b034e Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Mon, 1 Sep 2025 17:46:38 -0700 Subject: [PATCH] refactor: remove unused function --- litellm/litellm_core_utils/safe_json_dumps.py | 91 ------------------- 1 file changed, 91 deletions(-) diff --git a/litellm/litellm_core_utils/safe_json_dumps.py b/litellm/litellm_core_utils/safe_json_dumps.py index b3b1d7fb3d..c714e36b5f 100644 --- a/litellm/litellm_core_utils/safe_json_dumps.py +++ b/litellm/litellm_core_utils/safe_json_dumps.py @@ -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)