§
    1@ÄjØ  ã                   óN  — 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    úCC:\Projects\Historical\venv\Lib\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-   6   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>E   s.   ø€ ÐBÐBÐB°1˜Q˜Q˜Q §
¢
¨1¡¤ Ð.ÐBÐBÐBr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )Ústr)r3   r4   s     r   r6   z!create_events.<locals>.<listcomp>F   s   € Ð9Ð9Ð9˜A•�Q‘”Ð9Ð9Ð9r   c                 ó*   •— g | ]}|›d ‰|         ›�‘ŒS r0   r   )r3   Úkr5   s     €r   r6   z!create_events.<locals>.<listcomp>G   s(   ø€ ÐHÐHÐH¨Q˜1˜1˜1˜f Qœi˜iÐ(ÐHÐHÐHr   ú, c                 ó   — g | ]}|¯|‘ŒS r   r   )r3   Úfs     r   r6   z!create_events.<locals>.<listcomp>H   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   ?   s[  ø€ Ý‰VŒV€FØ„}ð LÝ•c˜$œ)¥S¨¬Ñ%7Ô%7Ð$7Ð$9Ð$9Ô:¸D¼MÑJÔJÑKÔKˆØ
‡M‚M�$ÑÔÐØ
‡M‚M•$•s˜4œ9 [¥s¨4¡y¤y [Ô1°4Ñ8Ô8Ñ9Ô9Ñ:Ô:Ð:ØBÐBÐBÐB¸¼	ÐBÑBÔB€JØ9Ð9 ¥c¨*¡o¤oÐ&7Ð&7Ô!8Ð9Ñ9Ô9€IØHÐHÐHÐHµ&¸¿º¹¼Ñ2GÔ2GÐHÑHÔH€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          ¦  «        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„ }t          ‰ t          ¦  «        r*t	          ‰ ¦  «        }‰                      d¦  «        j        Š nVt          ‰ t          ¦  «        r%t	          ‰ ¦  «        }‰                      d¦  «        Š nt          ‰ t          ¦  «        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>€   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>.wrapperc   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]   Ú	getLoggerÚ
isinstanceÚclassmethodrd   Ú__get__Ú__func__ÚstaticmethodÚpropertyÚNotImplementedErrorÚinspectÚgetfullargspecr   )r    rh   Úrewraprg   r!   s   `  @@r   Ú	decoratorzdotrace.<locals>.decorator_   sô   øøø€ ØˆÝÔ" 7Ñ+Ô+ˆð+	ð +	ð +	ð +	ð +	ð +	ð +	ð^ �ˆõ �d�KÑ(Ô(ð 		&Ý˜$‘Z”ZˆFà—<’< Ñ%Ô%Ô.ˆDˆDÝ˜�lÑ+Ô+ð 	&Ý˜$‘Z”ZˆFà—<’< Ñ%Ô%ˆDˆDÝ˜�hÑ'Ô'ð 	&Ý%Ð%åÔ% dÑ+Ô+ˆØˆv�k•e˜D‘k”k 'Ñ*Ô*Ñ+Ô+Ð+r   r   Nc                 óR   — t          j        | ¦  «        pt          j        | ¦  «        S rY   )ru   Ú
isfunctionÚismethodrj   s    r   rl   zdotrace.<locals>.<lambda>®   s!   € ¥Ô!3°AÑ!6Ô!6Ð!M½'Ô:JÈ1Ñ:MÔ:M€ r   )NNN)Úgetr   rt   ru   ÚismoduleÚ
getmembersrz   ÚsetattrÚisclassÚdotraceÚcallablerd   ro   rr   rn   rs   ÚfgetÚfsetÚfdel)r   rJ   rS   rx   Úarg0Únr=   ÚcÚpgetÚpsetÚpdels              r   r�   r�   O   s  € ð —’˜ eÑ,Ô,€IðB,ð B,ð B,õH ˆt‰9Œ9Ð ˜˜aœÐ( D€Dàð /Ý!Ð!õ ��~„~ð �˜d™œ­µ\Ð'BÐBÐBØˆy˜‰ŒÐÝ	�D�(Ñ	#Ô	#ð ð ,Ñˆˆ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   rx   znotrace.<locals>.decoratorÇ   s   € Øˆr   r   N)r   r‚   rd   ro   rr   )r   rJ   rx   r†   s       r   ÚnotracerŽ   Ä   sc   € ðð ð õ ˆ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   )ru   r]   r`   Ú	threadingÚ	functoolsr   Ú	itertoolsr   Ú
numba.corer   Úlocalr   rH   r&   r-   rQ   r�   rŽ   r‘   r“   ÚTRACErm   rg   ÚsetLevelr^   ÚStreamHandlerÚhandlersrU   Úeventr   r   r   ú<module>rž      sl  ðØ €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ðð ð ð ð ˆ)Œ/ñ ô ð ð 
€c�e„e€ðð ð ð@ð ð ðð ð ð rð rð rðjð ð ðð ð ð	ð 	ð 	ð 
„<ð ØˆWÔ˜wÑ'Ô'€FØ
‡O‚O�G”LÑ!Ô!Ð!Ø,�wÔ,Ñ.Ô.Ð/€F„OØ€EØ€E€E€Eà€EØ€E€E€Er   