
    J/Ph                     V   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
  G d dej                  Z e            Zd Zd Zd	 Zd
 Zd Zd Zd Ze
j        rE e j        d          Ze                    e j                    e j                    ge_        eZeZdS eZeZdS )    N)wraps)chain)configc                       e Zd ZdZd ZdS )TLSzGUse a subclass to properly initialize the TLS variables in all threads.c                 "    d| _         d| _        d S )NFr   )tracingindent)selfs    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/core/tracing.py__init__zTLS.__init__   s        N)__name__
__module____qualname____doc__r    r   r   r   r   
   s)        QQ    r   r   c                 t   t          | dd          }t          | dd          }t          | dd          }d}|r|j        }njt          |j                  r$|j        d         dk    r|d         j        j        }n2t          |j                  r|j        d         dk    r|d         j        }|rg }|r0|dk    r*|                    |           |                    d	           |r*|                    |           |                    d	           |                    |           d
                    |          }|dfS )z7Return 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&      sF   
 T<..F4T**D4T**DE 	! 
TY !DIaLF22Q!*	TY !DIaLE11Q  	 	f
**LL   LL 	LLLLTwwu~~:r   c                 z    d}t          |           }t          |          |k    r|d |         dz   |d         z   S |S )Ni@  z...)reprr   )valueMAX_SIZEss      r   chopr-   1   sD    HUA
1vv(|e#ae++r   c                   
 t                      
|j        rBt          t          |j        t	          |j                   d          |j                            

                    |           
                    t          t          |j        d t	          |                   |                               
fd|j        D             }d |t	          |          d          D             }
fdt          
                                          D             }d	                    d t          |||          D                       }dt          j        dz  | d|d	g}d
t          j        dz  | g}	||	fS )Nc                 D    g | ]}|d                      |          S =)pop).0avaluess     r   
<listcomp>z!create_events.<locals>.<listcomp>@   s.    @@@111fjjmmm,@@@r   c                 ,    g | ]}t          |          S r   )str)r3   r4   s     r   r6   z!create_events.<locals>.<listcomp>A   s    888AQ888r   c                 *    g | ]}|d |         S r0   r   )r3   kr5   s     r   r6   z!create_events.<locals>.<listcomp>B   s(    FFF1F1II&FFFr   , c                     g | ]}||S r   r   )r3   fs     r   r6   z!create_events.<locals>.<listcomp>C   s    OOOaQOOOOr   z>>  ()z<< )dictdefaultszipr   r   updatelistsortedkeysr   r   tlsr
   )fnamer!   r   kwds
positional	anonymouskeywordsparamsenterleaver5   s             @r   create_eventsrQ   9   s[   VVF} Jc$)S%7%7$7$8$89$-HHII
MM$
MM$s49Zc$iiZ0$7788999@@@@di@@@J88c*oo&6&6!7888IFFFFv{{}}0E0EFFFHYYOO5Y#I#IOOOPPFCJ$eS&#>ECJ$e,E%<r   c                     |                     dd          }d }t          |           r| d         pd}|rt          t          |          st          |          t          t          fv r ||          S t          |          t          k    r\d\  }}	}
|j        r ||j                  }|j        r ||j                  }	|j        r ||j                  }
t          ||	|
          S |S )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                     d t          j        d           fd}d }d }t                     t          k    r*t                     }                     d          j         n\t                     t          k    r%t                     }                     d           nt                     t          k    rt          t          j
                    | t                     |                    S )Ntracec                  v                        t          j                  rt          j        r | i |S t          |           \  }}	 dt          _        t          || |          \  }}	                     d                    |                     t          xj	        dz  c_	        	 	 dt          _         | i |}dt          _        n# dt          _        w xY w	 |7|
                    d           |
                    t          |                     n#  t          j                    \  }}}	|
                    d           |j        }
|
dk    r*|
                    |
           |
                    d           |
                    |j                   |j        rb|
                    d	           |
                    d
                    d |j        D                                  |
                    d           n|
                    d            xY wt          xj	        dz  c_	                            d                    |                     nB# t          xj	        dz  c_	                            d                    |                     w xY w	 dt          _        n# dt          _        w xY w|S )NTr      Fz -> z => exception thrown
	raise r   r   r?   r;   c              3   4   K   | ]}t          |          V  d S N)r-   )r3   vs     r   	<genexpr>z>dotrace.<locals>.decorator.<locals>.wrapper.<locals>.<genexpr>z   s(      2O2Oq4772O2O2O2O2O2Or   r@   z())isEnabledForloggingINFOrH   r	   r&   rQ   infor   r
   r   r-   sysexc_infor   r   r   )r   rJ   rI   ftyperO   rP   resulttyper*   	tracebackmnamer    loggerr!   s              r   wrapperz+dotrace.<locals>.decorator.<locals>.wrapper]   s   &&w|44 + +tT*T***-dD$??LE5$$",UD$EEu0KK///JJ!OJJ7/*/CK%)T4%84%8%8F*.CKK$CK....K" "-!LL000!LLf666%14.eY%EFFF $ J..!LL///!LL---T]333 : /!LL---!LL2O2OEJ2O2O2O)O)OPPP!LL----!LL... JJ!OJJKK//// JJ!OJJKK/////#e####MsO   
!J( ,=I +C ?D CD ;I C>HI >J( ?JJ( (J6c                     | S rY   r   xs    r   <lambda>z,dotrace.<locals>.decorator.<locals>.<lambda>   s    1 r   T)r]   	getLoggerrd   classmethod__get____func__staticmethodpropertyNotImplementedErrorinspectgetfullargspecr   )r    rh   rc   rewraprg   r!   s   `   @@r   	decoratorzdotrace.<locals>.decoratorY   s    "7+++	 +	 +	 +	 +	 +	 +	\  ::$$$ZZF<<%%.DD$ZZ<''$ZZF<<%%DD$ZZ8##%%%d++vkeDkk'**+++r   r   Nc                 R    t          j        |           pt          j        |           S rY   )rt   
isfunctionismethodrj   s    r   rl   zdotrace.<locals>.<lambda>   s(    G<Nq<Q<Q =P<C<LQ<O<O r   )NNN)getr   rs   rt   ismodule
getmembersry   setattrisclassdotracecallablerd   rn   rq   rr   fgetfsetfdel)r   rJ   rS   rw   arg0nr=   cpgetpsetpdels              r   r   r   J   s    e,,IB, B, B,H t99 a(DD 
/!! ~~ d\'BBBy	dx		 ,dD9 	(9TY''D9 	(9TY''D9 	(9TY''DdD))) r   c                      d }t          |           r| d         pd}t          |          st          |          t          t          fv r ||          S |S )z)Just a no-op in case tracing is disabled.c                     | S rY   r   )r    s    r   rw   znotrace.<locals>.decorator   s    r   r   N)r   r   rd   rn   rq   )r   rJ   rw   r   s       r   notracer      sa      t99 a(DD~~ d\'BBByr   c                     dt           j        dz  | g} t          j        d          }|                    d                    |                      d S )Nz== r>   rU   r   )rH   r
   r]   rm   r_   r   )msgrg   s     r   doeventr      sG    #*s"C
(Cw''F
KKr   c                     d S rY   r   )r   s    r   noeventr      s    Dr   rU   )r]   r`   types	threadingrt   	functoolsr   	itertoolsr   
numba.corer   localr   rH   r&   r-   rQ   r   r   r   r   TRACErm   rg   setLevelr^   StreamHandlerhandlersrU   eventr   r   r   <module>r      st    



                            )/    
cee  >    "q q qf	 	 	  
	 	 	 
< Ww''F
OOGL!!!,w,../FOEEEEEEEEr   