
    ^h                         S r SSKrSSKJrJrJrJr  SSKrSSKJ	r	  \(       a  SSK
Jr  \rSSKJr  O\r\rS\S\S	\\\4   S
\4S jrS\\   4S jrg)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           	        #    [         R                  " S5        U R                  US9nUc  [         R                  " SU S35        gUS   n[        R
                  " U5      n[        U5      nUR                  SS5      =(       d    Sn[        R                  " XvS	9=(       d    SnUS
   n	U	R                  n
UR                  S5      =(       d    SnSn [        R                  " UUR                  S5      S9u  p  n[        5       nUb.  UR                  UU
UUS9  UR                  UU
UU[!        U5      S9  g! [         a     NHf = f7f)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 nothinglitellm_params
model_name )modeloptional_params
model_infor   custom_llm_provider)r   r   )litellm_model_namer   api_baseapi_provider)r   r   r   r   r   )r   debugget_deploymentwarningcopydeepcopydictgetlitellmget_api_baseidget_llm_provider	Exception%_get_prometheus_logger_from_callbacksset_deployment_complete_outage increment_deployment_cooled_downstr)r   r   r   r   _deployment_litellm_paramstemp_litellm_params_model_name	_api_baser   r   r   llm_provider_prometheusLoggers                  a/home/james-whalen/.local/lib/python3.13/site-packages/litellm/router_utils/cooldown_callbacks.pyrouter_cooldown_event_callbackr4      s{     RS)88-8PKZ[hZiixy	
 	!"23O--823//,5;K;T 	  \*J}}H,009?RL ' 8 8$ 3 7 78M N!
A 	./  #77*%	 	8 	
 	99*% !12 	: 	
 1  s*   CE(D6 :<E6
E EEEreturnc                      SSK Jn   [        R                   H  n[	        X5      (       d  M  Us  $    [        R
                   H  n[	        X 5      (       d  M  Us  $    g)zB
Checks if prometheus is a initalized callback, if yes returns it
r   r	   N)litellm.integrations.prometheusr
   r"   _async_success_callback
isinstance	callbacks)r
   	_callbackglobal_callbacks      r3   r'   r'   U   sQ     A44	i22 5 #,,o88"" -     )__doc__r   typingr   r   r   r   r"   litellm._loggingr   litellm.routerr   _RouterLitellmRouterr7   r
   r*   intfloatr4   r'    r=   r3   <module>rG      sx     6 6  +0M@M=*== CHo= 	=@x8H/I r=   