
    g                         d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZm	Z	 d dl
 ej                  j                  d e j                  j                  d             dee   defd	Zd
ededefdZde	dedefdZy)    N)Dict)verbose_proxy_logger)LiteLLM_TeamTableUserAPIKeyAuth)*z../..team_objreturnc                     | y| j                   xs i }|j                  dd       Dt        |j                  d      t              r%|j                  di       j                  dd       du ryy)NT
guardrailsmodify_guardrailsF)metadataget
isinstancer   )r   team_metadatas     _/var/www/openai/venv/lib/python3.12/site-packages/litellm/proxy/guardrails/guardrail_helpers.pycan_modify_guardrailsr      sq    %%+Mt,8Z,'> \2.223FMQVV    dataguardrail_namec                   K   d| v rt        | d   t              rd| d   v r| d   d   }t        j                  d|       g }t        |t              r|j	                         D ]P  \  }}|du rt        j                  d|       !t
        j                  |   }|j                  }|j                  |       R t        j                  d|       ||v ryyyw)A
    checks if this guardrail should be applied to this call
    r   r   z9Guardrails %s passed in request - checking which to applyF1Guardrail %s skipped because request set to Falsezrequested_callback_names %sT)	r   dictr   debugitemslitellmguardrail_name_config_map	callbacksextend)r   r   request_guardrailsrequested_callback_names_guardrail_name
should_runguardrail_itemguardrail_callbackss           r    should_proceed_based_on_metadatar&      s     Tjj)94@4
++ "&j!1,!? &&K"
 (*$ ,d3 4F3K3K3M/OZ!U*,22O+ ! 5<4U4U'5N +9*B*B',334GH 4N  %**13K "%== s   CCuser_api_key_dictc                   K   | j                   t        j                  d| j                          t        | j                   t              st        j
                  d| |       y| j                   j                         D ]E  \  }}|du rt        j                  d|       !t        j                  |   }|j                  }||v sE y yyw)r   z:Guardrails valid for API Key= %s - checking which to applyz<API Key permissions must be a dict - %s running guardrail %sTFr   )
permissionsr   r   r   r   errorr   r   r   r   )r'   r   r"   r#   r$   r%   s         r   should_proceed_based_on_api_keyr+   O   s      $$0""H))	

 +77> &&N!
 +<+H+H+N+N+P'OZU"$**G#  -4,M,M-N #1":":!44 ,Q$ s   B=C C)ossystypingr   r   litellm._loggingr   litellm.proxy.proxy_serverr   r   litellm.types.guardrailspathinsertabspathOptionalboolr   r   strr&   r+    r   r   <module>r9      s    	 
   1 H & rwww
H->$? D . .s .t .b(%(7:(	(r   