
    <|h/                        d dl Z d dlZd dlmZ dZdZ e j                  d      Z G d de      Z	 G d d	e
      Z G d
 de
      Z G d d      Z G d d      Z G d d      Zd dlZd dlmZ d Zd Zd Zd Zd Zd ZdZd Zd Zy)    N)CodeTypez2.0.0)	TracebackTracebackParseErrorFrameCodezO^\s*File "(?P<co_filename>.+)", line (?P<tb_lineno>\d+)(, in (?P<co_name>.+))?$c                       e Zd ZdZd Zy)	_AttrDict c                 @    	 | |   S # t         $ r t        |      d w xY wN)KeyErrorAttributeError)selfnames     L/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/_tblib.py__getattr__z_AttrDict.__getattr__)   s-    	1: 	1 &D0	1s    N)__name__
__module____qualname__	__slots__r   r
       r   r	   r	   &   s    I1r   r	   c                       e Zd Zy)__traceback_makerNr   r   r   r
   r   r   r   r   1       r   r   c                       e Zd Zy)r   Nr   r
   r   r   r   r   5   r   r   r   c                       e Zd ZdZdZd Zy)r   zw
    Class that replicates just enough of the builtin Code object to enable serialization and traceback rendering.
    Nc                     |j                   | _         |j                  | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )Nr   r
   @   )	co_filenameco_nameco_argcountco_kwonlyargcountco_varnames
co_nlocalsco_stacksizeco_flagsco_firstlineno)r   codes     r   __init__zCode.__init__@   sQ    ++||!"r   )r   r   r   __doc__co_coder*   r
   r   r   r   r   9   s     G	 r   r   c                       e Zd ZdZd Zd Zy)r   zx
    Class that replicates just enough of the builtin Frame object to enable serialization and traceback rendering.
    c                     i | _         |j                  j                         D ci c]  \  }}|dv s|| c}}| _        t        |j                        | _        |j
                  | _        y c c}}w )N__file__r   )f_locals	f_globalsitemsr   f_codef_lineno)r   framekvs       r   r*   zFrame.__init__Q   sY    +0??+@+@+Bd41aaKcFc!Q$d5<<( es
   A,A,c                      y)z
        For compatibility with PyPy 3.5;
        clear() was added to frame in Python 3.4
        and is called by traceback.clear_frames(), which
        in turn is called by unittest.TestCase.assertRaises
        Nr
   )r   s    r   clearzFrame.clearW   s    r   N)r   r   r   r+   r*   r:   r
   r   r   r   r   L   s    'r   r   c                   P    e Zd ZdZdZd Zd ZeZd ZeZ	e
d        Ze
dd       Zy)	r   z5
    Class that wraps builtin Traceback objects.
    Nc                 f   t        |j                        | _        t        |j                        | _        |j                  }| }t        |       }|bt        j                  |      }t        |j                        |_        t        |j                        |_        ||_        |}|j                  }|ay y r   )r   tb_frameint	tb_linenotb_nexttypeobject__new__)r   tbprev_tracebackcls	tracebacks        r   r*   zTraceback.__init__g   s    bkk*R\\* ZZ4jns+I!&r{{!3I"%bll"3I%.N"&NB nr   c                 Z   | }d}d}|rW|j                   j                  }t        d|j                  dz
  z  dz   |j                   j                  j                  d      }t        |d      r+|j                  d|j                  |j                  dd	      }nt        d|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                   |j                  |j                  |j"                  |j$                  dd      }	 t'        |t)        |j                   j*                        i        |j2                  }|rW	 |~~S # t,        $ r4 t/        j0                         d
   j2                  }||}|||_        |}~Y Qw xY w# ~~w xY w)zm
        Convert to a builtin Traceback object that is usable for raising or rendering a stacktrace.
        N
   zraise __traceback_makerexecreplacer   r
   )r"   r    r!   co_freevarsco_cellvars   )r=   r4   compiler?   r    hasattrrL   r!   r   r#   r%   r&   r'   r,   	co_constsco_namesr$   r(   	co_lnotabrK   dictr2   	Exceptionsysexc_infor@   )r   currenttop_tbrD   r4   r)   next_tbs          r   as_tracebackzTraceback.as_tracebackx   s    %%,,F47#4#4q#89<UUW^WgWgWnWnWzWz  }C  DDtY'||v?Q?Q[a[i[iwy  HJ|  K**OO%%MMLLNNMM$$&&NN''NN&	T4 0 0 : :;R@ ooGK L	  ,,.+33>$F>!(BJ s   '*E& "F& &:F#"F#&F*c                 R   | j                   d}n| j                   j                         }| j                  j                  j                  | j                  j                  j
                  d}| j                  j                  || j                  j                  d}|| j                  |dS )z
        Converts to a dictionary representation. You can serialize the result to JSON as it only has
        builtin objects like dicts, lists, ints or strings.
        Nr    r!   r2   r4   r5   r=   r?   r@   )	r@   to_dictr=   r4   r    r!   r2   r5   r?   )r   r@   r)   r6   s       r   as_dictzTraceback.as_dict   s    
 <<Gll**,G  ==//;;}}++33

 00..
 
 	
r   c                     |d   r| j                  |d         }nd}t        |d   d   d   |d   d   d         }t        |d   d   ||d   d	   
      }t        ||d   |      } | |      S )zj
        Creates an instance from a dictionary with the same structure as ``.as_dict()`` returns.
        r@   Nr=   r4   r    r!   r^   r2   r5   r_   r?   r`   )	from_dictr	   )rF   dctr@   r)   r6   rD   s         r   rd   zTraceback.from_dict   s    
 y>mmC	N3GGJ1-@
OH-i8
 *ok2_Z0

 +&

 2wr   c                    g }|}|j                         D ]i  }|j                         }|r|dk(  rd}t        j                  |      }|r |j	                  |j                                T|j                  d      rf|si n |rXd}t        |      D ]@  }t        |t        |t        |d   d      t        |      t        |d         	      |
      }B  | |      S t        d|z        )z
        Creates an instance by parsing a stacktrace. Strict means that parsing stops when lines are not indented by at least two spaces
        anymore.
        z"Traceback (most recent call last):Fz  Nr    ?r/   r?   r_   )r=   r@   z Could not find any frames in %r.)
splitlinesrstripFRAME_REmatchappend	groupdict
startswithreversedr	   r>   r   )	rF   stringstrictframesheaderlineframe_matchpreviousr6   s	            r   from_stringzTraceback.from_string   s    %%' 	D;;=D??"F"...Kk3356&	 H!&) $&"+%*=%9%(#  )/!$U;%7!8 % x= %&H6&QRRr   )T)r   r   r   r+   r@   r*   r\   to_tracebackrb   ra   classmethodrd   rw   r
   r   r   r   r   `   sT     G"1f  L
2 G 2 (S (Sr   r   )TracebackTypec                 ~    t         j                  t              }| |_        ||_        ||_        |j                         S r   )rB   rC   r   r=   r?   r@   r\   )r=   r?   r@   rets       r   unpickle_tracebackr}     s4    
..
#CCLCMCKr   c                     t         t        | j                        | j                  | j                  xr t        | j                        ffS r   )r}   r   r=   r?   r@   r   )rD   s    r   pickle_tracebackr   %  s7    bkk 2BLL"**BfQZ[][e[eQfgggr   c                 ,     | | }||_         ||_        |S r   )	__cause____traceback__)funcargscauserD   insts        r   unpickle_exceptionr   )  s    ;DDNDKr   c                     | j                  d      }t        |t              rt        d      t        |t              sJ t        |      dk\  sJ t        |d d | j                  | j                  fz   f|dd  z   S )N   z&str __reduce__ output is not supportedrO   )	__reduce_ex__
isinstancestr	TypeErrortuplelenr   r   r   )objrvs     r   pickle_exceptionr   0  s|     
		1	B"c@AAb%   r7a<<2A#--9J9J)K KLrRSRTvUUr   c              #   ~   K   | g}|r4|j                         }| |t        |j                               z  }|r3y y wr   )poplist__subclasses__)rF   to_visitthiss      r   _get_subclassesr   A  s=     uH
||~
D,,.// s   8==c                     dd l }|j                  t        t               t        j
                  j                  dk  r6t        |       dk(  r'| d   }t        |t              rt        |t              r|S y | s+t        t              D ]  }|j                  |t                y | D ]  }t        |t              r2||j                  t        |      t               |j                  }|.Et        |t              r9t        |t              r)|j                  |t               t        |       dk(  s|c S t        dt        |      z         y )Nr   r   rJ   z9Expected subclasses or instances of BaseException, got %s)copyregpicklerz   r   rW   version_infomajorr   r   rA   
issubclassBaseExceptionr   r   r   r   )exc_classes_or_instancesr   excexception_clss       r   installr   J  s   NN="23
!'(A-*1-C#t$C)G
#,]; 	<MNN=*:;	<' gc=)/tCy*:;mm / T"z#}'ENN3 01+,1
W[_`c[deffgr   Fc                 d    ddl m} |  |d       S t        |       }  || j                               S )Nr   )dumps)r   r   r   ra   )rD   r   s     r   dump_tracebackr   j  s.    	zT{	2Br   c                 n    ddl m}  ||       }|y t        j                  |      }|j	                         S )Nr   )loads)r   r   r   rd   r\   )sr   rb   rD   s       r   load_tracebackr   r  s3    AhG			W	%B??r   )rerW   typesr   __version____all__rP   rj   rU   r	   rV   r   r   r   r   r   rz   r}   r   r   r   r   r   
_installedr   r   r
   r   r   <module>r      s   8 
 
 
=2::hi1 1		 		) 	   & (kS kSb  hV"0g> 
r   