ó
    6°h*  ã                  ó
  • S SK Jr  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
JrJrJrJr  S r\R                   S 5       r\R                   S 5       r\R                   S	 5       r\R                   S
 5       r " S S5      rg)é    )ÚannotationsNé   )Ú_)ÚencodingÚerrorÚ
extensionsÚpycompatÚutilc                ó˜   • Un[         R                  " X/S9   [         R                  " U5      n[        USS5      $ ! [         a     gf = f)zBload profiler extension. return profile method, or None on failure)Ú	whitelistÚprofileN)r   ÚloadallÚfindÚgetattrÚKeyError)ÚuiÚprofilerÚextnameÚmods       Ú5/usr/lib/python3/dist-packages/mercurial/profiling.pyÚ_loadprofilerr      sO   € à€GÜ×Ò�r YÒ/ð-Ü�oŠo˜gÓ&ˆô �s˜I tÓ,Ð,øô ó Ùðús   ™< ¼
A	ÁA	c              #  óÒ  #   • U R                  SS5      nU R                  SS5      nU R                  SS5      nU R                  SS5      nUS;  a  U R                  [        S5      U-  5        Sn S	S
KJn  UR                  5       n UR                  SS9   S v •  UR)                  5         US:X  a)  S	SKJn  UR-                  U5      nUR/                  U5        OTUR1                  UR3                  5       5      nUR5                  [6        R8                  " U5      5        UR;                  XAUS9  UR=                  5         g ! [         a     [        R                  " [        S5      5      ef = f! [         aÅ  n[        U5      S:w  a  e [        [        S5      (       d  e [        R                  R!                  [        R                  R"                  5      n	U	S:X  a  Sn
[        R                  " U
5      S eSnU	(       a  [$        R&                  " U	5      nSn[        R                  " [        U5      U-  5      S eS nAff = f! UR)                  5         US:X  a)  S	SKJn  UR-                  U5      nUR/                  U5        OTUR1                  UR3                  5       5      nUR5                  [6        R8                  " U5      5        UR;                  XAUS9  UR=                  5         f = f7f)Nó	   profilings   formats   sorts   limits   nested)ó   textó   kcachegrinds-   unrecognized profiling format '%s' - Ignored
r   r   )ÚlsprofsY   lsprof not available - install from http://codespeak.net/svn/user/arigo/hack/misc/lsprof/T)Úsubcallsz(Another profiling tool is already activeÚ
monitoringÚcProfiles    cannot recursively call `lsprof`s	   <unknown>sA   failed to start "lsprofile"; another profiler already running: %sr   )Úlsprofcalltree)ÚlimitÚfileÚclimit)ÚconfigÚ	configintÚwarnr   Ú r   ÚImportErrorr   ÚAbortÚProfilerÚenableÚ
ValueErrorÚstrÚhasattrÚsysr   Úget_toolÚPROFILER_IDr   Ú
strtolocalÚdisabler    ÚKCacheGrindÚoutputÚStatsÚgetstatsÚsortr	   ÚsysstrÚpprintÚflush)r   ÚfpÚformatÚfieldr!   r#   r   ÚpÚexcÚother_tool_nameÚmsgÚtoolÚmr    ÚcalltreeÚstatss                   r   Ú	lsprofilerG   &   s[  é € à�Y‰Y�| YÓ/€FØ�I‰I�l GÓ,€EØ�L‰L˜ xÓ0€EØ�\‰\˜,¨	Ó2€FàÐ.Ó.Ø
�‰”ÐCÓDÀvÑMÔNØˆð
Ýð 	�‰Ó€Að5Ø	�‰˜$ˆÑð&Ûà	�	‰	Œà�^Ó#Ý(à%×1Ñ1°!Ó4ˆHØ�O‰O˜BÕð —L‘L §¡£Ó.ˆEØ�J‰J”x—’ uÓ-Ô.Ø�L‰L˜u°fˆLÑ=Ø
�‰�
øôW ó 
Ü�kŠkÜðIóó
ð 	
ð
ûô ó 5Üˆs‹8ÐAÓAØÜ”s˜L×)Ñ)Øô Ÿ.™.×1Ñ1´#·.±.×2LÑ2LÓMˆØ˜jÓ(Ø5ˆCÜ—+’+˜cÓ"¨Ð,àˆDÞÜ×*Ò*¨?Ó;�ØTˆAÜ—+’+œa ›d T™kÓ*°Ð4ûð#5ûð* 	
�	‰	Œà�^Ó#Ý(à%×1Ñ1°!Ó4ˆHØ�O‰O˜BÕð —L‘L §¡£Ó.ˆEØ�J‰J”x—’ uÓ-Ô.Ø�L‰L˜u°fˆLÑ=Ø
�‰�
üsW   ‚A.K'Á1E  Á7K'ÂE- ÂH? ÂB$K'Å *E*Å*K'Å-
H<Å7C H7È7H<È<K'È?B%K$Ë$K'c           	   #  óÂ  #   •  SSK J n  U R                  SS5      nS nSnUR                  USU-  XE5      n[        R                  " 5       n UR                  5         S v •  UR                  5         UR                  5         SnU[        R                  " 5       U-
  UR                  5       UR                  SS	944-  n[        USS
9  g ! [         a     [        R                  " [	        S5      5      ef = f! UR                  5         UR                  5         SnU[        R                  " 5       U-
  UR                  5       UR                  SS	944-  n[        USS
9  f = f7f)Nr   )Ú
flamegraphsW   flamegraph not available - install from https://github.com/evanhempel/python-flamegraphr   ó   freqTg      ð?s7   Collected %d stack frames (%d unique) in %2.2f seconds.)Úunique)r;   )rI   r(   r   r)   r   r%   ÚProfileThreadr
   ÚtimerÚstartÚstopÚjoinÚ
num_framesÚprint)	r   r<   rI   ÚfreqÚfilter_Úcollapse_recursionÚthreadÚ
start_timerD   s	            r   ÚflameprofilerX   a   sY  é € ð
Ý)ð �<‰<˜ gÓ.€DØ€GØÐØ×%Ñ%Ø
ˆC�$‰J˜ó€Fô —’“€JðØ�‰ŒÛà�‰ŒØ�‰ŒØFˆØ	ä—
’
“˜zÑ)Ø×!Ñ!Ó#Ø×!Ñ!¨Ð!Ð.ðð
ñ 	
ˆô 	ˆa�tÓøô; ó 
Ü�kŠkÜðCóó
ð 	
ð
ûð& 	�‰ŒØ�‰ŒØFˆØ	ä—
’
“˜zÑ)Ø×!Ñ!Ó#Ø×!Ñ!¨Ð!Ð.ðð
ñ 	
ˆô 	ˆa�tÓüs6   ‚E„C ŠAEÁC4 Á A'EÃ*C1Ã1EÃ4A(EÅEc              #  ó  #   • SSK Jn  U R                  SS5      nUS:”  a,  UR                  R                  S:X  a  UR                  U5        OU R                  [        S5      U-  5        U R                  SS[        R                  =(       a    S=(       d    S	5      nUR                  S
US9   S v •  UR                  5       nU R                  SS5      nUR                  R                  UR                  R                  UR                  R                   UR                  R"                  UR                  R$                  S.nXg;   a  Xv   nO3U R                  [        S5      U-  5        UR                  R                   n0 n	S n
US:X  a7  U R'                  U
SSS5      nU R'                  U
SS5      nU	R)                  X¼S9  O4US:X  a.  U R'                  U
SSS5      nXÙS'   U R+                  SS5      nXéS'   UR,                  " U4XXS.U	D6  UR/                  5         g ! UR                  5       nU R                  SS5      nUR                  R                  UR                  R                  UR                  R                   UR                  R"                  UR                  R$                  S.nXg;   a  Xv   nO3U R                  [        S5      U-  5        UR                  R                   n0 n	S n
US:X  a7  U R'                  U
SSS5      nU R'                  U
SS5      nU	R)                  X¼S9  O4US:X  a.  U R'                  U
SSS5      nXÙS'   U R+                  SS5      nXéS'   UR,                  " U4XXS.U	D6  UR/                  5         f = f7f)Nr   )Ústatprofr   rJ   r   s+   invalid sampling frequency '%s' - ignoring
s
   time-tracks   cpus   reals   thread)Ú	mechanismÚtracks
   statformat)s   bylines   bymethodó   hotpaths   jsonó   chromes#   unknown profiler output format: %s
c                óì   • [        U [        [        45      (       a  [        U 5      $ U R                  S5      (       a  [        U S S 5      S-  nO[        U 5      nSUs=::  a  S::  a   U$   [	        U 5      e)Nó   %éÿÿÿÿéd   r   r   )Ú
isinstanceÚfloatÚintÚendswithr,   )ÚsÚvs     r   ÚfractionÚstatprofile.<locals>.fraction­   sg   € Ü˜!œe¤S˜\×*Ñ*Ü˜Q“x�Ø�z‰z˜$×ÑÜ˜!˜C˜R˜&“M CÑ'‘ä˜!“H�Ø�A�{˜Œ{Ø�ð ä˜Q“-Ðó    r^   s   showming{®Gázt?s   showmax)ÚminthresholdÚmaxthresholdr]   gš™™™™™©?r!   s   showtimeÚshowtime)Údatar=   )r'   rZ   r%   ÚstateÚprofile_levelÚresetr&   r   r$   r	   Ú	iswindowsrN   rO   ÚDisplayFormatsÚByLineÚByMethodÚHotpathÚJsonÚChromeÚ
configwithÚupdateÚ
configboolÚdisplayr;   )r   r<   rZ   rS   r\   ro   Ú
profformatÚformatsÚdisplayformatÚkwargsri   ÚshowminÚshowmaxr!   rn   s                  r   Ústatprofiler„   …   s.  é € åà�<‰<˜ gÓ.€DØˆaƒxà�>‰>×'Ñ'¨1Ó,Ø�N‰N˜4Ô øà
�‰”ÐAÓBÀTÑIÔJà�I‰IØ�m¤X×%7Ñ%7×%B¸F×%MÀgó€Eð ‡N�N˜Y¨e€NÑ4ð.Ûà�}‰}‹ˆà—Y‘Y˜|¨]Ó;ˆ
ð  ×.Ñ.×5Ñ5Ø!×0Ñ0×9Ñ9Ø ×/Ñ/×7Ñ7Ø×,Ñ,×1Ñ1Ø×.Ñ.×5Ñ5ñ
ˆð Ó Ø#Ñ/‰Mà�G‰G”AÐ=Ó>ÀÑKÔLØ$×3Ñ3×;Ñ;ˆMàˆò		 ð ˜Ó"Ø—m‘m H¨l¸JÈÓNˆGØ—m‘m H¨l¸JÓGˆGØ�M‰M wˆMÒEØ˜:Ó%à—M‘M (¨L¸*ÀdÓKˆEØ#�7‰OØ—}‘} \°;Ó?ˆHØ!)�:Ñà×Ò˜ÐG $ÑGÀÒGØ
�‰�
øðW �}‰}‹ˆà—Y‘Y˜|¨]Ó;ˆ
ð  ×.Ñ.×5Ñ5Ø!×0Ñ0×9Ñ9Ø ×/Ñ/×7Ñ7Ø×,Ñ,×1Ñ1Ø×.Ñ.×5Ñ5ñ
ˆð Ó Ø#Ñ/‰Mà�G‰G”AÐ=Ó>ÀÑKÔLØ$×3Ñ3×;Ñ;ˆMàˆò		 ð ˜Ó"Ø—m‘m H¨l¸JÈÓNˆGØ—m‘m H¨l¸JÓGˆGØ�M‰M wˆMÒEØ˜:Ó%à—M‘M (¨L¸*ÀdÓKˆEØ#�7‰OØ—}‘} \°;Ó?ˆHØ!)�:Ñà×Ò˜ÐG $ÑGÀÒGØ
�‰�
üs    ‚B+NÂ.H Â2E'NÈE(NÎNc           	   #  óÈ  #   • U R                  SS5      nU R                  SS5      nU R                  SS5      nUR                  5       nSU-  n[        R                  " 5       nUSS[        U5      SS	[        U5      S
U/	nU(       a  UR                  SU/5        [        R                  " UU1[        R                  S9n	U	R                  R                  5       n
 S v •  [        R                  " U	R                  [        R                  5        U	R!                  5         g ! [        R                  " U	R                  [        R                  5        U	R!                  5         f = f7f)Nr   s
   py-spy.exes   py-spy.freqs   py-spy.formatz
/dev/fd/%dÚrecordz--pidz--nativez--ratez--outputz--format)Úpass_fdsÚstdout)r$   r%   ÚfilenoÚosÚgetpidr-   ÚextendÚ
subprocessÚPopenÚPIPErˆ   ÚreadlineÚkillÚpidÚsignalÚSIGINTÚcommunicate)r   r<   ÚexerS   r=   ÚfdÚoutput_pathÚmy_pidÚcmdÚprocr   s              r   Úpyspy_profilerœ   Ç   s  é € à
�)‰)�L -Ó
0€Cà�<‰<˜ nÓ5€Dà�Y‰Y�|Ð%5Ó6€Fà	�‰‹€Bà "Ñ%€Kä�YŠY‹[€Fð 	ØØÜˆF‹ØØÜˆD‹	ØØð
€Cö Ø�
‰
�J Ð'Ô(ä×ÒØØ�Ü�‰ñ€Dð 	�‰×ÑÓ€AðÛä
�Š�—‘œ&Ÿ-™-Ô(Ø×ÑÕøô 	�Š�—‘œ&Ÿ-™-Ô(Ø×ÑÕüs    ‚CE"ÃD ÃA E"ÄAEÅE"c                  ó@   • \ rS rSrSrSS jrS rS rS rS r	S r
S	rg
)r   éó   z¦Start profiling.

Profiling is active when the context manager is active. When the context
manager exits, profiling results will be written to the configured output.
c                ó~   • Xl         S U l        S U l        SU l        S U l        S U l        X l        SU l        SU l        g )NTF)	Ú_uiÚ_outputÚ_fpÚ
_fpdocloseÚ_flushfpÚ	_profilerÚ_enabledÚ_enteredÚ_started)Úselfr   Úenableds      r   Ú__init__Úprofile.__init__ú   s=   € ØŒØˆŒØˆŒØˆŒØˆŒØˆŒØŒØˆŒØˆ�rk   c                óV   • SU l         U R                  (       a  U R                  5         U $ )NT)r§   r¦   rN   ©r©   s    r   Ú	__enter__Úprofile.__enter__  s   € ØˆŒØ�=�=Ø�J‰JŒLØˆrk   c                ó°  • U R                   (       d  [        R                  " S5      eU R                  (       a  gSU l        [        R
                  R                  S5      nSnUc  U R                  R                  SS5      nUS;  aB  [        U R                  U5      nUc)  U R                  R                  [        S5      U-  5        S	nU R                  R                  SS
5      U l         U R                  S:X  a  [        R                  " 5       U l        O¾U R                  (       a2  [        R                   " U R                  5      n[#        US5      U l        O{[$        R&                  (       a)   " S S5      nSU l        U" U R                  5      U l        O=SU l        U R                  R*                  U l        U R                  R,                  U l        Ub  O-US:X  a  [0        nO US:X  a  [2        nOUS:X  a  [4        nO[6        nU" U R                  U R                  5      U l        U R8                  R;                  5         g!   U R=                  5         e = f)zxStart profiling.

The profiling will stop at the context exit.

If the profiler was already started, this has no effect.s   use a context manager to startNTs   HGPROFr   s   type)ó   lsó   stató   flameó   py-spys%   unrecognized profiler '%s' - ignored
r³   s   outputó   blackboxÚwbc                  ó&   • \ rS rSrS rS rS rSrg)Úprofile.start.<locals>.uifpi-  c                ó   • Xl         g ©N©r    )r©   r   s     r   r«   Ú$profile.start.<locals>.uifp.__init__.  s   € Ø#%�rk   c                ó:   • U R                   R                  U5        g r»   )r    Ú	write_err)r©   ro   s     r   ÚwriteÚ!profile.start.<locals>.uifp.write1  s   € ØŸ™×*Ñ*¨4Õ0rk   c                ó8   • U R                   R                  5         g r»   )r    r;   r®   s    r   r;   Ú!profile.start.<locals>.uifp.flush4  s   € ØŸ™Ÿ™Õ(rk   r¼   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r«   rÀ   r;   Ú__static_attributes__© rk   r   Úuifpr¹   -  s   † ò&ò1õ)rk   rÊ   Fr²   r´   rµ   )r§   r   ÚProgrammingErrorr¨   r   ÚenvironÚgetr    r$   r   r&   r   r¡   r
   Ústringior¢   Ú
expandpathÚopenr	   rs   r£   ÚferrÚfoutr¤   rG   rX   rœ   r„   r¥   r¯   Ú_closefp)r©   r   ÚproffnÚpathrÊ   s        r   rN   Úprofile.start  s¿  € ð �}�}Ü×(Ò(Ð)JÓKÐKØ�=�=ØØˆŒÜ×#Ñ#×'Ñ'¨	Ó2ˆØˆØÑØ—x‘x—‘ |°WÓ=ˆHØÐ@Ó@ä" 4§8¡8¨XÓ6ˆFØ‰~Ø—‘—‘ÜÐ?Ó@À8ÑKôð #�à—x‘x—‘ |°YÓ?ˆŒð)	Ø�|‰|˜{Ó*ÜŸ=š=›?�•Ø——Ü—’ t§|¡|Ó4�Ü  dÓ+�•Ü×#×#÷)ñ )ð #(�”Ù §¡›>�•à"'�”ØŸ8™8Ÿ=™=�”à $§¡§¡�”àÑ!ØØ˜UÓ"Ü"‘Ø˜XÓ%Ü%‘Ø˜YÓ&Ü&‘ä$�á# D§H¡H¨d¯h©hÓ7ˆDŒNØ�N‰N×$Ñ$Õ&øð	Ø�M‰MŒOØús   Ã+EI ÉIc                ó˜  • S nU R                   bª  U R                  5         U R                   R                  XU5      nU R                  S:X  an  U R                  n[        U[        R                  5      (       d   eSUR                  5       -  nUR                  SS5      nU R                  R                  SU5        U R                  5         U$ )Nr¶   s   Profile:
%sr`   s   %%s   profile)r¥   Ú_uiflushÚ__exit__r¡   r¢   rc   r
   rÎ   ÚgetvalueÚreplacer    ÚlogrÓ   )r©   Úexception_typeÚexception_valueÚ	tracebackÚ	propagater<   Úvals          r   rÙ   Úprofile.__exit__P  s¤   € Øˆ	Ø�>‰>Ñ%Ø�M‰MŒOØŸ™×/Ñ/Ø°óˆIð �|‰|˜{Ó*Ø—X‘X�ä! "¤d§m¡m×4Ñ4Ð4Ð4Ø%¨¯©«Ñ5�ð —k‘k $¨Ó.�Ø—‘—‘˜Z¨Ô-Ø�‰ŒØÐrk   c                óx   • U R                   (       a)  U R                  b  U R                  R                  5         g g g r»   )r£   r¢   Úcloser®   s    r   rÓ   Úprofile._closefpc  s'   € Ø�?�?˜tŸx™xÑ3Ø�H‰H�N‰NÕð  4ˆ?rk   c                ó\   • U R                   (       a  U R                   R                  5         g g r»   )r¤   r;   r®   s    r   rØ   Úprofile._uiflushg  s   € Ø�=�=Ø�M‰M×ÑÕ!ð rk   )	r¦   r§   r¤   r¢   r£   r¡   r¥   r¨   r    N)T)rÄ   rÅ   rÆ   rÇ   Ú__doc__r«   r¯   rN   rÙ   rÓ   rØ   rÈ   rÉ   rk   r   r   r   ó   s'   † ñô	òòCòJò&õ"rk   r   )Ú
__future__r   Ú
contextlibrŠ   r“   r�   r/   Úi18nr   r'   r   r   r   r	   r
   r   ÚcontextmanagerrG   rX   r„   rœ   r   rÉ   rk   r   Ú<module>rí      s£   ðõ #ã Û 	Û Û Û 
å ÷õ ò	-ð ×Ññ7ó ð7ðt ×Ññ ó ð ðF ×Ññ>ó ð>ðB ×Ññ(ó ð(÷Vv"ò v"rk   