
    g!                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ  e       Z	ej                  j                  dd      j                         dk(  r	 d dlZ ed        ej                           ed	        ej                            ej"                         Z ed
        ej                   e        ej(                  d       e	j                  dd      d        Ze	j                  dd      d        Ze	j                  dd      d        Ze	j                  dd      d        Zd Zy# e$ r	  ed      w xY w)    N)	APIRouter)get_secret_str)verbose_proxy_loggerLITELLM_PROFILEfalsetruezgrowth of objectsz

Most common typesz

Leaking objects)objectsz@objgraph not found. Please install objgraph to use this feature.
   z/memory-usageF)include_in_schemac                     K   t        j                         } | j                  d      }t        j                  d|       |d d }g }|D ]@  }|j                  |j                  j                  d       d|j                  dz   d       B d	|iS w)
NlinenozTOP STATS: %s2   r
   )limitz: i   z KiBtop_50_memory_usage)	tracemalloctake_snapshot
statisticsr   debugappend	tracebackformatsize)snapshot	top_statstop_50resultstats        [/var/www/openai/venv/lib/python3.12/site-packages/litellm/proxy/common_utils/debug_utils.pymemory_usager      s      ,,.''1	""?I> 3BDMMT^^222<=R		D@P?QQUVW  &v..s   BBz/memory-usage-in-mem-cachec                  &  K   ddl m} m}m} | d}nSt	        | j
                  j                  j                        t	        | j
                  j                  j                        z   }t	        |j                  j                        t	        |j                  j                        z   }t	        |j                  j                  j                  j                        t	        |j                  j                  j                  j                        z   }|||dS w)j
    1. user_api_key_cache
    2. router_cache
    3. proxy_logging_cache
    4. internal_usage_cache
    r   
llm_routerproxy_logging_objuser_api_key_cache)num_items_in_user_api_key_cachenum_items_in_llm_router_cache$num_items_in_proxy_logging_obj_cache)litellm.proxy.proxy_serverr#   r$   r%   lencachein_memory_cache
cache_dictttl_dictinternal_usage_cache
dual_cache)r#   r$   r%   r'   r&   r(   s         r   memory_usage_in_mem_cacher1   /   s       ()%(+,,77)

  0099:);% '***55'..778'9# ,/..99IITT,22==MMVVW,X(
 ,K)F0T s   DDz /memory-usage-in-mem-cache-itemsc                    K   ddl m} m}m} | i }i }n@| j                  j
                  j                  }| j                  j
                  j                  }|j
                  j                  |j
                  j                  |||j                  j                  j
                  j                  |j                  j                  j
                  j                  dS w)r!   r   r"   )r%   user_api_key_ttlllm_router_cachellm_router_ttlproxy_logging_obj_cacheproxy_logging_obj_ttl)
r)   r#   r$   r%   r+   r,   r-   r.   r/   r0   )r#   r$   r%   llm_router_in_memory_cache_dictllm_router_in_memory_ttl_dicts        r   memory_usage_in_mem_cache_itemsr:   T   s       *,'(*%*4*:*:*J*J*U*U'(2(8(8(H(H(Q(Q% 1@@KK.>>GG;7#4#I#I#T#T#d#d#o#o!2!G!G!R!R!b!b!k!k s   CCz/otel-spansc                    K   ddl m}  | g i d dS | j                  }t        |d      r|j	                         }ng }t        d|       d }d}i }|D ]j  }|j                  |j                  j                  }||vrg ||<   ||   j                  |j                         |j                  |kD  s]|}|j                  }l |D cg c]  }|j                   }}|||dS c c}w w)Nr   )open_telemetry_logger)
otel_spansspans_grouped_by_parentmost_recent_parentget_finished_spanszSpans: i@B )r)   r<   OTEL_EXPORTERhasattrr@   printparenttrace_idr   name
start_time)	r<   otel_exporterrecorded_spansr?   most_recent_start_timer>   spanparent_trace_id
span_namess	            r   get_otel_spansrN   t   s    @$')"&
 	
 *77M}23&99;	)^$$ ;;""kk22O&==;='8#O4;;DIIF !77%4")-&  )77$))J7 #:0  8s   AC! AC!-C!CC!c                     	 t        d      } | y t        j                  j                  |       ry t	        j
                  |       }t        |t              sy |j                  dd       }|j                  dd       }|du rcdd l	}ddl
m}m}m} |j                  |j                         |j                  |j                          |j                  |j                         |du rddd l	}ddl
m}m}m} |j                  |j                          |j                  |j                           |j                  |j                          y |du r|du rt        j"                  j                  d	d
      }||j%                         dk(  rFdd l	}ddl
m}m} |j                  |j                          |j                  |j                         y |j%                         dk(  rFdd l	}ddl
m}m} |j                  |j                           |j                  |j                          y y y y y # t&        $ r+}	dd l	}|j)                  dt+        |	              Y d }	~	y d }	~	ww xY w)NWORKER_CONFIGr   detailed_debugTr   )verbose_loggerr   verbose_router_logger)levelFLITELLM_LOG INFO)r   rS   DEBUGz Failed to init verbose loggers: )r   ospathisfilejsonloads
isinstancedictgetlogginglitellm._loggingrR   r   rS   setLevelrW   rX   environupper	Exceptionwarningstr)
worker_config	_settingsr   rQ   ra   rR   r   rS   litellm_log_settinges
             r   init_verbose_loggersrm      s6   QE&7 77>>-(JJ}-	)T*gt,"'7>D=  ##',,#7!**ll +  * ))=T!  ##'--#8!**mm +  * ))mm e^% 7"$**.."C".&,,.&8" *22%ll 3  2(11%ll )..0G;"
 *22%mm 3  2(11%mm <# / !8^D  E:3q6(CDDEs6   H) H) %H) C2H) 	BH) AH) )	I2!II)r\   rY   r   fastapir   litellmr   rb   r   routerrd   r`   lowerobjgraphrC   show_growthshow_most_common_typesget_leaking_objectsrootsImportErrorstartr   r1   r:   rN   rm        r   <module>r{      sa    	   " 1	::>>#W-335?
!"%&'''),,,.#$'''6 KbZZ5Z9/ :/ (EB! C!H .%H I> MU3' 4'VREQ  
N
 	

s   A"D0 0D>