From 4a52a71956a8d46fcb7294ac71734504bb09bcc2 Mon Sep 17 00:00:00 2001 From: S. Solomon Darnell Date: Fri, 28 Mar 2025 21:52:21 -0500 Subject: two version of R2R are here --- .../litellm/proxy/hooks/cache_control_check.py | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py (limited to '.venv/lib/python3.12/site-packages/litellm/proxy/hooks/cache_control_check.py') 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) + ) + ) -- cgit v1.2.3