
    vh
                        d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d d	lmZ  G d
 d      Zy)    )annotations)Mapping)Any)ExceptionHandlersStatusHandlerswrap_app_handling_exceptions)HTTPExceptionWebSocketException)Request)PlainTextResponseResponse)ASGIAppExceptionHandlerReceiveScopeSend)	WebSocketc                  T    e Zd Z	 	 d	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 d	dZd
dZddZddZy)ExceptionMiddlewareNc                    || _         || _        i | _        t        | j                  t
        | j                  i| _        |+|j                         D ]  \  }}| j                  ||        y y N)
appdebug_status_handlersr	   http_exceptionr
   websocket_exception_exception_handlersitemsadd_exception_handler)selfr   handlersr   keyvalues         W/var/www/html/luna/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py__init__zExceptionMiddleware.__init__   sq     
024.. 8 87
  &nn. 7
U**367      c                    t        |t              r|| j                  |<   y t        |t              sJ || j
                  |<   y r   )
isinstanceintr   
issubclass	Exceptionr   )r    exc_class_or_status_codehandlers      r$   r   z)ExceptionMiddleware.add_exception_handler$   sB    
 .4>ED!!":;6	BBBAHD$$%=>r&   c                "  K   |d   dvr| j                  |||       d {    y | j                  | j                  f|d<   |d   dk(  rt        |||      }nt	        |||      } t        | j                   |      |||       d {    y 7 j7 w)Ntype)http	websocketzstarlette.exception_handlersr0   )r   r   r   r   r   r   )r    scopereceivesendconns        r$   __call__zExceptionMiddleware.__call__/   s     = 55((5'4000 $$!!1
,- =F"5'40DUGT2D:*488T:5'4PPP 1 	Qs"   BBA$BBBBc                   K   t        |t              sJ |j                  dv r!t        |j                  |j                        S t        |j                  |j                  |j                        S w)N>   0     )status_codeheaders)r(   r	   r:   r   r;   r   detail)r    requestexcs      r$   r   z"ExceptionMiddleware.http_exceptionA   sU     #}---??j(MM RUR]R]^^s   A.A0c                   K   t        |t              sJ |j                  |j                  |j                         d {    y 7 w)N)codereason)r(   r
   closer@   rA   )r    r1   r>   s      r$   r   z'ExceptionMiddleware.websocket_exceptionG   s5     #1222oo388CJJo???s   =AA A)NF)r   r   r!   z%Mapping[Any, ExceptionHandler] | Noner   boolreturnNone)r,   zint | type[Exception]r-   r   rD   rE   )r2   r   r3   r   r4   r   rD   rE   )r=   r   r>   r+   rD   r   )r1   r   r>   r+   rD   rE   )__name__
__module____qualname__r%   r   r6   r   r    r&   r$   r   r      sl     ;?	77 87 	7
 
7"	I"7	I "	I 
		IQ$_@r&   r   N)
__future__r   collections.abcr   typingr   starlette._exception_handlerr   r   r   starlette.exceptionsr	   r
   starlette.requestsr   starlette.responsesr   r   starlette.typesr   r   r   r   r   starlette.websocketsr   r   rI   r&   r$   <module>rS      s9    " #  
 C & ; K K *7@ 7@r&   