Ë
    tPêj<  ã                   óö   — 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dz  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)ÚFinal)Ú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Ú
isinstanceÚdict)r   Úteam_metadatas     úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/guardrails/guardrail_helpers.pyÚcan_modify_guardrailsr      sn   € ØÐØà#×,Ñ,Ò2°€Mà×Ñ˜ tÓ,Ð8¼ZÈ×HYÑHYÐZfÓHgÔimÔ=nØ×Ñ˜\¨2Ó.×2Ñ2Ð3FÈÓMÐQVÑVØàó    ÚdataÚguardrail_namec              ƒ   ó¦  K  — d| v rÉt        | d   t        «      r¶d| 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 applyFú1Guardrail %s skipped because request set to Falsezrequested_callback_names %sT)	r   r   r   Ú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Ñ)9¼4Ô@Ø˜4 
Ñ+Ñ+ð )-¨ZÑ(8¸Ñ(FÐÜ ×&Ñ&ØKØ"ôð
 /1Ð$ô Ð,¬dÔ3ð 4F×3KÑ3KÓ3Mò IÑ/�O ZØ! UÑ*Ü,×2Ñ2ØOØ+ôð !ô 5<×4UÑ4UÐVeÑ4f�Nà*8×*BÑ*BÐ'Ø,×3Ñ3Ð4GÕHðIô %×*Ñ*Ð+HÐJbÔcØ!Ð%=Ñ=Øð àù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+   F   sÓ   è ø€ ð ×$Ñ$Ð0ä×"Ñ"ØHØ×)Ñ)ô	
ô
 Ð+×7Ñ7¼Ô>Ü ×&Ñ&ØNØ!Øôð
 à+<×+HÑ+H×+NÑ+NÓ+Pò 	Ñ'ˆO˜ZØ˜UÑ"Ü$×*Ñ*ØGØ#ôð ô -4×,MÑ,MÈoÑ,^ˆNà"0×":Ñ":ÐØÐ!4Ò4Ùð	ð  Øùs   ‚B=CÃ C)ÚosÚsysÚtypingr   r   Úlitellm._loggingr   Úlitellm.proxy.proxy_serverr   r   Úlitellm.types.guardrailsÚpathÚinsertÚabspathÚboolr   r   Ústrr&   r+   © r   r   ú<module>r8      s‰   ðÛ 	Û 
Ý ã Ý 1ß HÜ &à ‡�‡���2—7‘7—?‘? 7Ó+Ô ,ð
Ð$5¸Ñ$<ð 
Àó 
ð)°ð )Àsð )Ètó )ðX$¸^ð $Ð]`ð $Ðeiô $r   