
    sh                     n   S SK r 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\R                  5      r\" 5       rS rS rS	 rS
 rS rS rS r\
R*                  (       aI  \ R,                  " S5      r\R1                  \ R2                  5        \ R4                  " 5       /\l        \r\rg\r\rg)    N)wraps)chain)configc                       \ rS rSrSrS rSrg)TLS
   zGUse a subclass to properly initialize the TLS variables in all threads.c                      SU l         SU l        g )NFr   )tracingindent)selfs    f/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/core/tracing.py__init__TLS.__init__   s        )r   r
   N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__ r   r   r   r   
   s
    Qr   r   c                    [        U SS5      n[        U SS5      n[        U SS5      nSnU(       a  UR                  nO[        UR                  5      (       a-  UR                  S   S:X  a  US   R                  R                  nO<[        UR                  5      (       a"  UR                  S   S:X  a  US   R                  nU(       a|  / nU(       a(  US:w  a"  UR                  U5        UR                  S	5        U(       a"  UR                  U5        UR                  S	5        UR                  U5        S
R                  U5      nUS4$ )z3Return function meta-data in a tuple.

(name, type)r   Nr   __self__r   r   cls__main__. )getattrr   lenargs	__class__appendjoin)funcspecr    modulenamer   cnameqnames           r   find_function_infor*      s   
 T<.F4T*D4T*DE 
TYYDIIaLF2Q!!**	TYYDIIaLE1Q  f
*LL LLLLLLTwwu~:r   c                 Z    Sn[        U 5      n[        U5      U:  a  US U S-   US   -   $ U$ )Ni@  z...)reprr   )valueMAX_SIZEss      r   chopr1   1   s;    HUA
1v(|e#ae++r   c                 T   [        5       nUR                  (       a@  [        [        UR                  [	        UR                  5      * S  UR                  5      5      nUR                  U5        UR                  [        [        UR                  S [	        U5       U5      5      5        UR                   Vs/ s H  oU< SUR                  U5      < 3PM     nnU[	        U5      S   Vs/ s H  n[        U5      PM     nn[        UR                  5       5       Vs/ s H  o< SXH   < 3PM     n	nSR                  [        XgU	5       V
s/ s H  o(       d  M  U
PM     sn
5      nS[        R                  S-  U SUS/nS[        R                  S-  U /nX4$ s  snf s  snf s  snf s  sn
f )N=, z>>  ()z<< )dictdefaultszipr    r   updatelistpopstrsortedkeysr#   r   tlsr   )fnamer%   r    kwdsvaluesa
positional	anonymouskkeywordsfparamsenterleaves                 r   create_eventsrN   9   sR   VF}}c$))S%7$7$89$--HI
MM$
MM$s499Zc$i0$7896:ii@i1fjjm,iJ@!%c*o&6!78!7AQ!7I806v{{}0EF0E1FI&0EHFYY5#IO#IaQ#IOPFCJJ$eS&#>ECJJ$e,E< A8FOs   5!F(FF 	
F%F%c                     UR                  SS5      nS n[        U 5      =(       a    U S   =(       d    SnU(       a  [        e[        U5      (       d  [        U5      [        [        4;   a  U" U5      $ [        U5      [        :X  az  Su  pn
UR                  (       a  U" UR                  5      nUR                   (       a  U" UR                   5      n	UR"                  (       a  U" UR"                  5      n
[        XU
5      $ U$ )zFunction decorator to trace a function's entry and exit.

*args: categories in which to trace this function. Example usage:

@trace
def function(...):...

@trace('mycategory')
def function(...):...


	recursiveFc                   ^ ^^ S m[         R                  " S5      mU UU4S jnS nS n[        T 5      [        :X  a'  [        T 5      nT R	                  S5      R
                  m OI[        T 5      [        :X  a  [        T 5      nT R	                  S5      m O[        T 5      [        :X  a  [        e[        R                  " T 5      mU" [        T 5      " U5      5      $ )Ntracec                    > TR                  [        R                  5      (       a  [        R                  (       a  T" U 0 UD6$ [        TTU 5      u  p# S[        l        [        UTX5      u  pE TR                  SR                  U5      5        [        =R                  S-  sl	          S[        l        T" U 0 UD6nS[        l         Ub+  UR                  S5        UR                  [        U5      5        [        =R                  S-  sl	        TR                  SR                  U5      5         S[        l        U$ ! S[        l        f = f!   [        R                  " 5       u  pxn	UR                  S5        UR                  n
U
S:w  a"  UR                  U
5        UR                  S5        UR                  UR                  5        UR                   (       aT  UR                  S	5        UR                  S
R                  S UR                    5       5      5        UR                  S5        e UR                  S5        e = f! [        =R                  S-  sl	        TR                  SR                  U5      5        f = f! S[        l        f = f)NTr      Fz -> z => exception thrown
	raise r   r   r6   r4   c              3   8   #    U  H  n[        U5      v   M     g 7fN)r1   ).0vs     r   	<genexpr>>dotrace.<locals>.decorator.<locals>.wrapper.<locals>.<genexpr>z   s     2OJq477Js   r7   z())isEnabledForloggingINFOrA   r
   r*   rN   infor#   r   r"   r1   sysexc_infor   r   r    )r    rC   rB   ftyperL   rM   resulttyper.   	tracebackmnamer$   loggerr%   s              r   wrapper+dotrace.<locals>.decorator.<locals>.wrapper]   s   &&w||44T*T**-dD$?LE$$",UD$E0KK/JJ!OJ7/*/CK%)4%84%8F*.CK" "-!LL0!LLf6JJ!OJKK/#M3 +/CK14.Y%EF $ J.!LL/!LL-T]]3 ::!LL-!LL2OEJJ2O)OP!LL-  "LL. JJ!OJKK/#sO   I? .9I )D= <E .I 69I? =E

E C1H>>I ;I<<I? ?Jc                     U $ rV   r   )xs    r   <lambda>,dotrace.<locals>.decorator.<locals>.<lambda>   s    1r   T)r\   	getLoggerrc   classmethod__get____func__staticmethodpropertyNotImplementedErrorinspectgetfullargspecr   )r$   rg   rb   rewraprf   r%   s   `   @@r   	decoratordotrace.<locals>.decoratorY   s    ""7++	\  :$$ZF<<%..D$Z<'$ZF<<%D$Z8#%%%%d+eDk'*++r   r   N)NNN)getr   rs   rt   ismodule
getmembers
isfunctionsetattrisclassdotracecallablerc   rn   rq   rr   fgetfsetfdel)r    rC   rP   rw   arg0nrJ   cpgetpsetpdels              r   r   r   J   s     e,IB,H t9 a(DD!! ~~d\'BB	dx	 ,D99TYY'D99TYY'D99TYY'DD)) r   c                      S n[        U 5      =(       a    U S   =(       d    Sn[        U5      (       d  [        U5      [        [        4;   a  U" U5      $ U$ )z)Just a no-op in case tracing is disabled.c                     U $ rV   r   )r$   s    r   rw   notrace.<locals>.decorator   s    r   r   N)r   r   rc   rn   rq   )r    rC   rw   r   s       r   notracer      sG    t9 a(DD~~d\'BBr   c                     S[         R                  S-  U /n [        R                  " S5      nUR	                  SR                  U 5      5        g )Nz== r5   rR   r   )rA   r   r\   rm   r^   r#   )msgrf   s     r   doeventr      s;    #**s"C
(Cw'F
KKr   c                     g rV   r   )r   s    r   noeventr      s    r   rR   )r\   r_   types	threadingrt   	functoolsr   	itertoolsr   
numba.corer   localr   rA   r*   r1   rN   r   r   r   r   TRACErm   rf   setLevelr]   StreamHandlerhandlersrR   eventr   r   r   <module>r      s     
      )//  
e>"qf	
	 
<<w'F
OOGLL!,,./FOEEEEr   