mirror of
https://github.com/tiennm99/litellm.git
synced 2026-06-17 12:48:57 +00:00
88 lines
2.8 KiB
Python
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"])
|