aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py')
-rw-r--r--.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py b/.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py
new file mode 100644
index 00000000..6e3fbf84
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py
@@ -0,0 +1,58 @@
+# What this does?
+## Checks if key is allowed to use the cache controls passed in to the completion() call
+
+
+from fastapi import HTTPException
+
+from litellm import verbose_logger
+from litellm._logging import verbose_proxy_logger
+from litellm.caching.caching import DualCache
+from litellm.integrations.custom_logger import CustomLogger
+from litellm.proxy._types import UserAPIKeyAuth
+
+
+class _PROXY_CacheControlCheck(CustomLogger):
+ # Class variables or attributes
+ def __init__(self):
+ pass
+
+ async def async_pre_call_hook(
+ self,
+ user_api_key_dict: UserAPIKeyAuth,
+ cache: DualCache,
+ data: dict,
+ call_type: str,
+ ):
+ try:
+ verbose_proxy_logger.debug("Inside Cache Control Check Pre-Call Hook")
+ allowed_cache_controls = user_api_key_dict.allowed_cache_controls
+
+ if data.get("cache", None) is None:
+ return
+
+ cache_args = data.get("cache", None)
+ if isinstance(cache_args, dict):
+ for k, v in cache_args.items():
+ if (
+ (allowed_cache_controls is not None)
+ and (isinstance(allowed_cache_controls, list))
+ and (
+ len(allowed_cache_controls) > 0
+ ) # assume empty list to be nullable - https://github.com/prisma/prisma/issues/847#issuecomment-546895663
+ and k not in allowed_cache_controls
+ ):
+ raise HTTPException(
+ status_code=403,
+ detail=f"Not allowed to set {k} as a cache control. Contact admin to change permissions.",
+ )
+ else: # invalid cache
+ return
+
+ except HTTPException as e:
+ raise e
+ except Exception as e:
+ verbose_logger.exception(
+ "litellm.proxy.hooks.cache_control_check.py::async_pre_call_hook(): Exception occured - {}".format(
+ str(e)
+ )
+ )