o
    ưi                     @   sr   d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ G d	d
 d
ZdS )    )ListOptionalN)verbose_logger)X_LITELLM_DISABLE_CALLBACKS)CustomLogger) get_proxy_server_request_headers)CommonProxyErrors)StandardCallbackDynamicParamsc                	   @   sZ   e Zd ZedejdededefddZ	ededede
ee  fddZed	d
 ZdS )EnterpriseCallbackControlscallbacklitellm_params standard_callback_dynamic_paramsreturnc              
   C   s  ddl m} zit||}tdt d|  td|  d|  |durmt s.W dS t| t	rJ| 
 |v rGtd	|  d
t  W dS W dS t| trm|| j}|durm|
 |v rmtd	| d
t  W dS W dS  ty } ztdt	|  W Y d}~dS d}~ww )a  
            Check if a callback is disabled via the x-litellm-disable-callbacks header or via `litellm_disabled_callbacks` in standard_callback_dynamic_params.
            
            Args:
                callback: The callback to check (can be string, CustomLogger instance, or callable)
                litellm_params: Parameters containing proxy server request info
                
            Returns:
                bool: True if the callback should be disabled, False otherwise
            r   )CustomLoggerRegistryz$Dynamically disabled callbacks from z: zChecking if z: is disabled via headers. Disable callbacks from headers: NFzNot logging to z because it is disabled via Tz*Error checking disabled callbacks header: )Z1litellm.litellm_core_utils.custom_logger_registryr   r
   get_disabled_callbacksr   debugr   (_should_allow_dynamic_callback_disabling
isinstancestrlowerr   Z get_callback_str_from_class_type	__class__	Exception)r   r   r   r   disabled_callbacksZcallback_stre r   p/home/app/Keep/.python/lib/python3.10/site-packages/litellm_enterprise/enterprise_callbacks/callback_controls.py is_callback_disabled_dynamically   s4   

z;EnterpriseCallbackControls.is_callback_disabled_dynamicallyc                 C   s\   t | }|td}|durtdd |dD }t|S |dddur,|ddS dS )zW
        Get the disabled callbacks from the standard callback dynamic params.
        Nc                 S   s   g | ]}|   qS r   )stripr   ).0cbr   r   r   
<listcomp>J   s    zEEnterpriseCallbackControls.get_disabled_callbacks.<locals>.<listcomp>,Zlitellm_disabled_callbacks)r   getr   setsplitlist)r   r   Zrequest_headersr   r   r   r   r   >   s   	z1EnterpriseCallbackControls.get_disabled_callbacksc                  C   sL   dd l } ddlm} | jdurtd dS |rdS tdtjj	  dS )Nr   )premium_userTz\Dynamic callback disabling is disabled by admin via litellm.allow_dynamic_callback_disablingFzDDisabling callbacks using request headers is an enterprise feature. )
litellmZlitellm.proxy.proxy_serverr&   Z allow_dynamic_callback_disablingr   r   warningr   Znot_premium_uservalue)r'   r&   r   r   r   r   V   s   

zCEnterpriseCallbackControls._should_allow_dynamic_callback_disablingN)__name__
__module____qualname__staticmethodr'   ZCALLBACK_TYPESdictr	   boolr   r   r   r   r   r   r   r   r   r   r
      s    . r
   )typingr   r   r'   Zlitellm._loggingr   Zlitellm.constantsr   Z"litellm.integrations.custom_loggerr   Z,litellm.litellm_core_utils.llm_request_utilsr   Zlitellm.proxy._typesr   Zlitellm.types.utilsr	   r
   r   r   r   r   <module>   s    