Files
litellm/tests/local_testing/test_cache_preset_key.py
T
2026-04-17 13:02:59 -07:00

88 lines
2.8 KiB
Python

"""
Test for preset_cache_key multiple values bug fix.
This test verifies that get_cache_key doesn't raise TypeError when kwargs
already contains preset_cache_key.
Issue: When get_cache_key(**kwargs) is called with kwargs containing
preset_cache_key, the call to _set_preset_cache_key_in_kwargs() would fail with:
TypeError: got multiple values for keyword argument 'preset_cache_key'
"""
import pytest
from unittest.mock import MagicMock, patch
class TestPresetCacheKeyFix:
"""Tests for the preset_cache_key multiple values fix."""
def test_get_cache_key_with_preset_cache_key_in_kwargs(self):
"""
Test that get_cache_key handles kwargs that already contain preset_cache_key.
This was causing:
TypeError: _set_preset_cache_key_in_kwargs() got multiple values
for keyword argument 'preset_cache_key'
"""
from litellm.caching.caching import Cache
cache = Cache()
# Simulate kwargs that already has preset_cache_key (as can happen
# when the cache key is recomputed in certain code paths)
kwargs_with_preset = {
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}],
"preset_cache_key": "existing_key_12345", # This caused the bug
"litellm_params": {},
}
# This should NOT raise TypeError
try:
result = cache.get_cache_key(**kwargs_with_preset)
assert result is not None
assert isinstance(result, str)
except TypeError as e:
if "multiple values for keyword argument" in str(e):
pytest.fail(f"Bug not fixed: {e}")
raise
def test_get_cache_key_without_preset_cache_key(self):
"""Test normal case without preset_cache_key in kwargs still works."""
from litellm.caching.caching import Cache
cache = Cache()
kwargs_normal = {
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}],
"litellm_params": {},
}
result = cache.get_cache_key(**kwargs_normal)
assert result is not None
assert isinstance(result, str)
def test_preset_cache_key_is_set_in_litellm_params(self):
"""Verify that preset_cache_key is correctly set in litellm_params."""
from litellm.caching.caching import Cache
cache = Cache()
litellm_params = {}
kwargs = {
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}],
"litellm_params": litellm_params,
}
result = cache.get_cache_key(**kwargs)
# The method should set preset_cache_key in litellm_params
assert "preset_cache_key" in litellm_params
assert litellm_params["preset_cache_key"] == result
if __name__ == "__main__":
pytest.main([__file__, "-v"])