
    ^h              	           S SK JrJrJrJr  S SKJrJr  S SKr\(       a	  S SK	J
r  \rO\rSSSSS	S
SSS.r " S S\5      rS\S\\   S\\   S\S   4S jrg)    )TYPE_CHECKINGAnyLiteralOptional)HTTPExceptionstatusN)Routerz/chat/completionsz/completionsz/embeddingsz/image/generationsz/audio/speechz/audio/transcriptionsz/moderationsz/rerank)acompletionatext_completion
aembeddingaimage_generationaspeechatranscriptionamoderationarerankc                   4   ^  \ rS rSrS\S\4U 4S jjrSrU =r$ )ProxyModelNotFoundError   route
model_namec                 R   > SU SU S30n[         TU ]  [        R                  US9  g )Nerrorz%: Invalid model name passed in model=z:. Call `/v1/models` to view available models for your key.)status_codedetail)super__init__r   HTTP_400_BAD_REQUEST)selfr   r   r   	__class__s       Y/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/route_llm_request.pyr    ProxyModelNotFoundError.__init__   s?    wCJ<  PJ  K
 	V%@%@P     )__name__
__module____qualname____firstlineno__strr   __static_attributes____classcell__)r   s   @r    r   r      s    Qc Qs Q Qr"   r   data
llm_router
user_model
route_type)	r
   r   r   r   r   r   r   r   
_arealtimec                 2  #    Ub  UR                   O/ nSU ;   d  SU ;   a  [        [        U 5      " S0 U D6$ SU ;   a9  U R                  S5      n[        R                  " S0 UD6n[        Xc 5      " S0 U D6$ US:X  a  U R                  SS5      b  SU R                  SS5      ;   a}  Ubz  U R                  SS	5      (       a  UR                  " S0 U D6$ U R                  S5      R                  S5       Vs/ s H  owR                  5       PM     nnUR                  " SS
U0U D6$ UGb#  U S   U;   d  U S   UR                  5       ;   a  [        X 5      " S0 U D6$ UR                  b%  U S   UR                  ;   a  [        X 5      " S0 U D6$ U S   UR                  ;   a  [        X 5      " S0 U DSS0D6$ U S   U;  a  UR                  R                  (       a  [        [        U 5      " S0 U D6$ UR                  c#  [!        UR"                  R$                  5      S:  a  [        X 5      " S0 U D6$ US:X  a  [        X 5      " S0 U D6$ OUb  [        [        U 5      " S0 U D6$ [&        R                  X35      n	[)        U	U R                  SS5      S9es  snf 7f)z%
Common helper to route the request

api_keyapi_baseuser_configr
   model ,fastest_responseFmodelsspecific_deploymentTr   r   )r   r   r#   )model_namesgetattrlitellmpopr	   get"abatch_completion_fastest_responsesplitstripabatch_completionget_model_idsmodel_group_aliasdeployment_namesrouter_general_settingspass_through_all_modelsdefault_deploymentlenpattern_routerpatternsROUTE_ENDPOINT_MAPPINGr   )
r+   r,   r-   r.   router_model_namesrouter_configuser_routerr4   r8   
route_names
             r    route_requestrQ   #   s    * 4>3I//rDJ$.w:,08488	$	/nn5}5{l4<t<< 	m#HHWb!-488GR(("88&..@@H4HH15'1B1H1H1MN1Mkkm1MFN//FvFFF		M//G}
 8 8 :::7?$?? ((4W!=!==:7?$??']j999:7 ,0  ']"4411IIw:,8@4@@--9z0099:Q>z\;CdCC},z\;CdCC		w:,08488 (++JCJ
!88GR( K Os   C1J3JFJ)typingr   r   r   r   fastapir   r   r<   litellm.routerr	   _RouterLitellmRouterrL   r   dictr(   rQ   r#   r"   r    <module>rX      s    8 8 ) 0MM '&--!	 Qm QO
O'O O 	
	Or"   