
    Cj                     P   % S SK r S SKJrJrJrJr  S SKrS SKrS SKJ	r	   " S S\
\ R                  5      r " S S\
\ R                  5      r\" S \ 5       5      r\" S	 \ 5       5      rS
\S\\
   4S jrS
\S\\
   4S jrSq\\R(                     \S'   S\R(                  4S jr " S S\R.                  5      r " S S\R0                  5      r " S S\R2                  5      r " S S\5      r " S S\R6                  5      r " S S\R8                  5      r " S S\R<                  5      r " S S\R>                  5      r " S  S!\5      r  " S" S#\5      r! " S$ S%\5      r" " S& S'\RF                  5      r$ " S( S)\RF                  5      r% " S* S+\RL                  5      r& " S, S-\RN                  5      r' " S. S/\RP                  5      r( " S0 S1\RR                  5      r) " S2 S3\)5      r* " S4 S5\RV                  5      r+ " S6 S7\5      r,\\\\\,\\\\ \!\"\&\$\%\'\(\)\+\&\*/r- " S8 S9\.5      r/ " S: S;\R2                  5      r0 " S< S=\RN                  5      r1 " S> S?\5      r2 " S@ SA\.5      r3 " SB SC\.5      r4 " SD SE\$5      r5 " SF SG\.5      r6 " SH SI\.5      r7 " SJ SK\.5      r8g)L    N)AnyDictOptionalUnion)LiteLLMCommonStringsc                   .    \ rS rSrSrSr Sr Sr SrSr	g)	RateLimitErrorCategory   a@  
Category of a rate limit error, allowing callers to distinguish where the rate
limit originated. Exposed on every :class:`RateLimitError` instance via the
``category`` attribute.

Use these values to switch on the rate limit source, e.g.::

    try:
        ...
    except litellm.RateLimitError as e:
        if e.category == RateLimitErrorCategory.LITELLM_RATE_LIMIT:
            ...  # litellm's own limiter (key/team/user/model RPM/TPM/budget)
        elif e.category == RateLimitErrorCategory.VENDOR_RATE_LIMIT:
            ...  # the upstream LLM provider returned 429
vendor_rate_limitvendor_batch_rate_limitlitellm_rate_limitlitellm_batch_rate_limit N)
__name__
__module____qualname____firstlineno____doc__VENDOR_RATE_LIMITVENDOR_BATCH_RATE_LIMITLITELLM_RATE_LIMITLITELLM_BATCH_RATE_LIMIT__static_attributes__r       d/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/litellm/exceptions.pyr	   r	      s-      ,U7W-x9pr   r	   c                   4    \ rS rSrSrSr Sr Sr Sr Sr	Sr
g	)
RateLimitType3   u  
The dimension that was exceeded when a rate-limit error fired.

This is orthogonal to :class:`RateLimitErrorCategory` — *category* tells
callers **who** rate-limited the request (the upstream vendor vs. one of
litellm's own limiters), while *type* tells them **which limit dimension**
was exceeded (an RPM ceiling, a TPM ceiling, a max-parallel-requests
ceiling, a budget cap, or a max-iterations cap).

Surfaced both on every :class:`RateLimitError` instance via the
``rate_limit_type`` attribute and on the structured
``StandardLoggingPayload.error_information.error_rate_limit_type`` field
so custom callbacks / metrics consumers can split rate-limit failures by
cause without parsing free-text error messages.
requeststokensconcurrent_requestsbudgetmax_iterationsr   N)r   r   r   r   r   REQUESTSTOKENSCONCURRENT_REQUESTSBUDGETMAX_ITERATIONSr   r   r   r   r   r   3   s2      HLFH/LFE%NEr   r   c              #   8   #    U  H  oR                   v   M     g 7fNvalue).0cs     r   	<genexpr>r/   T   s     'P9OA9O   c              #   8   #    U  H  oR                   v   M     g 7fr*   r+   )r-   ts     r   r/   r/   U   s     #C]GG]r0   r,   returnc                     [        U [        5      (       a  U R                  $ [        U [        5      (       a  U [        ;   a  U $ g)uH  Return ``value`` only if it matches a known :class:`RateLimitErrorCategory`.

Used at duck-typed read sites (StandardLoggingPayload extraction, Prometheus
labels) to reject `.category` strings set by unrelated third-party exceptions
— otherwise those would leak into custom-callback payloads and Prometheus
label cardinality.
N)
isinstancer	   r,   str_RATE_LIMIT_CATEGORY_VALUESr+   s    r   validate_rate_limit_categoryr8   X   s9     %/00{{%%+F"Fr   c                     [        U [        5      (       a  U R                  $ [        U [        5      (       a  U [        ;   a  U $ g)zReturn ``value`` only if it matches a known :class:`RateLimitType`.

See :func:`validate_rate_limit_category` for the rationale.
N)r5   r   r,   r6   _RATE_LIMIT_TYPE_VALUESr+   s    r   validate_rate_limit_typer;   g   s8    
 %''{{%%+B"Br   _MINIMAL_ERROR_RESPONSEc                  l    [         c(  [        R                  " S[        R                  " SSS9S9q [         $ )z;Get a cached minimal httpx.Response object for error cases.  GEThttps://litellm.aimethodurlstatus_coderequest)r<   httpxResponseRequestr   r   r   _get_minimal_error_responserJ   v   s3     &"'..MM4HI#
 #"r   c            
          ^  \ rS rSr    S
S\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )AuthenticationError   responselitellm_debug_infomax_retriesnum_retriesc                 B  > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        U=(       d2    [        R                  " U R                   [        R                  " SSS9S9U l        [        TU ]5  U R                  U R                  S S9  g )Ni  zlitellm.AuthenticationError: {}r?   r@   rA   rD   rN   body)rE   formatmessagellm_providermodelrO   rP   rQ   rG   rH   rI   rN   super__init__	selfrV   rW   rX   rN   rO   rP   rQ   	__class__s	           r   rZ   AuthenticationError.__init__   s     8??H(
"4&&  
ENN((MM"6%
 	LL4==t 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ N LiteLLM Retried:  times, LiteLLM Max Retries: rV   rQ   rP   r\   _messages     r   __str__AuthenticationError.__str__   V    <<,T-=-=,>fEEH1$2B2B1CDDHr   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   __repr__AuthenticationError.__repr__   ri   r   rO   rW   rP   rV   rX   rQ   rN   rE   NNNNr   r   r   r   r   rG   rH   r6   intrZ   rg   rk   r   __classcell__r]   s   @r   rL   rL      g     .2,0%)%)

 5>>*
 %SM
 c]
 c]
 
6 r   rL   c            
          ^  \ rS rSr    S
S\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )NotFoundError   rN   rO   rP   rQ   c                 B  > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        U=(       d2    [        R                  " U R                   [        R                  " SSS9S9U l        [        TU ]5  U R                  U R                  S S9  g )Ni  zlitellm.NotFoundError: {}r?   r@   rA   rD   rS   )rE   rU   rV   rX   rW   rO   rP   rQ   rG   rH   rI   rN   rY   rZ   	r\   rV   rX   rW   rN   rO   rP   rQ   r]   s	           r   rZ   NotFoundError.__init__   s     299'B
("4&&  
ENN((MM"6%
 	LL4==t 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   NotFoundError.__str__   ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   NotFoundError.__repr__   ri   r   rm   rn   ro   rr   s   @r   ru   ru      rs   r   ru   c                      ^  \ rS rSr     SS\\R                     S\\   S\\   S\\   S\\	   4
U 4S jjjr
S rS	 rS
rU =r$ )BadRequestError   rN   rO   rP   rQ   rT   c	                 p  > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        UbE  [        U[        R                  5      (       a&  [        US5      (       a  [        USS 5      b  X@l        O[        5       U l        [        T	U ]A  U R                  U R                  US9  g )Nr>   zlitellm.BadRequestError: {}_requestrS   )rE   rU   rV   rX   rW   rO   rP   rQ   r5   rG   rH   hasattrgetattrrN   rJ   rY   rZ   
r\   rV   rX   rW   rN   rO   rP   rQ   rT   r]   s
            r   rZ   BadRequestError.__init__   s     4;;GD
("4&&  8U^^44*--*d3?$M79DMLL4==t 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   BadRequestError.__str__   ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   BadRequestError.__repr__  ri   r   rm   NNNNN)r   r   r   r   r   rG   rH   r6   rp   dictrZ   rg   rk   r   rq   rr   s   @r   r   r      sy     .2,0%)%)#

 5>>*
 %SM
 c]
 c]
 tn
 
B r   r   c                      ^  \ rS rSr       S	S\\R                     S\\   S\\   S\\   S\\	   4
U 4S jjjr
SrU =r$ )
ImageFetchErrori  rN   rO   rP   rQ   rT   c	                 .   > [         T	U ]  UUUUUUUUS9  g )N)rV   rX   rW   rN   rO   rP   rQ   rT   )rY   rZ   r   s
            r   rZ   ImageFetchError.__init__  s/     	%1## 	 		
r   r   )NNNNNNN)r   r   r   r   r   rG   rH   r6   rp   r   rZ   r   rq   rr   s   @r   r   r     so     -1,0%)%)#

 5>>*
 %SM
 c]
 c]
 tn
 
r   r   c            
       x   ^  \ rS rSr   S
S\R
                  S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )UnprocessableEntityErrori'  rN   rO   rP   rQ   c                    > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        [        TU ]%  U R                  US S9  g )Ni  z$litellm.UnprocessableEntityError: {}rS   )
rE   rU   rV   rX   rW   rO   rP   rQ   rY   rZ   rx   s	           r   rZ   !UnprocessableEntityError.__init__(  sY     =DDWM
("4&&LL8$ 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg    UnprocessableEntityError.__str__=  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   !UnprocessableEntityError.__repr__E  ri   r   rO   rW   rP   rV   rX   rQ   rE   NNNr   r   r   r   rG   rH   r   r6   rp   rZ   rg   rk   r   rq   rr   s   @r   r   r   '  _     -1%)%)

 ..
 %SM
 c]
 c]
 
* r   r   c                   x   ^  \ rS rSr     SS\\   S\\   S\\   S\\   S\\   4
U 4S jjjrS r	S	 r
S
rU =r$ )TimeoutiN  rO   rP   rQ   headersexception_status_codec	                    > [         R                  " SSS9n	[        T
U ]  U	S9  U=(       d    SU l        SR                  U5      U l        X l        X0l        X@l	        XPl
        X`l        Xpl        g )NPOSThttps://api.openai.com/v1rA   )rF   i  zlitellm.Timeout: {})rG   rI   rY   rZ   rE   rU   rV   rX   rW   rO   rP   rQ   r   )r\   rV   rX   rW   rO   rP   rQ   r   r   rF   r]   s             r   rZ   Timeout.__init__O  ss     --+
 	 	 	
 17C,33G<
("4&&r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   Timeout.__str__k  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   Timeout.__repr__s  ri   r   )r   rO   rW   rP   rV   rX   rQ   rE   r   )r   r   r   r   r   r6   rp   r   rZ   rg   rk   r   rq   rr   s   @r   r   r   N  ss     -1%)%)"&/3
 %SM c] c] $  (} 8 r   r   c            
       x   ^  \ rS rSr   S
S\R
                  S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )PermissionDeniedErrori|  rN   rO   rP   rQ   c                    > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        [        TU ]%  U R                  US S9  g )Ni  z!litellm.PermissionDeniedError: {}rS   )
rE   rU   rV   rW   rX   rO   rP   rQ   rY   rZ   r[   s	           r   rZ   PermissionDeniedError.__init__}  sY     :AA'J(
"4&&LL8$ 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   PermissionDeniedError.__str__  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   PermissionDeniedError.__repr__  ri   r   r   r   r   rr   s   @r   r   r   |  r   r   r   c                      ^  \ rS rSrSrSSSS\R                  SSS4S\\R                     S\\
   S\\   S\\   S\\
\4   S	\\\
\4      S
\\\
\
4      S\4U 4S jjjrS rS rSrU =r$ )RateLimitErrori  u  
Unified rate-limit error.

Every rate-limit condition surfaced by litellm — whether it originated from
an upstream LLM provider, a vendor batch endpoint, or one of litellm's own
proxy-side limiters (parallel-requests, dynamic-rate, batch-rate, budget,
max-iterations, etc.) — is raised as an instance of this class.

The :attr:`category` attribute lets callers distinguish the source. See
:class:`RateLimitErrorCategory` for the available values.
NrN   rO   rP   rQ   categoryrate_limit_typer   detailc           	        > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        [        U[        5      (       a  UR                  OUU l        [        U	[        5      (       a  U	R                  OU	U l        Ub  [        USS 5      OS nU
(       a/  U
R                  5        VVs0 s H  u  pU[!        U5      _M     snnOS U l        Ub  UOU R                  U l        [&        R(                  " SU[&        R*                  " SSS9S9U l        [.        TU ]a  U R                  U R,                  S S9  S	U l        S
U l        g s  snnf )N  zlitellm.RateLimitError: {}r   r   $ https://cloud.google.com/vertex-ai/rA   rE   r   rF   rS   429throttling_error)rE   rU   rV   rW   rX   rO   rP   rQ   r5   r	   r,   r   r   r   r   itemsr6   r   r   rG   rH   rI   rN   rY   rZ   codetype)r\   rV   rW   rX   rN   rO   rP   rQ   r   r   r   r   _response_headerskvr]   s                  r   rZ   RateLimitError.__init__  s<     3::7C(
"4&&(3IJJHNNPX 	 /=99 !!  	& 3;2FGHi.D 	 8?7==?3?41QAY?3D 	
 !' 2f%MM:
 	LL4==t 	 	
 	&	# 4s   9Ec                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   RateLimitError.__str__  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   RateLimitError.__repr__  ri   r   )r   r   r   r   rO   rW   rP   rV   rX   rQ   r   rN   rE   r   )r   r   r   r   r   r	   r   r   rG   rH   r6   rp   r   r   r   r   rZ   rg   rk   r   rq   rr   s   @r   r   r     s    
" .2,0%)%)"44?C,0D'
 5>>*D' %SMD' c]D' c]D' 334D' "%](:";<D' $sCx.)D' D' D'L r   r   c                   h   ^  \ rS rSr  SS\\R                     S\\   4U 4S jjjrS r	S r
SrU =r$ )	ContextWindowExceededErrori  rN   rO   c                    > SU l         X l        X0l        XPl        [        TU ]  UU R                  U R                  UU R                  S9  SR                  U R                  5      U l        g )Nr>   rV   rX   rW   rN   rO   z&litellm.ContextWindowExceededError: {})rE   rX   rW   rO   rY   rZ   rU   rV   )r\   rV   rX   rW   rN   rO   r]   s         r   rZ   #ContextWindowExceededError.__init__	  sh     
("4****#66 	 	
 @FFt||Tr   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   "ContextWindowExceededError.__str__   ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   #ContextWindowExceededError.__repr__(  ri   r   )rO   rW   rV   rX   rE   NN)r   r   r   r   r   rG   rH   r6   rZ   rg   rk   r   rq   rr   s   @r   r   r     sI     .2,0U
 5>>*U %SMU U. r   r   c                   L   ^  \ rS rSr SS\S\\   4U 4S jjjrS rS r	Sr
U =r$ )	RejectedRequestErrori2  request_datarO   c                 6  > SU l         SR                  U5      U l        X l        X0l        XPl        X@l        [        R                  " SSS9n[        R                  " SUS9n[        TU ]-  U R                  U R                  U R                  UU R
                  S9  g )Nr>   z litellm.RejectedRequestError: {}r   r   rA   rD   r   )rE   rU   rV   rX   rW   rO   r   rG   rI   rH   rY   rZ   )	r\   rV   rX   rW   r   rO   rF   rN   r]   s	           r   rZ   RejectedRequestError.__init__3  s     9@@I
("4(--v3NO>>c7CLL****#66 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   RejectedRequestError.__str__K  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   RejectedRequestError.__repr__S  ri   r   )rO   rW   rV   rX   r   rE   r*   )r   r   r   r   r   r   r6   rZ   rg   rk   r   rq   rr   s   @r   r   r   2  s9     -1

 
 %SM
 
0 r   r   c            
          ^  \ rS rSr    SS\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	\4S
 jrSrU =r$ )ContentPolicyViolationErrori\  rN   rO   provider_specific_fieldsrT   c           	         > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        [        TU ]!  U R                  U R                  U R                  UU R
                  US9  g )Nr>   z'litellm.ContentPolicyViolationError: {})rV   rX   rW   rN   rO   rT   )	rE   rU   rV   rX   rW   rO   r   rY   rZ   )	r\   rV   rX   rW   rN   rO   r   rT   r]   s	           r   rZ   $ContentPolicyViolationError.__init__^  sn     @GGP
("4(@%LL****#66 	 	
r   c                 "    U R                  5       $ r*   _transform_error_to_stringr\   s    r   rg   #ContentPolicyViolationError.__str__w      ..00r   c                 "    U R                  5       $ r*   r   r   s    r   rk   $ContentPolicyViolationError.__repr__z  r   r   r3   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ )z!
Transform the error to a string
ra   rb   rc   rd   re   s     r   r   6ContentPolicyViolationError._transform_error_to_string}  sX     <<,T-=-=,>fEEH1$2B2B1CDDHr   )rO   rW   rV   rX   r   rE   rn   )r   r   r   r   r   rG   rH   r6   r   rZ   rg   rk   r   r   rq   rr   s   @r   r   r   \  ss     .2,037#

 5>>*
 %SM
 #+4.
 tn
 
211	C 	 	r   r   c            
          ^  \ rS rSr    S
S\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )ServiceUnavailableErrori  rN   rO   rP   rQ   c           	      V  > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        Ub  [        USS 5      OS n[        R                  " U R                   U[        R                  " SSS9S9U l        [        T	U ]9  U R                  U R                  S S9  g )	N  z#litellm.ServiceUnavailableError: {}r   r   r   rA   r   rS   rE   rU   rV   rW   rX   rO   rP   rQ   r   rG   rH   rI   rN   rY   rZ   
r\   rV   rW   rX   rN   rO   rP   rQ   r   r]   s
            r   rZ    ServiceUnavailableError.__init__  s     <CCGL(
"4&&2:2FGHi.D 	 ((%MM:
 	LL4==t 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   ServiceUnavailableError.__str__  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk    ServiceUnavailableError.__repr__  ri   r   rm   rn   ro   rr   s   @r   r   r     h     .2,0%)%)

 5>>*
 %SM
 c]
 c]
 
@ r   r   c            
          ^  \ rS rSr    S
S\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )BadGatewayErrori  rN   rO   rP   rQ   c           	      V  > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        Ub  [        USS 5      OS n[        R                  " U R                   U[        R                  " SSS9S9U l        [        T	U ]9  U R                  U R                  S S9  g )	Ni  zlitellm.BadGatewayError: {}r   r   r   rA   r   rS   r   r   s
            r   rZ   BadGatewayError.__init__  s     4;;GD(
"4&&2:2FGHi.D 	 ((%MM:
 	LL4==t 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   BadGatewayError.__str__  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   BadGatewayError.__repr__  ri   r   rm   rn   ro   rr   s   @r   r   r     r   r   r   c            
          ^  \ rS rSr    S
S\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )InternalServerErrori  rN   rO   rP   rQ   c           	      V  > SU l         SR                  U5      U l        X l        X0l        XPl        X`l        Xpl        Ub  [        USS 5      OS n[        R                  " U R                   U[        R                  " SSS9S9U l        [        T	U ]9  U R                  U R                  S S9  g )	N  zlitellm.InternalServerError: {}r   r   r   rA   r   rS   r   r   s
            r   rZ   InternalServerError.__init__  s     8??H(
"4&&2:2FGHi.D 	 ((%MM:
 	LL4==t 	 	
r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   InternalServerError.__str__  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   InternalServerError.__repr__  ri   r   rm   rn   ro   rr   s   @r   r   r     r   r   r   c                      ^  \ rS rSr    SS\S\\R                     S\\   S\\   S\\   4
U 4S jjjr	S r
S	 rS
rU =r$ )APIErrori   rE   rF   rO   rP   rQ   c	                    > Xl         SR                  U5      U l        X0l        X@l        X`l        Xpl        Xl        Uc  [        R                  " SSS9n[        T	U ]-  U R                  US S9  g )Nzlitellm.APIError: {}r   r   rA   rF   rT   rE   rU   rV   rW   rX   rO   rP   rQ   rG   rI   rY   rZ   
r\   rE   rV   rW   rX   rF   rO   rP   rQ   r]   s
            r   rZ   APIError.__init__!  sh     '-44W=(
"4&&?mm67RSGwTBr   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   APIError.__str__7  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   APIError.__repr__?  ri   r   r   rn   )r   r   r   r   rp   r   rG   rI   r6   rZ   rg   rk   r   rq   rr   s   @r   r  r     sv     ,0,0%)%)CC %--(C %SMC c]C c]C C, r   r  c            
          ^  \ rS rSr    S
S\\R                     S\\   S\\   S\\   4U 4S jjjr	S r
S rS	rU =r$ )APIConnectionErroriI  rF   rO   rP   rQ   c                    > SR                  U5      U l        X l        X0l        SU l        XPl        [        R                  " SSS9U l        X`l	        Xpl
        [        TU ]1  U R                  U R                  S9  g )Nzlitellm.APIConnectionError: {}r   r   r   rA   )rV   rF   )rU   rV   rW   rX   rE   rO   rG   rI   rF   rP   rQ   rY   rZ   )	r\   rV   rW   rX   rF   rO   rP   rQ   r]   s	           r   rZ   APIConnectionError.__init__J  si     8>>wG(
"4}}F8ST&&t||Dr   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   APIConnectionError.__str__^  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   APIConnectionError.__repr__f  ri   r   )rO   rW   rP   rV   rX   rQ   rF   rE   rn   )r   r   r   r   r   rG   rI   r6   rp   rZ   rg   rk   r   rq   rr   s   @r   r  r  I  sm     ,0,0%)%)E
 %--(E %SME c]E c]E E( r   r  c                   `   ^  \ rS rSr   S	S\\   S\\   S\\   4U 4S jjjrS rS r	Sr
U =r$ )
APIResponseValidationErrorip  rO   rP   rQ   c                    > SR                  U5      U l        X l        X0l        [        R
                  " SSS9n[        R                  " SUS9nX@l        XPl        X`l	        [        T	U ]-  US US9  g )Nz&litellm.APIResponseValidationError: {}r   r   rA   r   rD   )rN   rT   rV   )rU   rV   rW   rX   rG   rI   rH   rO   rP   rQ   rY   rZ   )
r\   rV   rW   rX   rO   rP   rQ   rF   rN   r]   s
            r   rZ   #APIResponseValidationError.__init__q  sj     @FFwO(
--v3NO>>c7C"4&&(wGr   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rg   "APIResponseValidationError.__str__  ri   r   c                     U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU$ r`   rd   re   s     r   rk   #APIResponseValidationError.__repr__  ri   r   )rO   rW   rP   rV   rX   rQ   r   )r   r   r   r   r   r6   rp   rZ   rg   rk   r   rq   rr   s   @r   r  r  p  sV     -1%)%)H
 %SMH c]H c]H H& r   r  c            
       @   ^  \ rS rSrS\S\S\S\SS4
U 4S jjrS	rU =r$ )
JSONSchemaValidationErrori  rX   rW   raw_responseschemar3   Nc                 v   > X0l         X@l        Xl        SR                  XU5      nXPl        [
        TU ]  XUS9  g )Nzlitellm.JSONSchemaValidationError: model={}, returned an invalid response={}, for schema={}.
Access raw response with `e.raw_response`)rX   rV   rW   )r#  r$  rX   rU   rV   rY   rZ   )r\   rX   rW   r#  r$  rV   r]   s         r   rZ   "JSONSchemaValidationError.__init__  sL     )
 \  c  c
 uLQr   )rV   rX   r#  r$  )r   r   r   r   r6   rZ   r   rq   rr   s   @r   r"  r"    s<    
R
R(+
R;>
RHK
R	
R 
Rr   r"  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )OpenAIErrori  c                 0   > [         TU ]  5         SU l        g )Nopenai)rY   rZ   rW   )r\   original_exceptionr]   s     r   rZ   OpenAIError.__init__  s    $r   )rW   r*   r   r   r   r   rZ   r   rq   rr   s   @r   r(  r(    s    % %r   r(  c                       \ rS rSr       SS\\   S\\   S\S\\R                     S\\   S\\   S	\\   4S
 jjr	Sr
g)UnsupportedParamsErrori  NrW   rX   rE   rN   rO   rP   rQ   c	                     SU l         SR                  U5      U l        X0l        X l        X`l        U=(       d2    [        R                  " U R                   [        R                  " SSS9S9nXpl	        Xl
        g )Nr>   z"litellm.UnsupportedParamsError: {}r?   r@   rA   rD   )rE   rU   rV   rX   rW   rO   rG   rH   rI   rP   rQ   )	r\   rV   rW   rX   rE   rN   rO   rP   rQ   s	            r   rZ   UnsupportedParamsError.__init__  sm     ;BB7K
("4 
u~~((MM"6 
 '&r   r   )NNr>   NNNN)r   r   r   r   r   r6   rp   rG   rH   rZ   r   r   r   r   r/  r/    s     '+#-1,0%)%)' sm' }	'
 ' 5>>*' %SM' c]' c]' 'r   r/  c            
       P   ^  \ rS rSr  SS\S\S\\   S\\   4U 4S jjjrSrU =r	$ )	BudgetExceededErrori  current_cost
max_budgetrV   rW   c                   > Xl         X l        SU l        U=(       d    SU l        [        R
                  R                  U l        [        R                  R                  U l
        U=(       d    SU SU 3nX0l        [        TU ]5  U5        g )Nr    z(Budget has been exceeded! Current cost: z, Max budget: )r4  r5  rE   rW   r	   r   r,   r   r   r'   r   rV   rY   rZ   )r\   r4  r5  rV   rW   r]   s        r   rZ   BudgetExceededError.__init__  s     )$(.B 4FFLL$1$8$8$>$> c9,~V`Uab 	 !r   )r   r4  rW   r5  rV   r   rE   r   )
r   r   r   r   floatr   r6   rZ   r   rq   rr   s   @r   r3  r3    sC    
 "&&*"" " #	"
 sm" "r   r3  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )InvalidRequestErrori  c                    > SU l         Xl        X l        X0l        [        R
                  " S[        R                  " SSS9S9U l        [        TU ]%  U R                  U R                  S S9  g )Nr>   r?   r@   rA   rD   )rV   rN   rT   )
rE   rV   rX   rW   rG   rH   rI   rN   rY   rZ   )r\   rV   rX   rW   r]   s       r   rZ   InvalidRequestError.__init__  sc    
(MM"6
 	LL4==t 	 	
r   )rW   rV   rX   rN   rE   r-  rr   s   @r   r;  r;    s    
 
r   r;  c                   x   ^  \ rS rSr    S	S\S\\R                     S\\   S\\   S\\   4
U 4S jjjr	Sr
U =r$ )
MockExceptioni
  rE   rF   rO   rP   rQ   c	                    > Xl         SR                  U5      U l        X0l        X@l        X`l        Xpl        Xl        Uc  [        R                  " SSS9n[        T	U ]-  U R                  US S9  g )Nzlitellm.MockException: {}r   r   rA   r	  r
  r  s
            r   rZ   MockException.__init__  sh     '299'B(
"4&&?mm67RSGwTBr   r   rn   )r   r   r   r   rp   r   rG   rI   r6   rZ   r   rq   rr   s   @r   r?  r?  
  sg     ,0,0%)%)CC %--(C %SMC c]C c]C Cr   r?  c                   D   ^  \ rS rSrSS\S\\   4U 4S jjjrS rSrU =r	$ )LiteLLMUnknownProvideri#  rX   custom_llm_providerc                    > [         R                  R                  R                  XS9U l        [
        TU ]  U R                  XS S9  g )N)rX   rD  )rX   rW   rN   )r   llm_provider_not_providedr,   rU   rV   rY   rZ   )r\   rX   rD  r]   s      r   rZ   LiteLLMUnknownProvider.__init__$  sJ    +EEKKRR S 
 	LLRV 	 	
r   c                     U R                   $ r*   rV   r   s    r   rg   LiteLLMUnknownProvider.__str__,      ||r   rI  r*   )
r   r   r   r   r6   r   rZ   rg   r   rq   rr   s   @r   rC  rC  #  s)    
c 
 
 
 r   rC  c            	       N   ^  \ rS rSr    SS\\   S\S\S\4U 4S jjjrSr	U =r
$ )	GuardrailRaisedExceptioni0  guardrail_namerV    should_wrap_with_default_messagerE   c                    > SU SU 3nXl         X@l        U(       a  UOUU l        [        TU ]  U R                  5        g )Nz*Guardrail raised an exception, Guardrail: z, Message: )rN  rE   rV   rY   rZ   )r\   rN  rV   rO  rE   default_messager]   s         r   rZ   !GuardrailRaisedException.__init__1  sE     G~FVVabiajk,&*JPW&r   )rN  rV   rE   )Nr7  Tr>   )r   r   r   r   r   r6   boolrp   rZ   r   rq   rr   s   @r   rM  rM  0  sE     )-15' ' ' +/	'
 ' 'r   rM  c                   F   ^  \ rS rSr  SS\S\\   S\4U 4S jjjrSrU =r	$ )BlockedPiiEntityErrori?  entity_typerN  rE   c                 x   > Xl         X l        X0l        SU SU S3U l        [        TU ]  U R                  5        g)z:
Raised when a blocked entity is detected by a guardrail.
zBlocked entity detected: z by Guardrail: z8. This entity is not allowed to be used in this request.N)rV  rN  rE   rV   rY   rZ   )r\   rV  rN  rE   r]   s       r   rZ   BlockedPiiEntityError.__init__@  sG     ',&2;-~N^  _W  X&r   )rV  rN  rV   rE   )Nr>   )
r   r   r   r   r6   r   rp   rZ   r   rq   rr   s   @r   rU  rU  ?  s5     )-	'' !' 	' 'r   rU  c                      ^  \ rS rSr       SS\S\S\S\\   S\\R                     S\\   S\\	   S	\\	   S
\S\
4U 4S jjjrS rS rSrU =r$ )MidStreamFallbackErroriP  rV   rX   rW   r+  rN   rO   rP   rQ   generated_contentis_pre_first_chunkc           
        > [        USS 5      nUb  [        U5      OSU l        SU 3U l        X l        X0l        X@l        X`l        Xpl        Xl	        Xl
        Xl        Uc<  [        R                  " U R                  [        R                  " SSU S3S9S9U l        OXPl        U R                  n[        U R                  S	S 5      =(       d    [        R                  " SSU S3S9nU R                  n[         TU ]E  U R                  UUU R                  U R                  U R                  U R                  S
9  Ub  [        U5      OSU l        Xl        Xl        Xl        U4U l        g )NrE   r   z litellm.MidStreamFallbackError: r   zhttps://z.com/v1/rA   rD   rF   )rV   rW   rX   rN   rO   rP   rQ   )r   rp   rE   rV   rX   rW   r+  rO   rP   rQ   r[  r\  rG   rH   rI   rN   rY   rZ   rF   args)r\   rV   rX   rW   r+  rN   rO   rP   rQ   r[  r\  original_status_saved_response_saved_request_saved_messager]   s                  r   rZ   MidStreamFallbackError.__init__Q  sd    ""4mTJ3B3N3/TW9'C
("4"4&&!2"4 !NN ,,!"<.9DM %M -- 	4@ 
EMM,x@E
  	LL%]]#66(((( 	 	
 4C3N3/TW'%%#%	r   c                 D   U R                   nU R                  (       a  USU R                   S3-  nU R                  (       a  USU R                   3-  nU R                  (       a;  US[	        U R                  5      R
                   S[        U R                  5       3-  nU$ )Nra   rb   rc   z Original exception: z: )rV   rQ   rP   r+  r   r   r6   re   s     r   rg   MidStreamFallbackError.__str__  s    <<,T-=-=,>fEEH1$2B2B1CDDH""/T5L5L0M0V0V/WWYZ]^b^u^uZvYwxxHr   c                 "    U R                  5       $ r*   rg   r   s    r   rk   MidStreamFallbackError.__repr__      ||~r   )r^  r[  r\  rO   rW   rP   rV   rX   rQ   r+  rF   rN   rE   )NNNNNr7  F)r   r   r   r   r6   r   	ExceptionrG   rH   rp   rS  rZ   rg   rk   r   rq   rr   s   @r   rZ  rZ  P  s     37-1,0%)%)!##(<&<& <& 	<&
 %Y/<& 5>>*<& %SM<& c]<& c]<& <& !<& <&| r   rZ  c                   l   ^  \ rS rSrSr  S
S\S\S\\\4   S\\   S\\\\4      4
U 4S jjjr	S	r
U =r$ )ModifyResponseExceptioni  a  
Exception raised when a guardrail wants to modify the response.

This exception carries the synthetic response that should be returned
to the user instead of calling the LLM or instead of the LLM's response.
It should be caught by the proxy and returned with a 200 status code.

This is a base exception that all guardrails can use to replace responses,
allowing violation messages to be returned as successful responses
rather than errors.
rV   rX   r   rN  detection_infoc                 t   > Xl         X l        X0l        X@l        U=(       d    0 U l        [
        TU ]  U5        g r*   )rV   rX   r   rN  rm  rY   rZ   )r\   rV   rX   r   rN  rm  r]   s         r   rZ    ModifyResponseException.__init__  s5     
(,,2!r   )rm  rN  rV   rX   r   r   )r   r   r   r   r   r6   r   r   r   rZ   r   rq   rr   s   @r   rl  rl    sc    
" )-37"" " 38n	"
 !" !c3h0" "r   rl  c                   <   ^  \ rS rSrS\4U 4S jjrS rS rSrU =r	$ )&GuardrailInterventionNormalStringErrori  rV   c                 D   > Xl         [        TU ]	  U R                   5        g r*   )rV   rY   rZ   )r\   rV   r]   s     r   rZ   /GuardrailInterventionNormalStringError.__init__  s    &r   c                     U R                   $ r*   rI  r   s    r   rg   .GuardrailInterventionNormalStringError.__str__  rK  r   c                 "    U R                  5       $ r*   rg  r   s    r   rk   /GuardrailInterventionNormalStringError.__repr__  ri  r   rI  )
r   r   r   r   r6   rZ   rg   rk   r   rq   rr   s   @r   rq  rq    s    ' ' r   rq  c                   p   ^  \ rS rSrSr    SS\S\S\\   S\\\\4      S\\   S\	4U 4S	 jjjr
S
rU =r$ )SensitiveDataRouteExceptioni  a   
Exception raised when a guardrail detects sensitive data and wants to reroute the request.

Instead of blocking the request, this exception signals that the request should be
routed to a different model (typically an on-premise model for data privacy).

The proxy catches this exception and:
1. Reroutes the current request to the specified model
2. When sticky_session_routing is True, stores the routing decision in session
   cache so all subsequent requests in the same session are routed to the same model
route_to_model
session_idrN  rm  rV   sticky_session_routingc                    > Xl         X l        X0l        U=(       d    0 U l        X`l        U=(       d    SU SU 3U l        [        TU ]  U R
                  5        g )NzSensitive data detected by z. Routing to model: )rz  r{  rN  rm  r|  rV   rY   rZ   )r\   rz  r{  rN  rm  rV   r|  r]   s          r   rZ   $SensitiveDataRouteException.__init__  s`     -$,,2&<# b,^,<<PQ_P`a 	 	&r   )rm  rN  rV   rz  r{  r|  )NNNT)r   r   r   r   r   r6   r   r   r   rS  rZ   r   rq   rr   s   @r   ry  ry    so    
  )-37!%'+'' ' !	'
 !c3h0' #' !%' 'r   ry  )9enumtypingr   r   r   r   rG   r*  litellm.types.utilsr   r6   Enumr	   r   	frozensetr7   r:   r8   r;   r<   rH   __annotations__rJ   rL   ru   r   r   r   APITimeoutErrorr   r   r   r   r   r   APIStatusErrorr   r   r   r  r  r  r"  r(  r/  LITELLM_EXCEPTION_TYPESrj  r3  r;  r?  rC  rM  rU  rZ  rl  rq  ry  r   r   r   <module>r     s    - -   4qS$)) q<FC FB ('P9O'PP ##C]#CC   	C 	HSM 	 59 %..1 8#U^^ #*&44 *\*F(( *Z0f,, 0f
o 
0$v>> $N+f$$ +\$F88 $NaV** aJ& &T'? 'T*/ *Z/f33 /d/f++ /d/&44 /f%v %R#22 #N"!B!B "JR : R%&$$ %'_ '8 ) 0") ":
&00 
"CFOO C2
_ 
'y ''I '"J4 JZ"i ":') 'r   