Ë
    uPêj²³  ã                   óJ  — U d dl Z d dlmZmZ d dlZd dlZd dlmZ  G d„ dee j                  «      Z
 G d„ dee j                  «      Z ed„ e
D «       «      Zeed	<    ed
„ eD «       «      Zeed<   dededz  fd„Zdededz  fd„Zdaej&                  dz  ed<   dej&                  fd„Z G d„ dej*                  «      Z G d„ dej,                  «      Z G d„ dej.                  «      Z G d„ de«      Z G d„ dej2                  «      Z G d„ dej4                  «      Z G d„ dej8                  «      Z G d „ d!ej:                  «      Z G d"„ d#e«      Z G d$„ d%e«      Z G d&„ d'e«      Z  G d(„ d)ejB                  «      Z" G d*„ d+ejB                  «      Z# G d,„ d-ejH                  «      Z$ G d.„ d/ejJ                  «      Z% G d0„ d1ejL                  «      Z& G d2„ d3ejN                  «      Z' G d4„ d5e'«      Z( G d6„ d7ejR                  «      Z) G d8„ d9e«      Z*eeeee*eeeeee e$e"e#e%e&e'e)e$e(gZ+eed:<    G d;„ d<e,«      Z- G d=„ d>ej.                  «      Z. G d?„ d@ejJ                  «      Z/ G dA„ dBe«      Z0 G dC„ dDe,«      Z1 G dE„ dFe,«      Z2 G dG„ dHe"«      Z3 G dI„ dJe,«      Z4 G dK„ dLe,«      Z5y)Mé    N)ÚAnyÚFinal)ÚLiteLLMCommonStringsc                   ó&   — e Zd ZdZdZ	 dZ	 dZ	 dZy)ÚRateLimitErrorCategoryap  
    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_limitN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVENDOR_RATE_LIMITÚVENDOR_BATCH_RATE_LIMITÚLITELLM_RATE_LIMITÚLITELLM_BATCH_RATE_LIMIT© ó    úW/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/exceptions.pyr   r      s-   „ ñð  ,ÐØUà7ÐØWà-ÐØxà9ÐØpr   r   c                   ó,   — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZy)ÚRateLimitTypeuý  
    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_iterationsN)	r   r   r   r   ÚREQUESTSÚTOKENSÚCONCURRENT_REQUESTSÚBUDGETÚMAX_ITERATIONSr   r   r   r   r   3   s2   „ ñð  €HØLà€FØHà/ÐØLà€FØEà%€NØEr   r   c              #   ó4   K  — | ]  }|j                   –— Œ y ­w©N©Úvalue)Ú.0Úcs     r   ú	<genexpr>r)   T   s   è ø€ Ò.W¸1¨q¯w­wÑ.Wùó   ‚Ú_RATE_LIMIT_CATEGORY_VALUESc              #   ó4   K  — | ]  }|j                   –— Œ y ­wr$   r%   )r'   Úts     r   r)   r)   U   s   è ø€ Ò*J°q¨1¯7­7Ñ*Jùr*   Ú_RATE_LIMIT_TYPE_VALUESr&   Úreturnc                 óp   — t        | t        «      r| j                  S t        | t        «      r
| t        v r| S y)u\  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&   Ústrr+   r%   s    r   Úvalidate_rate_limit_categoryr3   X   s3   € ô �%Ô/Ô0Ø�{‰{ÐÜ�%œÔ %Ô+FÑ"FØˆØr   c                 óp   — t        | t        «      r| j                  S t        | t        «      r
| t        v r| S y)z‰Return ``value`` only if it matches a known :class:`RateLimitType`.

    See :func:`validate_rate_limit_category` for the rationale.
    N)r1   r   r&   r2   r.   r%   s    r   Úvalidate_rate_limit_typer5   g   s2   € ô
 �%œÔ'Ø�{‰{ÐÜ�%œÔ %Ô+BÑ"BØˆØr   Ú_MINIMAL_ERROR_RESPONSEc                  ór   — t         €,t        j                  dt        j                  dd¬«      ¬«      a t         S )z;Get a cached minimal httpx.Response object for error cases.é�  ÚGETúhttps://litellm.ai©ÚmethodÚurl©Ústatus_codeÚrequest)r6   ÚhttpxÚResponseÚRequestr   r   r   Ú_get_minimal_error_responserD   v   s3   € ô Ð&Ü"'§.¡.ØÜ—M‘M¨Ð4HÔIô#
Ðô #Ð"r   c            
       ór   ‡ — e Zd Z	 	 	 	 d	dej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚAuthenticationErrorNÚresponseÚlitellm_debug_infoÚmax_retriesÚnum_retriesc                 ó8  •— d| _         d|› �| _        || _        || _        || _        || _        || _        |xs6 t        j                  | j                   t        j                  dd¬«      ¬«      | _
        t        ‰| �1  | j                  | j                  d ¬«       y )Ni‘  zlitellm.AuthenticationError: r9   r:   r;   r>   ©rG   Úbody)r?   ÚmessageÚllm_providerÚmodelrH   rI   rJ   rA   rB   rC   rG   ÚsuperÚ__init__©	ÚselfrN   rO   rP   rG   rH   rI   rJ   Ú	__class__s	           €r   rR   zAuthenticationError.__init__‚   s”   ø€ ð ˆÔØ6°w°iÐ@ˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔØ ò 
¤E§N¡NØ×(Ñ(Ü—M‘M¨Ð4HÔIô%
ˆŒô 	‰ÑØ�L‰L 4§=¡=°tð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S ©Nú LiteLLM Retried: ú timesú, LiteLLM Max Retries: ©rN   rJ   rI   ©rT   Ú_messages     r   Ú__str__zAuthenticationError.__str__›   óV   € Ø—<‘<ˆØ×ÒØÐ,¨T×-=Ñ-=Ð,>¸fÐEÑEˆHØ×ÒØÐ1°$×2BÑ2BÐ1CÐDÑDˆHØˆr   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   Ú__repr__zAuthenticationError.__repr__£   r_   r   ©NNNN©r   r   r   rA   rB   r2   ÚintrR   r^   ra   Ú__classcell__©rU   s   @r   rF   rF   �   ó]   ø„ ð +/Ø)-Ø"&Ø"&ñ
ð
 —.‘. 4Ñ'ð
ð   $™Jð
ð ˜4‘Zð
ð ˜4‘Zõ
ò2ör   rF   c            
       ór   ‡ — e Zd Z	 	 	 	 d	dej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚNotFoundErrorNrG   rH   rI   rJ   c                 ó8  •— d| _         d|› �| _        || _        || _        || _        || _        || _        |xs6 t        j                  | j                   t        j                  dd¬«      ¬«      | _
        t        ‰| �1  | j                  | j                  d ¬«       y )Ni”  zlitellm.NotFoundError: r9   r:   r;   r>   rL   )r?   rN   rP   rO   rH   rI   rJ   rA   rB   rC   rG   rQ   rR   ©	rT   rN   rP   rO   rG   rH   rI   rJ   rU   s	           €r   rR   zNotFoundError.__init__®   s”   ø€ ð ˆÔØ0°°	Ð:ˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ&ˆÔØ&ˆÔØ ò 
¤E§N¡NØ×(Ñ(Ü—M‘M¨Ð4HÔIô%
ˆŒô 	‰ÑØ�L‰L 4§=¡=°tð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zNotFoundError.__str__Ç   r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zNotFoundError.__repr__Ï   r_   r   rb   rc   rf   s   @r   ri   ri   ­   rg   r   ri   c                   ó~   ‡ — e Zd Z	 	 	 	 	 d
dej                  dz  dedz  dedz  dedz  dedz  f
ˆ fd„Zd„ Z	d	„ Z
ˆ xZS )ÚBadRequestErrorNrG   rH   rI   rJ   rM   c	                 óR  •— d| _         d|› �| _        || _        || _        || _        || _        || _        |�;t        |t        j                  «      r!t        |d«      rt        |dd «      �|| _        nt        «       | _        t        ‰	| �=  | j                  | j                  |¬«       y )Nr8   zlitellm.BadRequestError: Ú_requestrL   )r?   rN   rP   rO   rH   rI   rJ   r1   rA   rB   ÚhasattrÚgetattrrG   rD   rQ   rR   ©
rT   rN   rP   rO   rG   rH   rI   rJ   rM   rU   s
            €r   rR   zBadRequestError.__init__Ù   s£   ø€ ð ˆÔØ2°7°)Ð<ˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ&ˆÔØ&ˆÔð Ð Ü˜8¤U§^¡^Ô4Ü˜ *Ô-Ü˜ *¨dÓ3Ð?à$ˆD�Mä7Ó9ˆDŒMÜ‰ÑØ�L‰L 4§=¡=°tð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zBadRequestError.__str__ú   r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zBadRequestError.__repr__  r_   r   ©NNNNN)r   r   r   rA   rB   r2   rd   ÚdictrR   r^   ra   re   rf   s   @r   ro   ro   Ø   so   ø„ ð +/Ø)-Ø"&Ø"&Ø ñ
ð
 —.‘. 4Ñ'ð
ð   $™Jð
ð ˜4‘Zð
ð ˜4‘Zð
ð �T‰kõ
òBör   ro   c                   óv   ‡ — e Zd Z	 	 	 	 	 	 	 ddej                  dz  dedz  dedz  dedz  dedz  f
ˆ fd„Zˆ xZ	S )	ÚImageFetchErrorNrG   rH   rI   rJ   rM   c	           
      ó4   •— t         ‰	| �  ||||||||¬«       y )N)rN   rP   rO   rG   rH   rI   rJ   rM   )rQ   rR   rt   s
            €r   rR   zImageFetchError.__init__  s/   ø€ ô 	‰ÑØØØ%ØØ1Ø#Ø#Øð 	õ 		
r   )NNNNNNN)
r   r   r   rA   rB   r2   rd   rx   rR   re   rf   s   @r   rz   rz     so   ø„ ð ØØ*.Ø)-Ø"&Ø"&Ø ñ
ð
 —.‘. 4Ñ'ð
ð   $™Jð
ð ˜4‘Zð
ð ˜4‘Zð
ð �T‰k÷
ñ 
r   rz   c            
       ój   ‡ — e Zd Z	 	 	 d	dej                  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚUnprocessableEntityErrorNrG   rH   rI   rJ   c                 ó¦   •— d| _         d|› �| _        || _        || _        || _        || _        || _        t        ‰| �!  | j                  |d ¬«       y )Ni¦  z"litellm.UnprocessableEntityError: rL   )	r?   rN   rP   rO   rH   rI   rJ   rQ   rR   rk   s	           €r   rR   z!UnprocessableEntityError.__init__$  s_   ø€ ð ˆÔØ;¸G¸9ÐEˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ&ˆÔØ&ˆÔÜ‰ÑØ�L‰L 8°$ð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   z UnprocessableEntityError.__str__9  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   z!UnprocessableEntityError.__repr__A  r_   r   ©NNNrc   rf   s   @r   r}   r}   #  óU   ø„ ð *.Ø"&Ø"&ñ
ð
 —.‘.ð
ð   $™Jð
ð ˜4‘Zð
ð ˜4‘Zõ
ò*ör   r}   c                   ój   ‡ — e Zd Z	 	 	 	 	 d
dedz  dedz  dedz  dedz  dedz  f
ˆ fd„Zd„ Zd	„ Zˆ xZ	S )ÚTimeoutNrH   rI   rJ   ÚheadersÚexception_status_codec	                 óÒ   •— t        j                  dd¬«      }	t        ‰
| �  |	¬«       |xs d| _        d|› �| _        || _        || _        || _        || _	        || _
        || _        y )NÚPOSTúhttps://api.openai.com/v1r;   )r@   i˜  zlitellm.Timeout: )rA   rC   rQ   rR   r?   rN   rP   rO   rH   rI   rJ   r…   )rT   rN   rP   rO   rH   rI   rJ   r…   r†   r@   rU   s             €r   rR   zTimeout.__init__K  st   ø€ ô Ÿ™ØØ+ô
ˆô 	‰Ñ ÐÔ)Ø0Ò7°CˆÔØ*¨7¨)Ð4ˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ&ˆÔØ&ˆÔØˆ�r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zTimeout.__str__e  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zTimeout.__repr__m  r_   r   rw   )
r   r   r   r2   rd   rx   rR   r^   ra   re   rf   s   @r   r„   r„   J  si   ø„ ð *.Ø"&Ø"&Ø#Ø,0ñð
   $™Jðð ˜4‘Zðð ˜4‘Zðð ˜‘ðð  # T™zõò4ör   r„   c            
       ój   ‡ — e Zd Z	 	 	 d	dej                  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚPermissionDeniedErrorNrG   rH   rI   rJ   c                 ó¦   •— d| _         d|› �| _        || _        || _        || _        || _        || _        t        ‰| �!  | j                  |d ¬«       y )Ni“  zlitellm.PermissionDeniedError: rL   )	r?   rN   rO   rP   rH   rI   rJ   rQ   rR   rS   s	           €r   rR   zPermissionDeniedError.__init__w  s_   ø€ ð ˆÔØ8¸¸	ÐBˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔÜ‰ÑØ�L‰L 8°$ð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zPermissionDeniedError.__str__Œ  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zPermissionDeniedError.__repr__”  r_   r   r�   rc   rf   s   @r   r�   r�   v  r‚   r   r�   c                   óÄ   ‡ — e Zd ZdZddddej
                  dddfdej                  dz  dedz  de	dz  de	dz  deez  dee
z  dz  d	eeef   dz  d
efˆ fd„Zd„ Zd„ Zˆ xZS )ÚRateLimitErroruä  
    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.
    NrG   rH   rI   rJ   ÚcategoryÚrate_limit_typer…   Údetailc                 óŠ  •— d| _         d|› �| _        || _        || _        || _        || _        || _        t        |t        «      r|j                  n|| _
        t        |	t        «      r|	j                  n|	| _        |�t        |dd «      nd }|
r-|
j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}nd | _        |�|n| j                  | _        t%        j&                  d|t%        j(                  dd¬«      ¬«      | _        t,        ‰| �]  | j                  | j*                  d ¬«       d	| _        d
| _        y c c}}w )Né­  zlitellm.RateLimitError: r…   rˆ   ú$ https://cloud.google.com/vertex-ai/r;   ©r?   r…   r@   rL   Ú429Úthrottling_error)r?   rN   rO   rP   rH   rI   rJ   r1   r   r&   r“   r   r”   rs   Úitemsr2   r…   r•   rA   rB   rC   rG   rQ   rR   ÚcodeÚtype)rT   rN   rO   rP   rG   rH   rI   rJ   r“   r”   r…   r•   Ú_response_headersÚkÚvrU   s                  €r   rR   zRateLimitError.__init__ª  s2  ø€ ð ˆÔØ1°'°Ð;ˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔÜ*4°XÔ?UÔ*V˜ŸšÐ\dˆŒô
 &0°ÄÔ%OˆO×!Ò!ÐUdð 	Ôð  JRÐI]¤7¨8°YÀÔ#EÐcgÐÙY`ÀWÇ]Á]Ã_×.U¹T¸QÀ¨q´#°a³&©yÔ.UÐfjˆŒð !'Ð 2‘f¸¿¹ˆŒÜŸ™ØØ%Ü—M‘MØØ:ôô
ˆŒô 	‰ÑØ�L‰L 4§=¡=°tð 	ô 	
ð ˆŒ	Ø&ˆ�	ùó! /Vs   Â"D?c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zRateLimitError.__str__æ  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zRateLimitError.__repr__î  r_   r   )r   r   r   r   r   r   rA   rB   r2   rd   r   rx   r   rR   r^   ra   re   rf   s   @r   r’   r’   �  sº   ø„ ñ
ð" +/Ø)-Ø"&Ø"&Ø2H×2ZÑ2ZØ6:Ø)-Øñ:'ð
 —.‘. 4Ñ'ð:'ð   $™Jð:'ð ˜4‘Zð:'ð ˜4‘Zð:'ð Ð.Ñ.ð:'ð ˜}Ñ,¨tÑ3ð:'ð �c˜3�h‘ $Ñ&ð:'ð õ:'òxör   r’   c                   óZ   ‡ — e Zd Z	 	 ddej                  dz  dedz  fˆ fd„Zd„ Zd„ Zˆ xZ	S )ÚContextWindowExceededErrorNrG   rH   c                 óÊ   •— d| _         || _        || _        || _        t        ‰| �  || j                  | j                  || j                  ¬«       d| j                  › �| _        y )Nr8   ©rN   rP   rO   rG   rH   z$litellm.ContextWindowExceededError: )r?   rP   rO   rH   rQ   rR   rN   )rT   rN   rP   rO   rG   rH   rU   s         €r   rR   z#ContextWindowExceededError.__init__ù  si   ø€ ð ˆÔØˆŒ
Ø(ˆÔØ"4ˆÔÜ‰ÑØØ—*‘*Ø×*Ñ*ØØ#×6Ñ6ð 	ô 	
ð >¸d¿l¹l¸^ÐLˆ�r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   z"ContextWindowExceededError.__str__  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   z#ContextWindowExceededError.__repr__  r_   r   )NN)
r   r   r   rA   rB   r2   rR   r^   ra   re   rf   s   @r   r¥   r¥   ø  s>   ø„ ð +/Ø)-ñMð
 —.‘. 4Ñ'ðMð   $™JõMò.ör   r¥   c                   ó>   ‡ — e Zd Z	 ddededz  fˆ fd„Zd„ Zd„ Zˆ xZS )ÚRejectedRequestErrorNÚrequest_datarH   c                 ó4  •— d| _         d|› �| _        || _        || _        || _        || _        t        j                  dd¬«      }t        j                  d|¬«      }t        ‰| �)  | j                  | j                  | j                  || j                  ¬«       y )Nr8   zlitellm.RejectedRequestError: rˆ   r‰   r;   r>   r§   )r?   rN   rP   rO   rH   r¬   rA   rC   rB   rQ   rR   )	rT   rN   rP   rO   r¬   rH   r@   rG   rU   s	           €r   rR   zRejectedRequestError.__init__#  s�   ø€ ð ˆÔØ7¸°yÐAˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ(ˆÔÜŸ™¨fÐ:UÔVˆÜŸ.™.°SÀ'ÔJˆÜ‰ÑØ—L‘LØ—*‘*Ø×*Ñ*ØØ#×6Ñ6ð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zRejectedRequestError.__str__;  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zRejectedRequestError.__repr__C  r_   r   r$   )	r   r   r   rx   r2   rR   r^   ra   re   rf   s   @r   r«   r«   "  s/   ø„ ð *.ñ
ð
 ð
ð   $™Jõ
ò0ör   r«   c            
       ó~   ‡ — e Zd Z	 	 	 	 ddej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	d	efd
„Z
ˆ xZS )ÚContentPolicyViolationErrorNrG   rH   Úprovider_specific_fieldsrM   c                 óÚ   •— d| _         d|› �| _        || _        || _        || _        || _        t        ‰| �  | j                  | j                  | j                  || j                  |¬«       y )Nr8   z%litellm.ContentPolicyViolationError: )rN   rP   rO   rG   rH   rM   )r?   rN   rP   rO   rH   r²   rQ   rR   )	rT   rN   rP   rO   rG   rH   r²   rM   rU   s	           €r   rR   z$ContentPolicyViolationError.__init__N  sr   ø€ ð ˆÔØ>¸w¸iÐHˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ(@ˆÔ%Ü‰ÑØ—L‘LØ—*‘*Ø×*Ñ*ØØ#×6Ñ6Øð 	õ 	
r   c                 ó"   — | j                  «       S r$   ©Ú_transform_error_to_string©rT   s    r   r^   z#ContentPolicyViolationError.__str__g  ó   € Ø×.Ñ.Ó0Ð0r   c                 ó"   — | j                  «       S r$   rµ   r·   s    r   ra   z$ContentPolicyViolationError.__repr__j  r¸   r   r/   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S )z1
        Transform the error to a string
        rX   rY   rZ   r[   r\   s     r   r¶   z6ContentPolicyViolationError._transform_error_to_stringm  sX   € ð —<‘<ˆØ×ÒØÐ,¨T×-=Ñ-=Ð,>¸fÐEÑEˆHØ×ÒØÐ1°$×2BÑ2BÐ1CÐDÑDˆHØˆr   rb   )r   r   r   rA   rB   r2   rx   rR   r^   ra   r¶   re   rf   s   @r   r±   r±   L  si   ø„ ð +/Ø)-Ø04Ø ñ
ð
 —.‘. 4Ñ'ð
ð   $™Jð
ð #'¨¡+ð
ð �T‰kõ
ò21ò1ð	¨C÷ 	r   r±   c            
       ór   ‡ — e Zd Z	 	 	 	 d	dej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚServiceUnavailableErrorNrG   rH   rI   rJ   c                 óT  •— d| _         d|› �| _        || _        || _        || _        || _        || _        |�t        |dd «      nd }t        j                  | j                   |t        j                  dd¬«      ¬«      | _        t        ‰	| �5  | j                  | j                  d ¬«       y )	Né÷  z!litellm.ServiceUnavailableError: r…   rˆ   r˜   r;   r™   rL   ©r?   rN   rO   rP   rH   rI   rJ   rs   rA   rB   rC   rG   rQ   rR   ©
rT   rN   rO   rP   rG   rH   rI   rJ   rŸ   rU   s
            €r   rR   z ServiceUnavailableError.__init__z  sª   ø€ ð ˆÔØ:¸7¸)ÐDˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔØIQÐI]¤7¨8°YÀÔ#EÐcgÐÜŸ™Ø×(Ñ(Ø%Ü—M‘MØØ:ôô
ˆŒô 	‰ÑØ�L‰L 4§=¡=°tð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zServiceUnavailableError.__str__˜  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   z ServiceUnavailableError.__repr__   r_   r   rb   rc   rf   s   @r   r¼   r¼   y  ó]   ø„ ð +/Ø)-Ø"&Ø"&ñ
ð
 —.‘. 4Ñ'ð
ð   $™Jð
ð ˜4‘Zð
ð ˜4‘Zõ
ò<ör   r¼   c            
       ór   ‡ — e Zd Z	 	 	 	 d	dej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚBadGatewayErrorNrG   rH   rI   rJ   c                 óT  •— d| _         d|› �| _        || _        || _        || _        || _        || _        |�t        |dd «      nd }t        j                  | j                   |t        j                  dd¬«      ¬«      | _        t        ‰	| �5  | j                  | j                  d ¬«       y )	Niö  zlitellm.BadGatewayError: r…   rˆ   r˜   r;   r™   rL   r¿   rÀ   s
            €r   rR   zBadGatewayError.__init__ª  sª   ø€ ð ˆÔØ2°7°)Ð<ˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔØIQÐI]¤7¨8°YÀÔ#EÐcgÐÜŸ™Ø×(Ñ(Ø%Ü—M‘MØØ:ôô
ˆŒô 	‰ÑØ�L‰L 4§=¡=°tð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zBadGatewayError.__str__È  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zBadGatewayError.__repr__Ð  r_   r   rb   rc   rf   s   @r   rÅ   rÅ   ©  rÃ   r   rÅ   c            
       ór   ‡ — e Zd Z	 	 	 	 d	dej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚInternalServerErrorNrG   rH   rI   rJ   c                 óT  •— d| _         d|› �| _        || _        || _        || _        || _        || _        |�t        |dd «      nd }t        j                  | j                   |t        j                  dd¬«      ¬«      | _        t        ‰	| �5  | j                  | j                  d ¬«       y )	Néô  zlitellm.InternalServerError: r…   rˆ   r˜   r;   r™   rL   r¿   rÀ   s
            €r   rR   zInternalServerError.__init__Ú  sª   ø€ ð ˆÔØ6°w°iÐ@ˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔØIQÐI]¤7¨8°YÀÔ#EÐcgÐÜŸ™Ø×(Ñ(Ø%Ü—M‘MØØ:ôô
ˆŒô 	‰ÑØ�L‰L 4§=¡=°tð 	õ 	
r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zInternalServerError.__str__ø  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zInternalServerError.__repr__   r_   r   rb   rc   rf   s   @r   rÊ   rÊ   Ù  rÃ   r   rÊ   c                   óv   ‡ — e Zd Z	 	 	 	 d
dedej
                  dz  dedz  dedz  dedz  f
ˆ fd„Zd„ Zd	„ Z	ˆ xZ
S )ÚAPIErrorNr?   r@   rH   rI   rJ   c	                 óØ   •— || _         d|› �| _        || _        || _        || _        || _        || _        |€t        j                  dd¬«      }t        ‰	| �)  | j                  |d ¬«       y )Nzlitellm.APIError: rˆ   r‰   r;   ©r@   rM   ©r?   rN   rO   rP   rH   rI   rJ   rA   rC   rQ   rR   ©
rT   r?   rN   rO   rP   r@   rH   rI   rJ   rU   s
            €r   rR   zAPIError.__init__  sp   ø€ ð 'ˆÔØ+¨G¨9Ð5ˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔØˆ?Ü—m‘m¨6Ð7RÔSˆGÜ‰Ñ˜Ÿ™¨w¸TÐÕBr   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zAPIError.__str__!  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zAPIError.__repr__)  r_   r   rb   )r   r   r   rd   rA   rC   r2   rR   r^   ra   re   rf   s   @r   rÐ   rÐ   
  sk   ø„ ð )-Ø)-Ø"&Ø"&ñCàðCð —‘ Ñ%ðCð   $™JðCð ˜4‘ZðCð ˜4‘ZõCò,ör   rÐ   c            
       ór   ‡ — e Zd Z	 	 	 	 d	dej                  dz  dedz  dedz  dedz  fˆ fd„Zd„ Zd„ Z	ˆ xZ
S )
ÚAPIConnectionErrorNr@   rH   rI   rJ   c                 óð   •— d|› �| _         || _        || _        d| _        || _        t        j                  dd¬«      | _        || _        || _	        t        ‰| �-  | j                   | j                  ¬«       y )Nzlitellm.APIConnectionError: rÌ   rˆ   r‰   r;   )rN   r@   )rN   rO   rP   r?   rH   rA   rC   r@   rI   rJ   rQ   rR   )	rT   rN   rO   rP   r@   rH   rI   rJ   rU   s	           €r   rR   zAPIConnectionError.__init__4  so   ø€ ð 6°g°YÐ?ˆŒØ(ˆÔØˆŒ
ØˆÔØ"4ˆÔÜ—}‘}¨FÐ8SÔTˆŒØ&ˆÔØ&ˆÔÜ‰Ñ §¡°t·|±|ÐÕDr   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   zAPIConnectionError.__str__H  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   zAPIConnectionError.__repr__P  r_   r   rb   )r   r   r   rA   rC   r2   rd   rR   r^   ra   re   rf   s   @r   rØ   rØ   3  sb   ø„ ð )-Ø)-Ø"&Ø"&ñEð
 —‘ Ñ%ðEð   $™JðEð ˜4‘ZðEð ˜4‘ZõEò(ör   rØ   c                   óR   ‡ — e Zd Z	 	 	 ddedz  dedz  dedz  fˆ fd„Zd„ Zd„ Zˆ xZS )	ÚAPIResponseValidationErrorNrH   rI   rJ   c                 óà   •— d|› �| _         || _        || _        t        j                  dd¬«      }t        j
                  d|¬«      }|| _        || _        || _        t        ‰	| �)  |d |¬«       y )Nz$litellm.APIResponseValidationError: rˆ   r‰   r;   rÌ   r>   )rG   rM   rN   )rN   rO   rP   rA   rC   rB   rH   rI   rJ   rQ   rR   )
rT   rN   rO   rP   rH   rI   rJ   r@   rG   rU   s
            €r   rR   z#APIResponseValidationError.__init__[  so   ø€ ð >¸g¸YÐGˆŒØ(ˆÔØˆŒ
ÜŸ™¨fÐ:UÔVˆÜŸ.™.°SÀ'ÔJˆØ"4ˆÔØ&ˆÔØ&ˆÔÜ‰Ñ (°¸wÐÕGr   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   r^   z"APIResponseValidationError.__str__n  r_   r   c                 ó˜   — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }|S rW   r[   r\   s     r   ra   z#APIResponseValidationError.__repr__v  r_   r   r�   )	r   r   r   r2   rd   rR   r^   ra   re   rf   s   @r   rÝ   rÝ   Z  sK   ø„ ð *.Ø"&Ø"&ñHð
   $™JðHð ˜4‘ZðHð ˜4‘ZõHò&ör   rÝ   c            
       ó4   ‡ — e Zd Zdededededdf
ˆ fd„Zˆ xZS )ÚJSONSchemaValidationErrorrP   rO   Úraw_responseÚschemar/   Nc                 óz   •— || _         || _        || _        d|› d|› d|› d�}|| _        t        ‰| �  |||¬«       y )Nz)litellm.JSONSchemaValidationError: model=z, returned an invalid response=z, for schema=z+.
Access raw response with `e.raw_response`)rP   rN   rO   )rã   rä   rP   rN   rQ   rR   )rT   rP   rO   rã   rä   rN   rU   s         €r   rR   z"JSONSchemaValidationError.__init__€  sd   ø€ Ø(ˆÔØˆŒØˆŒ
Ø=¸e¸WÐDcÐdpÐcqÐq~ð  @Fð  Gð  Gsð  tˆØˆŒÜ‰Ñ˜u¨gÀLÐÕQr   )r   r   r   r2   rR   re   rf   s   @r   râ   râ     s9   ø„ ðR˜cð R°ð RÀCð RÐQTð RÐY]÷ Rñ Rr   râ   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )ÚOpenAIErrorc                 ó0   •— t         ‰| �  «        d| _        y )NÚopenai)rQ   rR   rO   )rT   Úoriginal_exceptionrU   s     €r   rR   zOpenAIError.__init__Š  s   ø€ Ü‰ÑÔØ$ˆÕr   r$   ©r   r   r   rR   re   rf   s   @r   rç   rç   ‰  s   ø„ ÷%ñ %r   rç   c                   óx   — e Zd Z	 	 	 	 	 	 	 d
dedz  dedz  dedej                  dz  dedz  dedz  dedz  fd	„Zy)ÚUnsupportedParamsErrorNrO   rP   r?   rG   rH   rI   rJ   c	                 óà   — d| _         d|› �| _        || _        || _        || _        |xs6 t        j                  | j                   t        j                  dd¬«      ¬«      }|| _        || _	        y )Nr8   z litellm.UnsupportedParamsError: r9   r:   r;   r>   )
r?   rN   rP   rO   rH   rA   rB   rC   rI   rJ   )	rT   rN   rO   rP   r?   rG   rH   rI   rJ   s	            r   rR   zUnsupportedParamsError.__init__�  sp   € ð ˆÔØ9¸'¸ÐCˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØò 
œuŸ~™~Ø×(Ñ(Ü—M‘M¨Ð4HÔIô 
ˆð 'ˆÔØ&ˆÕr   )NNr8   NNNN)r   r   r   r2   rd   rA   rB   rR   r   r   r   rí   rí   �  s�   „ ð $(Ø ØØ*.Ø)-Ø"&Ø"&ñ'ð ˜D‘jð'ð �T‰zð	'ð
 ð'ð —.‘. 4Ñ'ð'ð   $™Jð'ð ˜4‘Zð'ð ˜4‘Zô'r   rí   ÚLITELLM_EXCEPTION_TYPESc                   óZ   ‡ — e Zd Z	 	 	 	 d	dedededz  dedz  dedz  dedz  fˆ fd„Zˆ xZS )
ÚBudgetExceededErrorNÚcurrent_costÚ
max_budgetrN   rO   Úentity_typeÚ	entity_idc                 ó"  •— || _         || _        d| _        |xs d| _        || _        || _        t        j                  j                  | _	        t        j                  j                  | _        |xs d|› d|› �}|| _        t        ‰| �=  |«       y )Nr—   Ú z(Budget has been exceeded! Current cost: z, Max budget: )rò   ró   r?   rO   rô   rõ   r   r   r&   r“   r   r!   r”   rN   rQ   rR   )rT   rò   ró   rN   rO   rô   rõ   rU   s          €r   rR   zBudgetExceededError.__init__Á  s�   ø€ ð )ˆÔØ$ˆŒØˆÔØ(Ò.¨BˆÔØ&ˆÔØ"ˆŒô 4×FÑF×LÑLˆŒÜ$1×$8Ñ$8×$>Ñ$>ˆÔØÒpÐGÈÀ~ÐUcÐdnÐcoÐpˆØˆŒÜ‰Ñ˜Õ!r   rb   )r   r   r   Úfloatr2   rR   re   rf   s   @r   rñ   rñ   À  se   ø„ ð
 #Ø#'Ø"&Ø $ñ"àð"ð ð"ð �t‘ð	"ð
 ˜D‘jð"ð ˜4‘Zð"ð ˜‘:÷"ñ "r   rñ   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚInvalidRequestErrorc                 óì   •— d| _         || _        || _        || _        t	        j
                  dt	        j                  dd¬«      ¬«      | _        t        ‰| �%  | j                  | j                  d ¬«       y )Nr8   r9   r:   r;   r>   )rN   rG   rM   )
r?   rN   rP   rO   rA   rB   rC   rG   rQ   rR   )rT   rN   rP   rO   rU   s       €r   rR   zInvalidRequestError.__init__ß  sf   ø€ ØˆÔØˆŒØˆŒ
Ø(ˆÔÜŸ™ØÜ—M‘M¨Ð4HÔIô
ˆŒô 	‰ÑØ—L‘L¨4¯=©=¸tð 	õ 	
r   rë   rf   s   @r   rú   rú   Þ  s   ø„ ÷
ð 
r   rú   c                   ój   ‡ — e Zd Z	 	 	 	 ddedej
                  dz  dedz  dedz  dedz  f
ˆ fd„Zˆ xZS )	ÚMockExceptionNr?   r@   rH   rI   rJ   c	                 óØ   •— || _         d|› �| _        || _        || _        || _        || _        || _        |€t        j                  dd¬«      }t        ‰	| �)  | j                  |d ¬«       y )Nzlitellm.MockException: rˆ   r‰   r;   rÒ   rÓ   rÔ   s
            €r   rR   zMockException.__init__ï  sp   ø€ ð 'ˆÔØ0°°	Ð:ˆŒØ(ˆÔØˆŒ
Ø"4ˆÔØ&ˆÔØ&ˆÔØˆ?Ü—m‘m¨6Ð7RÔSˆGÜ‰Ñ˜Ÿ™¨w¸TÐÕBr   rb   )	r   r   r   rd   rA   rC   r2   rR   re   rf   s   @r   rý   rý   í  sg   ø„ ð )-Ø)-Ø"&Ø"&ñCàðCð —‘ Ñ%ðCð   $™JðCð ˜4‘ZðCð ˜4‘Z÷Cñ Cr   rý   c                   ó6   ‡ — e Zd Zddededz  fˆ fd„Zd„ Zˆ xZS )ÚLiteLLMUnknownProviderNrP   Úcustom_llm_providerc                 ó    •— t         j                  j                  j                  ||¬«      | _        t
        ‰| �  | j                  ||d ¬«       y )N)rP   r  )rP   rO   rG   )r   Úllm_provider_not_providedr&   ÚformatrN   rQ   rR   )rT   rP   r  rU   s      €r   rR   zLiteLLMUnknownProvider.__init__  sK   ø€ Ü+×EÑE×KÑK×RÑRØÐ-@ð Só 
ˆŒô 	‰Ñ˜Ÿ™¨UÐATÐ_cÐÕdr   c                 ó   — | j                   S r$   )rN   r·   s    r   r^   zLiteLLMUnknownProvider.__str__  s   € Ø�|‰|Ðr   r$   )r   r   r   r2   rR   r^   re   rf   s   @r   r   r     s"   ø„ ñe˜cð e¸¸d¹
õ eör   r   c                   óJ   ‡ — e Zd ZdZ	 	 	 	 	 d	dedz  dedededef
ˆ fd„Zˆ xZS )
ÚGuardrailRaisedExceptionaš  
    Raised both when a guardrail judged content and when it could not judge it at all, since a
    guardrail that fails closed refuses the request the same way a policy violation does.

    ``blocked_content`` separates the two. Set it only where the guardrail actually reached a
    verdict on the payload; leave it alone for an unreachable backend, a timeout, or a response
    the integration could not parse. Callers that treat a block as something other than a plain
    failure, such as the batch path dropping one record and submitting the rest, must gate on it,
    because dropping a record no guardrail ever inspected is a silent loss of enforcement.
    NÚguardrail_namerN   Ú should_wrap_with_default_messager?   Úblocked_contentc                 óˆ   •— d|› d|› �}|| _         || _        || _        |r|n|| _        t        ‰| �  | j                  «       y )Nz*Guardrail raised an exception, Guardrail: z, Message: )r  r?   r
  rN   rQ   rR   )rT   r  rN   r	  r?   r
  Údefault_messagerU   s          €r   rR   z!GuardrailRaisedException.__init__  sQ   ø€ ð $NÈnÐM]Ð]hÐipÐhqÐ!rˆØ,ˆÔØ&ˆÔØ.ˆÔÙ*J‘ÐPWˆŒÜ‰Ñ˜Ÿ™Õ&r   )Nr÷   Tr8   F)	r   r   r   r   r2   Úboolrd   rR   re   rf   s   @r   r  r    sW   ø„ ñ	ð &*ØØ15ØØ %ñ'à˜d™
ð'ð ð'ð +/ð	'ð
 ð'ð ÷'ñ 'r   r  c                   ó8   ‡ — e Zd Z	 	 ddededz  defˆ fd„Zˆ xZS )ÚBlockedPiiEntityErrorNrô   r  r?   c                 ó~   •— || _         || _        || _        d|› d|› d�| _        t        ‰| �  | j                  «       y)zJ
        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)rô   r  r?   rN   rQ   rR   )rT   rô   r  r?   rU   s       €r   rR   zBlockedPiiEntityError.__init__.  sM   ø€ ð 'ˆÔØ,ˆÔØ&ˆÔØ2°;°-¸È~ÐN^ð  _Wð  XˆŒÜ‰Ñ˜Ÿ™Õ&r   )Nr8   )r   r   r   r2   rd   rR   re   rf   s   @r   r  r  -  s5   ø„ ð &*Øñ	'àð'ð ˜d™
ð'ð ÷	'ñ 'r   r  c                   ó–   ‡ — e Zd Z	 	 	 	 	 	 	 ddededededz  dej                  dz  dedz  dedz  d	edz  d
edefˆ fd„Z	d„ Z
d„ Zˆ xZS )ÚMidStreamFallbackErrorNrN   rP   rO   rê   rG   rH   rI   rJ   Úgenerated_contentÚis_pre_first_chunkc           	      óè  •— t        |dd «      }|�t        |«      nd| _        d|› �| _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        |€@t        j                  | j                  t        j                  dd|› d�¬«      ¬«      | _        n|| _        | j                  }t        | j                  d	d «      xs t        j                  dd|› d�¬«      }| j                  }t         ‰| �E  | j                  ||| j                  | j                  | j                  | j                  ¬
«       |�t        |«      nd| _        || _        || _        || _        |f| _        y )Nr?   r¾   z litellm.MidStreamFallbackError: rˆ   zhttps://z.com/v1/r;   r>   r@   )rN   rO   rP   rG   rH   rI   rJ   )rs   rd   r?   rN   rP   rO   rê   rH   rI   rJ   r  r  rA   rB   rC   rG   rQ   rR   r@   Úargs)rT   rN   rP   rO   rê   rG   rH   rI   rJ   r  r  Úoriginal_statusÚ_saved_responseÚ_saved_requestÚ_saved_messagerU   s                  €r   rR   zMidStreamFallbackError.__init__?  s|  ø€ ô ")Ð);¸]ÈDÓ!QˆØ3BÐ3Nœ3˜Ô/ÐTWˆÔØ9¸'¸ÐCˆŒØˆŒ
Ø(ˆÔØ"4ˆÔØ"4ˆÔØ&ˆÔØ&ˆÔØ!2ˆÔØ"4ˆÔð ÐÜ!ŸN™NØ ×,Ñ,ÜŸ™Ø!Ø" < .°Ð9ôôˆD�Mð %ˆDŒMð "&§¡ˆÜ '¨¯©°yÀ$Ó Gò !
Ì5Ï=É=Ø ¨,¨°xÐ@ôL
ˆð !%§¡ˆô 	‰ÑØ—L‘LØ%ØØ—]‘]Ø#×6Ñ6Ø×(Ñ(Ø×(Ñ(ð 	ô 	
ð 4CÐ3Nœ3˜Ô/ÐTWˆÔØ'ˆŒØ%ˆŒØ%ˆŒØ#Ð%ˆ�	r   c                 ó  — | j                   }| j                  r|d| j                  › d�z  }| j                  r|d| j                  › �z  }| j                  r2|dt	        | j                  «      j
                  › d| j                  › �z  }|S )NrX   rY   rZ   z Original exception: z: )rN   rJ   rI   rê   rž   r   r\   s     r   r^   zMidStreamFallbackError.__str__}  s’   € Ø—<‘<ˆØ×ÒØÐ,¨T×-=Ñ-=Ð,>¸fÐEÑEˆHØ×ÒØÐ1°$×2BÑ2BÐ1CÐDÑDˆHØ×"Ò"ØÐ/´°T×5LÑ5LÓ0M×0VÑ0VÐ/WÐWYÐZ^×ZqÑZqÐYrÐsÑsˆHØˆr   c                 ó"   — | j                  «       S r$   )r^   r·   s    r   ra   zMidStreamFallbackError.__repr__‡  s   € Ø�|‰|‹~Ðr   )NNNNNr÷   F)r   r   r   r2   Ú	ExceptionrA   rB   rd   r  rR   r^   ra   re   rf   s   @r   r  r  >  s¦   ø„ ð 04Ø*.Ø)-Ø"&Ø"&Ø!#Ø#(ñ<&àð<&ð ð<&ð ð	<&ð
 &¨Ñ,ð<&ð —.‘. 4Ñ'ð<&ð   $™Jð<&ð ˜4‘Zð<&ð ˜4‘Zð<&ð ð<&ð !õ<&ò|ör   r  c                   ój   ‡ — e Zd ZdZ	 	 	 d
dededeeef   dedz  deeef   dz  dedz  fˆ fd	„Zˆ xZS )ÚModifyResponseExceptionaÚ  
    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.
    NrN   rP   r¬   r  Údetection_infoÚoriginal_responsec                 ó€   •— || _         || _        || _        || _        |xs i | _        || _        t        ‰| �  |«       y r$   )rN   rP   r¬   r  r   r!  rQ   rR   )rT   rN   rP   r¬   r  r   r!  rU   s          €r   rR   z ModifyResponseException.__init__˜  sG   ø€ ð ˆŒØˆŒ
Ø(ˆÔØ,ˆÔØ,Ò2°ˆÔð
 "3ˆÔÜ‰Ñ˜Õ!r   r�   )	r   r   r   r   r2   rx   r   rR   re   rf   s   @r   r  r  ‹  st   ø„ ñ
ð" &*Ø04Ø(,ñ"àð"ð ð"ð ˜3 ˜8‘nð	"ð
 ˜d™
ð"ð ˜S #˜X™¨Ñ-ð"ð  ™:÷"ñ "r   r  c                   ób   ‡ — e Zd ZdZ	 	 	 	 d
dedededz  deeef   dz  dedz  defˆ fd	„Zˆ xZ	S )ÚSensitiveDataRouteExceptiona   
    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
    NÚroute_to_modelÚ
session_idr  r   rN   Ústicky_session_routingc                 ó¨   •— || _         || _        || _        |xs i | _        || _        |xs d|› d|› �| _        t        ‰| �  | j
                  «       y )NzSensitive data detected by z. Routing to model: )r%  r&  r  r   r'  rN   rQ   rR   )rT   r%  r&  r  r   rN   r'  rU   s          €r   rR   z$SensitiveDataRouteException.__init__»  s`   ø€ ð -ˆÔØ$ˆŒØ,ˆÔØ,Ò2°ˆÔØ&<ˆÔ#ØÒtÐ$?ÀÐ?OÐOcÐdrÐcsÐ"tˆŒÜ‰Ñ˜Ÿ™Õ&r   )NNNT)
r   r   r   r   r2   rx   r   r  rR   re   rf   s   @r   r$  r$  ®  so   ø„ ñ
ð  &*Ø04Ø"Ø'+ñ'àð'ð ð'ð ˜d™
ð	'ð
 ˜S #˜X™¨Ñ-ð'ð �t‘ð'ð !%÷'ñ 'r   r$  )6ÚenumÚtypingr   r   rA   ré   Úlitellm.types.utilsr   r2   ÚEnumr   r   Ú	frozensetr+   Ú__annotations__r.   r3   r5   r6   rB   rD   rF   ri   ro   rz   r}   ÚAPITimeoutErrorr„   r�   r’   r¥   r«   r±   ÚAPIStatusErrorr¼   rÅ   rÊ   rÐ   rØ   rÝ   râ   rç   rí   rï   r  rñ   rú   rý   r   r  r  r  r  r$  r   r   r   ú<module>r1     sã  ðô ß ã Û å 4ôq˜S $§)¡)ô qô<F�C˜Ÿ™ô FñB &/Ñ.WÐ@VÔ.WÓ%WÐ ˜UÓ WÙ!*Ñ*J¸MÔ*JÓ!JÐ ˜Ó Jð¨ð °°d±
ó ð	 Cð 	¨C°$©Jó 	ð 26Ð ˜Ÿ™¨$Ñ.Ó 5ð# U§^¡^ó #ô(˜&×4Ñ4ô (ôX(�F×(Ñ(ô (ôV0�f×,Ñ,ô 0ôf
�oô 
ô0$˜v×>Ñ>ô $ôN)ˆf×$Ñ$ô )ôX$˜F×8Ñ8ô $ôNW�V×*Ñ*ô Wôv& ô &ôT'˜?ô 'ôT* /ô *ôZ-˜f×3Ñ3ô -ô`-�f×+Ñ+ô -ô`-˜&×4Ñ4ô -ôb%ˆv�‰ô %ôR#˜×2Ñ2ô #ôN" ×!BÑ!Bô "ôJRÐ :ô Rô%�&×$Ñ$ô %ô'˜_ô 'ð4 ØØØØØØØØØØØØØØØØØØØð)"Ð ˜ó ô0"˜)ô "ô<
˜&×0Ñ0ô 
ôC�F—O‘Oô Cô2˜_ô ô'˜yô 'ô8'˜Iô 'ô"JÐ4ô JôZ "˜iô  "ôF' )õ 'r   