
    i                         S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
JrJrJr  S SKJrJrJrJrJr  SrSrS	rS
rSrSr " S S5      rg)    N)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            
       D   \ rS rSrSr  SS\S\R                  \R                  \	\
/\R                  4      S\SS4S jjrS	\S
\S\SS4S jrS\S\S\S\S\4
S jrS\R,                  S\S\4S jrSS\
S\S\4S jjrS\
S\4S jrS\	S\
S\4S jrS\	S\
S\4S jrSrg)ServerErrorMiddleware}   a^  
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.
Napphandlerdebugreturnc                 (    Xl         X l        X0l        g N)r   r   r   )selfr   r   r   s       f/home/maestro/MAESTRO/maestro-backend/venv/lib/python3.13/site-packages/starlette/middleware/errors.py__init__ServerErrorMiddleware.__init__   s     
    scopereceivesendc                 X  ^^#    US   S:w  a  U R                  XT5      I S h  vN   g SmS[        SS 4UU4S jjn U R                  XU5      I S h  vN   g  N4 N! [         a  n[        U5      nU R                  (       a  U R                  Xe5      nOsU R                  c  U R                  Xe5      nOT[        U R                  5      (       a  U R                  Xe5      I S h  vN  nO[        U R                  Xe5      I S h  vN  nT(       d  U" XT5      I S h  vN    UeS nAff = f7f)NtypehttpFmessager   c                 H   >#    U S   S:X  a  SmT" U 5      I S h  vN   g  N7f)Nr    zhttp.response.startT )r"   response_startedr   s    r   _send-ServerErrorMiddleware.__call__.<locals>._send   s(      v"77#' w-s   " ")
r   r
   	Exceptionr   r   debug_responser   error_responser   r   )	r   r   r   r   r&   excrequestresponser%   s	      `    @r   __call__ServerErrorMiddleware.__call__   s    =F"((54000 	  	 T 	  	 	((55111 1 2 	enGzz..w<%..w< %T\\22%)\\'%???H%6t||W%RRRH#ut444
 I+	si   D*AD*A AA D*A 
D'&A;D"!C$"D"DD"DD""D''D*indexlineframe_linenoframe_indexc                     [         R                  " U5      R                  SS5      X4-
  U-   S.nX:w  a  [        R                  " S0 UD6$ [
        R                  " S0 UD6$ )N z&nbsp)r1   linenor$   )htmlescapereplaceLINEformatCENTER_LINE)r   r0   r1   r2   r3   valuess         r   format_line!ServerErrorMiddleware.format_line   s]    
 KK%--c7;#1U:
 ;;(((!!+F++r   frameis_collapsedc                 d  ^ ^ SR                  UU 4S j[        TR                  =(       d    / 5       5       5      n[        R                  " TR
                  5      TR                  [        R                  " TR                  5      UU(       a  SOSU(       a  SOSS.n[        R                  " S0 UD6$ )N c              3   x   >#    U  H/  u  pTR                  UUTR                  TR                  5      v   M1     g 7fr   )r>   r6   r0   ).0r0   r1   r@   r   s      r   	<genexpr><ServerErrorMiddleware.generate_frame_html.<locals>.<genexpr>   sD      
  C 	   Cs   7:	collapsed+z&#8210;)frame_filenamer2   
frame_namecode_contextrH   collapse_buttonr$   )
join	enumeraterL   r7   r8   filenamer6   functionFRAME_TEMPLATEr;   )r   r@   rA   rL   r=   s   ``   r   generate_frame_html)ServerErrorMiddleware.generate_frame_html   s    ww 
  )););)ArB
 
 #kk%..9!LL ++enn5((4"&2s	
 $$.v..r   r+   limitc                    [         R                  R                  USS9nSnSnUR                  nUb=  [        R
                  " Xb5      n[        U5       H  nX@R                  X5      -  nSnM     [        R                  " UR                  R                  5       S[        R                  " [        U5      5       3n	[        R                  [        [         XS9$ )NT)capture_localsrC   Fz: )stylesjserrorexc_html)	tracebackTracebackExceptionfrom_exception__traceback__inspectgetinnerframesreversedrS   r7   r8   exc_type__name__strTEMPLATEr;   STYLESJS)
r   r+   rU   traceback_objr[   rA   exc_tracebackframesr@   rZ   s
             r   generate_html#ServerErrorMiddleware.generate_html   s    !44CC D 
 ))$++MAF!&)44UII# * {{=11::;<B{{3}-./1 	
 f5TTr   c                 t    SR                  [        R                  " [        U5      XR                  5      5      $ )NrC   )rN   r\   format_exceptionr    r_   )r   r+   s     r   generate_plain_text)ServerErrorMiddleware.generate_plain_text   s(    wwy11$s)SBSBSTUUr   r,   c                     UR                   R                  SS5      nSU;   a  U R                  U5      n[        USS9$ U R	                  U5      n[        USS9$ )NacceptrC   z	text/html  status_code)headersgetrl   r   rp   r   )r   r,   r+   rs   contents        r   r)   $ServerErrorMiddleware.debug_response   sZ    $$Xr2& ((-GS99**3/ c::r   c                     [        SSS9$ )NzInternal Server Errorrt   ru   )r   )r   r,   r+   s      r   r*   $ServerErrorMiddleware.error_response  s     !8cJJr   )r   r   r   )NF)   )rd   
__module____qualname____firstlineno____doc__r	   typingOptionalCallabler   r(   Anyboolr   r   r   r   r.   intre   r>   r`   	FrameInforS   rl   rp   r   r)   r*   __static_attributes__r$   r   r   r   r   }   s9   	  

 OOWi0&**<=

 
 

%E %G %4 %D %N,, #,36,EH,	,/):): /$ /SV /2U U3 Us U,Vy VS V;g ;I ;( ;Kg KI K( Kr   r   )r7   r`   r\   r   starlette._utilsr   starlette.concurrencyr   starlette.requestsr   starlette.responsesr   r   r   starlette.typesr	   r
   r   r   r   rg   rh   rf   rR   r:   r<   r   r$   r   r   <module>r      s_        . 3 & I I B B4
l"(	
HK HKr   