
    ,h                        d dl mZ d dl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 dZd	Zd
ZdZdZdZ G d d      Zy)    )annotationsN)is_async_callable)run_in_threadpool)Request)HTMLResponsePlainTextResponseResponse)ASGIApp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                  f    e Zd ZdZ	 	 d	 	 	 	 	 	 	 ddZddZddZddZdddZddZ	dd	Z
dd
Zy)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.
    Nc                .    || _         || _        || _        y N)apphandlerdebug)selfr   r   r   s       ]/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/starlette/middleware/errors.py__init__zServerErrorMiddleware.__init__   s     
    c                .  K   |d   dk7  r| j                  ||       d {    y ddfd}	 | j                  |||       d {    y 7 +7 # t        $ r}t        |      }| j                  r| j	                  ||      }np| j
                  | j                  ||      }nQt        | j
                        r| j                  ||       d {  7  }n t        | j
                  ||       d {  7  }s |||       d {  7   |d }~ww xY ww)NtypehttpFc                F   K   | d   dk(  rd |        d {    y 7 w)Nr   zhttp.response.startT )messageresponse_startedsends    r   _sendz-ServerErrorMiddleware.__call__.<locals>._send   s)      v"77#' w-s   !!)r   r   returnNone)	r   	Exceptionr   r   debug_responser   error_responser   r   )	r   scopereceiver!   r"   excrequestresponser    s	      `    @r   __call__zServerErrorMiddleware.__call__   s    =F"((5'4000 	 	((5'5111 1 2 	enGzz..w<%..w< %T\\2%)\\'3%???H%6t||Wc%RRRH#ugt444
 I+	si   DADA 	A
A DA 	DA3DC D0C31DDDDDc                    t        j                  |      j                  dd      ||z
  |z   d}||k7  rt        j                  di |S t        j                  di |S )N z&nbsp)linelinenor   )htmlescapereplaceLINEformatCENTER_LINE)r   indexr0   frame_linenoframe_indexvaluess         r   format_linez!ServerErrorMiddleware.format_line   sa     KK%--c7;#k1U:
 K;;(((!!+F++r   c                >    dj                   fdt        j                  xs 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  t   K   | ]/  \  }}j                  ||j                  j                         1 y wr   )r<   r1   r8   ).0r8   r0   framer   s      r   	<genexpr>z<ServerErrorMiddleware.generate_frame_html.<locals>.<genexpr>   s>      
 t 	
s   58	collapsed+z&#8210;)frame_filenamer9   
frame_namecode_contextrC   collapse_buttonr   )
join	enumeraterG   r2   r3   filenamer1   functionFRAME_TEMPLATEr6   )r   rA   is_collapsedrG   r;   s   ``   r   generate_frame_htmlz)ServerErrorMiddleware.generate_frame_html   s    ww 
  )););)ArB
 
 #kk%..9!LL ++enn5((4"&2s	
 $$.v..r   c                   t         j                  j                  |d      }d}d}|j                  }|=t	        j
                  ||      }t        |      D ]  }|| j                  ||      z  }d} t        j                  dk\  r|j                  }	n|j                  j                  }	t        j                  |	       dt        j                  t        |             }
t         j#                  t$        t&        |
|      S )NT)capture_localsr>   F)      z: )stylesjserrorexc_html)	tracebackTracebackExceptionfrom_exception__traceback__inspectgetinnerframesreversedrO   sysversion_infoexc_type_strexc_type__name__r2   r3   strTEMPLATEr6   STYLESJS)r   r*   limittraceback_objrW   rN   exc_tracebackframesrA   ra   rV   s              r   generate_htmlz#ServerErrorMiddleware.generate_html   s    !44CCCX\C]))$++M5AF!&) $D44ULII#$ w&(55L(11::L ;;|,-RC<N0O/PQf58TTr   c                t    dj                  t        j                  t        |      ||j                              S )Nr>   )rI   rX   format_exceptionr   r[   )r   r*   s     r   generate_plain_textz)ServerErrorMiddleware.generate_plain_text   s*    wwy11$s)S#BSBSTUUr   c                    |j                   j                  dd      }d|v r| j                  |      }t        |d      S | j	                  |      }t        |d      S )Nacceptr>   z	text/html  status_code)headersgetrl   r   ro   r   )r   r+   r*   rq   contents        r   r&   z$ServerErrorMiddleware.debug_response   sZ    $$Xr2& ((-GS99**3/ c::r   c                    t        dd      S )NzInternal Server Errorrr   rs   )r   )r   r+   r*   s      r   r'   z$ServerErrorMiddleware.error_response  s     !8cJJr   )NF)r   r
   r   z8typing.Callable[[Request, Exception], typing.Any] | Noner   boolr#   r$   )r(   r   r)   r   r!   r   r#   r$   )
r8   intr0   rd   r9   rz   r:   rz   r#   rd   )rA   zinspect.FrameInforN   ry   r#   rd   )   )r*   r%   rh   rz   r#   rd   )r*   r%   r#   rd   )r+   r   r*   r%   r#   r	   )rc   
__module____qualname____doc__r   r-   r<   rO   rl   ro   r&   r'   r   r   r   r   r      sd    	 MQ	 J 	
 
%N	,/2U,V;Kr   r   )
__future__r   r2   r\   r_   rX   typingstarlette._utilsr   starlette.concurrencyr   starlette.requestsr   starlette.responsesr   r   r	   starlette.typesr
   r   r   r   r   rf   rg   re   rM   r5   r7   r   r   r   r   <module>r      se    "   
   . 3 & I I B B4
l"(	
DK DKr   