§
    ƒÛgõ  ã                   ó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    úH/granary/edev/quantum/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        }|rŠg }|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Øð 	!Ø”ˆˆõ 
ˆTŒY‰Œð !˜DœI aœL¨FÒ2Ð2Ø�Q”Ô!Ô*ˆˆå	ˆTŒY‰Œð !˜DœI aœL¨EÒ1Ð1Ø�Q”Ô ˆØð 	ØˆØð 	�f 
Ò*Ð*Ø�LŠL˜Ñ Ô Ð Ø�LŠL˜ÑÔÐØð 	Ø�LŠL˜ÑÔÐØ�LŠL˜ÑÔÐØ�Š�TÑÔÐØ�wŠw�u‰~Œ~ˆØ�ˆ:Ð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Ý
ˆ1�v„v�ÒÐØ��(�Œ|˜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.   ø€ Ð@Ð@Ð@°˜1˜1˜1˜fŸjšj¨™mœm˜mÐ,Ð@Ð@Ð@r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )Ústr)r3   r4   s     r   r6   z!create_events.<locals>.<listcomp>A   s   € Ð8Ð8Ð8˜A•�Q‘”Ð8Ð8Ð8r   c                 ó*   •— g | ]}|›d ‰|         ›�‘ŒS r0   r   )r3   Úkr5   s     €r   r6   z!create_events.<locals>.<listcomp>B   s(   ø€ ÐFÐFÐF¨1˜˜˜˜F 1œI˜IÐ&ÐFÐFÐFr   ú, c                 ó   — g | ]}|¯|‘ŒS r   r   )r3   Úfs     r   r6   z!create_events.<locals>.<listcomp>C   s   € ÐOÐOÐO˜aÈQÐ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[  ø€ å‰VŒV€FØ„}ð JÝ•c˜$œ)¥S¨¬Ñ%7Ô%7Ð$7Ð$8Ð$8Ô9¸$¼-ÑHÔHÑIÔIˆØ
‡M‚M�$ÑÔÐØ
‡M‚M•$•s˜4œ9 Z¥c¨$¡i¤i ZÔ0°$Ñ7Ô7Ñ8Ô8Ñ9Ô9Ð9Ø@Ð@Ð@Ð@°d´iÐ@Ñ@Ô@€JØ8Ð8 ¥c¨*¡o¤oÐ&6Ð&6Ô!7Ð8Ñ8Ô8€IØFÐFÐFÐFµ°v·{²{±}´}Ñ0EÔ0EÐFÑFÔF€HØ�YŠYÐOÐO¥5¨°YÀÑ#IÔ#IÐOÑOÔOÑPÔP€Fà•C”J Ñ$ e¨S°&¸#Ð>€EØ•C”J Ñ$ 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 )zàFunction 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(   è è € Ð2OÐ2O¸qµ4¸±7´7Ð2OÐ2OÐ2OÐ2OÐ2OÐ2Or   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ð +½¼ð +Ø�t˜TÐ* TÐ*Ð*Ð*å-¨d°D¸$Ñ?Ô?‰LˆE�5ð$$Ø"•”Ý,¨U°D¸$ÀÑEÔE‘��uð0Ø—K’K §¢¨¡¤Ñ/Ô/Ð/Ý�J”J !‘O�J”Jð7ð/Ø*/�CœKØ%) T¨4Ð%8°4Ð%8Ð%8˜Fà*.�CœK˜Kø¨$�CœKÐ.Ð.Ð.Ð.˜Kð" "Ð-Ø!ŸLšL¨Ñ0Ô0Ð0Ø!ŸLšL­¨f©¬Ñ6Ô6Ð6ùøð%Ý14´±´Ñ.˜˜e YØŸšÐ%EÑFÔFÐFØ $¤˜Ø  JÒ.Ð.Ø!ŸLšL¨Ñ/Ô/Ð/Ø!ŸLšL¨Ñ-Ô-Ð-ØŸš T¤]Ñ3Ô3Ð3Ø œ:ð /Ø!ŸLšL¨Ñ-Ô-Ð-Ø!ŸLšL¨¯ªÐ2OÐ2OÀEÄJÐ2OÑ2OÔ2OÑ)OÔ)OÑPÔPÐPØ!ŸLšL¨Ñ-Ô-Ð-Ð-à!ŸLšL¨Ñ.Ô.Ð.Øøøøõ �J”J !‘O�J”JØ—K’K §¢¨¡¤Ñ/Ô/Ð/Ð/øõ �J”J !‘O�J”JØ—K’K §¢¨¡¤Ñ/Ô/Ð/Ð/øøøÐ/à#•”�ø˜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Ñ+Ô+ˆð+	ð +	ð +	ð +	ð +	ð +	ð +	ð\ ˆØ�ˆõ �‰:Œ:�Ò$Ð$Ý˜$‘Z”ZˆFà—<’< Ñ%Ô%Ô.ˆDˆDÝ�$‰ZŒZ�<Ò'Ð'Ý˜$‘Z”ZˆFà—<’< Ñ%Ô%ˆDˆDÝ�$‰ZŒZ�8Ò#Ð#Ý%Ð%åÔ% dÑ+Ô+ˆØˆv�k•e˜D‘k”k 'Ñ*Ô*Ñ+Ô+Ð+r   r   Nc                 óR   — t          j        | ¦  «        pt          j        | ¦  «        S rY   )rt   Ú
isfunctionÚismethodrj   s    r   rl   zdotrace.<locals>.<lambda>§   s(   € ½GÔ<NÈqÑ<QÔ<Qð =PÝ<CÔ<LÈQÑ<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 ˆt‰9Œ9Ð ˜˜aœÐ( D€Dàð 
/Ý!Ð!õ ��~„~ð �˜d™œ­µ\Ð'BÐBÐBØˆy˜‰ŒÐÝ	ˆd‰Œ•xÒ	Ð	ð ,Ñˆˆd�DØŒ9ð 	(Ø�9˜TœYÑ'Ô'ˆDØŒ9ð 	(Ø�9˜TœYÑ'Ô'ˆDØŒ9ð 	(Ø�9˜TœYÑ'Ô'ˆDÝ˜˜d DÑ)Ô)Ð)ð Ð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   € ðð ð åˆt‰9Œ9Ð ˜˜aœÐ( D€Då��~„~ð �˜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Ø
‡K‚K�—’˜‘”ÑÔÐÐÐ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  ðØ €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ˆ)Œ/ñ ô ð ð 
€c�e„e€ðð ð ð>ð ð ðð ð ð"qð qð qðf	ð 	ð 	ðð ð ð
	ð 	ð 	ð 
„<ð ØˆWÔ˜wÑ'Ô'€FØ
‡O‚O�G”LÑ!Ô!Ð!Ø,�wÔ,Ñ.Ô.Ð/€F„OØ€EØ€E€E€Eà€EØ€E€E€Er   