
    	he                        d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZmZmZmZmZ dZd	Zd
ZdZdZdZ G d d          ZdS )    )annotationsN)is_async_callable)run_in_threadpool)Request)HTMLResponsePlainTextResponseResponse)ASGIAppExceptionHandlerMessageReceiveScopeSenda  
p {
    color: #211c1c;
}
.traceback-container {
    border: 1px solid #038BB8;
}
.traceback-title {
    background-color: #038BB8;
    color: lemonchiffon;
    padding: 12px;
    font-size: 20px;
    margin-top: 0px;
}
.frame-line {
    padding-left: 10px;
    font-family: monospace;
}
.frame-filename {
    font-family: monospace;
}
.center-line {
    background-color: #038BB8;
    color: #f9f6e1;
    padding: 5px 0px 5px 5px;
}
.lineno {
    margin-right: 5px;
}
.frame-title {
    font-weight: unset;
    padding: 10px 10px 10px 10px;
    background-color: #E4F4FD;
    margin-right: 10px;
    color: #191f21;
    font-size: 17px;
    border: 1px solid #c7dce8;
}
.collapse-btn {
    float: right;
    padding: 0px 5px 1px 5px;
    border: solid 1px #96aebb;
    cursor: pointer;
}
.collapsed {
  display: none;
}
.source-code {
  font-family: courier;
  font-size: small;
  padding-bottom: 10px;
}
a  
<script type="text/javascript">
    function collapse(element){
        const frameId = element.getAttribute("data-frame-id");
        const frame = document.getElementById(frameId);

        if (frame.classList.contains("collapsed")){
            element.innerHTML = "&#8210;";
            frame.classList.remove("collapsed");
        } else {
            element.innerHTML = "+";
            frame.classList.add("collapsed");
        }
    }
</script>
a  
<html>
    <head>
        <style type='text/css'>
            {styles}
        </style>
        <title>Starlette Debugger</title>
    </head>
    <body>
        <h1>500 Server Error</h1>
        <h2>{error}</h2>
        <div class="traceback-container">
            <p class="traceback-title">Traceback</p>
            <div>{exc_html}</div>
        </div>
        {js}
    </body>
</html>
a  
<div>
    <p class="frame-title">File <span class="frame-filename">{frame_filename}</span>,
    line <i>{frame_lineno}</i>,
    in <b>{frame_name}</b>
    <span class="collapse-btn" data-frame-id="{frame_filename}-{frame_lineno}" onclick="collapse(this)">{collapse_button}</span>
    </p>
    <div id="{frame_filename}-{frame_lineno}" class="source-code {collapsed}">{code_context}</div>
</div>
zV
<p><span class="frame-line">
<span class="lineno">{lineno}.</span> {line}</span></p>
zv
<p class="center-line"><span class="frame-line center-line">
<span class="lineno">{lineno}.</span> {line}</span></p>
c                  Z    e Zd ZdZ	 	 d*d+dZd,dZd-dZd.dZd/d0d#Zd1d$Z	d2d(Z
d2d)ZdS )3ServerErrorMiddlewareaz  
    Handles returning 500 responses when a server error occurs.

    If 'debug' is set, then traceback responses will be returned,
    otherwise the designated 'handler' will be called.

    This middleware class should generally be used to wrap *everything*
    else up, so that unhandled exceptions anywhere in the stack
    always result in an appropriate 500 response.
    NFappr
   handlerExceptionHandler | NonedebugboolreturnNonec                0    || _         || _        || _        d S N)r   r   r   )selfr   r   r   s       h/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/starlette/middleware/errors.py__init__zServerErrorMiddleware.__init__   s     


    scoper   receiver   sendr   c                4  K   |d         dk    r|                      ||           d {V  d S dd	fd}	 |                      |||           d {V  d S # t          $ r}t          |          }| j        r|                     ||          }nk| j        |                     ||          }nMt          | j                  r|                     ||           d {V }nt          | j        ||           d {V }s |||           d {V  |d }~ww xY w)
NtypehttpFmessager   r   r   c                J   K   | d         dk    rd |            d {V  d S )Nr#   zhttp.response.startT )r%   response_startedr!   s    r   _sendz-ServerErrorMiddleware.__call__.<locals>._send   sE       v"777#' $w--r   )r%   r   r   r   )	r   	Exceptionr   r   debug_responser   error_responser   r   )	r   r   r    r!   r)   excrequestresponser(   s	      `    @r   __call__zServerErrorMiddleware.__call__   s     =F""((5'4000000000F 	  	  	  	  	  	  	 	((5'511111111111 	 	 	ennGz S..w<<%..w<< %T\22 S%)\\'3%?%???????HH%6t|Wc%R%RRRRRRRH# 5hugt444444444
 I+	s   A 
D#B/DDindexintlinestrframe_linenoframe_indexc                    t          j        |                              dd          ||z
  |z   d}||k    rt          j        di |S t          j        di |S )N z&nbsp)r3   linenor'   )htmlescapereplaceLINEformatCENTER_LINE)r   r1   r3   r5   r6   valuess         r   format_linez!ServerErrorMiddleware.format_line   st     K%%--c7;;#k1U:
 
 K;(((((!++F+++r   frameinspect.FrameInfois_collapsedc                    d                      fdt          j        pg           D                       }t          j        j                  j        t          j        j                  ||rdnd|rdndd}t          j	        di |S )N c              3  b   K   | ])\  }}                     ||j        j                  V  *d S r   )rA   r9   r1   ).0r1   r3   rB   r   s      r   	<genexpr>z<ServerErrorMiddleware.generate_frame_html.<locals>.<genexpr>   s]       
 
 t 	 
 
 
 
 
 
r   	collapsed+z&#8210;)frame_filenamer5   
frame_namecode_contextrJ   collapse_buttonr'   )
join	enumeraterN   r:   r;   filenamer9   functionFRAME_TEMPLATEr>   )r   rB   rD   rN   r@   s   ``   r   generate_frame_htmlz)ServerErrorMiddleware.generate_frame_html   s    ww 
 
 
 
 
  ));)ArBB
 
 
 
 
 #k%.99!L +en55((4<"&2Ass	
 
 $..v...r      r-   r*   limitc                   t           j                            |d          }d}d}|j        }|Bt	          j        ||          }t          |          D ]}||                     ||          z  }d}t          j	        dk    r|j
        }	n|j        j        }	t          j        |	           dt          j        t          |                     }
t                               t$          t&          |
|          S )NT)capture_localsrF   F)      z: )stylesjserrorexc_html)	tracebackTracebackExceptionfrom_exception__traceback__inspectgetinnerframesreversedrU   sysversion_infoexc_type_strexc_type__name__r:   r;   r4   TEMPLATEr>   STYLESJS)r   r-   rW   traceback_objr_   rD   exc_tracebackframesrB   ri   r^   s              r   generate_htmlz#ServerErrorMiddleware.generate_html   s    !4CCCX\C]])$+M5AAF!&)) $ $D44ULIII#w&&(5LL(1:L ;|,,QQC<N<N0O0OQQf58TTTr   c                x    d                     t          j        t          |          ||j                            S )NrF   )rP   r`   format_exceptionr#   rc   )r   r-   s     r   generate_plain_textz)ServerErrorMiddleware.generate_plain_text   s,    wwy1$s))S#BSTTUUUr   r.   r   r	   c                    |j                             dd          }d|v r&|                     |          }t          |d          S |                     |          }t          |d          S )NacceptrF   z	text/html  status_code)headersgetrr   r   ru   r   )r   r.   r-   rw   contents        r   r+   z$ServerErrorMiddleware.debug_response   sp    $$Xr22&  ((--GS9999**3// c::::r   c                $    t          dd          S )NzInternal Server Errorrx   ry   )r   )r   r.   r-   s      r   r,   z$ServerErrorMiddleware.error_response  s     !8cJJJJr   )NF)r   r
   r   r   r   r   r   r   )r   r   r    r   r!   r   r   r   )
r1   r2   r3   r4   r5   r2   r6   r2   r   r4   )rB   rC   rD   r   r   r4   )rV   )r-   r*   rW   r2   r   r4   )r-   r*   r   r4   )r.   r   r-   r*   r   r	   )rk   
__module____qualname____doc__r   r0   rA   rU   rr   ru   r+   r,   r'   r   r   r   r      s        	 	 ,0	    % % % %N	, 	, 	, 	,/ / / /2U U U U U,V V V V; ; ; ;K K K K K Kr   r   )
__future__r   r:   rd   rg   r`   starlette._utilsr   starlette.concurrencyr   starlette.requestsr   starlette.responsesr   r   r	   starlette.typesr
   r   r   r   r   r   rm   rn   rl   rT   r=   r?   r   r'   r   r   <module>r      s3   " " " " " "   



     . . . . . . 3 3 3 3 3 3 & & & & & & I I I I I I I I I I T T T T T T T T T T T T T T T T4
l"(	
DK DK DK DK DK DK DK DK DK DKr   