o
    ưiZ                  	   @   s   d Z ddlZddlmZmZmZmZ ddlZddlm	Z	 er-ddl
mZ eZddlmZ neZeZdeded	eeef d
ee fddZdee fddZdS )z1
Callbacks triggered on cooling down deployments
    N)TYPE_CHECKINGAnyOptionalUnion)verbose_logger)RouterPrometheusLoggerlitellm_router_instancedeployment_idexception_statuscooldown_timec                    s  t d | j|d}|du rt d| d dS |d }t|}t|}|ddp/d}tj	||d	p8d}|d
 }	|	j
}
|dpFd}d}ztj||dd\}}}}W n	 tyb   Y nw t }|dur|j||
||d |j||
||t|d dS )z
    Callback triggered when a deployment is put into cooldown by litellm

    - Updates deployment state on Prometheus
    - Increments cooldown metric for deployment on Prometheus
    z7In router_cooldown_event_callback - updating prometheus)model_idNzLin router_cooldown_event_callback but _deployment is None for deployment_id=z. Doing nothingZlitellm_paramsZ
model_name )modelZoptional_params
model_infor   custom_llm_provider)r   r   )litellm_model_namer   api_baseapi_provider)r   r   r   r   r   )r   debugZget_deploymentwarningcopydeepcopydictgetlitellmZget_api_baseidZget_llm_provider	Exception%_get_prometheus_logger_from_callbacksZset_deployment_complete_outageZ increment_deployment_cooled_downstr)r
   r   r   r   Z_deploymentZ_litellm_paramsZtemp_litellm_paramsZ_model_nameZ	_api_baser   r   r   Zllm_provider_ZprometheusLogger r"   ^/home/app/Keep/.python/lib/python3.10/site-packages/litellm/router_utils/cooldown_callbacks.pyrouter_cooldown_event_callback   sX   


r$   returnc                  C   sX   ddl m}  | du rdS tjD ]}t|| r|  S qtjD ]}t|| r)|  S qdS )zJ
    Checks if prometheus is a initalized callback, if yes returns it
    r   r   N)litellm.integrations.prometheusr	   r   Z_async_success_callback
isinstance	callbacks)r	   	_callbackZglobal_callbackr"   r"   r#   r   U   s   



r   )__doc__r   typingr   r   r   r   r   Zlitellm._loggingr   Zlitellm.routerr   Z_RouterZLitellmRouterr&   r	   r    intfloatr$   r   r"   r"   r"   r#   <module>   s*    

@