
    ^h                         S SK r S SKrS SKJr  S SKrS SKJr  S SKJrJ	r	  S SK
7  \R                  R                  S \ R                  R                  S5      5        S\\   S\4S	 jrS
\S\S\4S jrS\	S\S\4S jrg)    N)Dict)verbose_proxy_logger)LiteLLM_TeamTableUserAPIKeyAuth)*z../..team_objreturnc                     U c  gU R                   =(       d    0 nUR                  SS 5      bJ  [        UR                  S5      [        5      (       a&  UR                  S0 5      R                  SS 5      SL a  gg)NT
guardrailsmodify_guardrailsF)metadataget
isinstancer   )r   team_metadatas     d/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/guardrails/guardrail_helpers.pycan_modify_guardrailsr      sv    %%+Mt,8Z,'> > \2.223FMQVV    dataguardrail_namec                   #    SU ;   a  [        U S   [        5      (       a  SU S   ;   a  U S   S   n[        R                  " SU5        / n[        U[        5      (       a  UR	                  5        HS  u  pEUSL a  [        R                  " SU5        M#  [
        R                  U   nUR                  nUR                  U5        MU     [        R                  " SU5        X;   a  ggg7f)9
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3 4F3K3K3M/O!U*,22O+ ! 5<4U4U'5N +9*B*B',334GH 4N  %**13K "= s   C$C&user_api_key_dictc                   #    U R                   b  [        R                  " SU R                   5        [        U R                   [        5      (       d  [        R
                  " SU U5        gU R                   R                  5        HI  u  p#USL a  [        R                  " SU5        M#  [        R                  U   nUR                  nX;   d  MI    g   gg7f)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'OU"$**G#  -4,M,M-N #1":":4 ,Q$ s   C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   