ó
    F\ht  ã                   ó  • S r SS/rSSKrSSKrSSKrSSKrSSKrSSK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rSr " S S5      rS	 rS
 r " S S5      rS rS rSS jrS r " S S5      rS r\S:X  a  \" 5         gg)a·  program/module to trace Python program or function execution

Sample use, command line:
  trace.py -c -f counts --ignore-dir '$prefix' spam.py eggs
  trace.py -t --ignore-dir '$prefix' spam.py eggs
  trace.py --trackcalls spam.py eggs

Sample use, programmatically
  import sys

  # create a Trace object, telling it what to ignore, and whether to
  # do tracing or line-counting or both.
  tracer = trace.Trace(ignoredirs=[sys.base_prefix, sys.base_exec_prefix,],
                       trace=0, count=1)
  # run the new command using the given tracer
  tracer.run('main()')
  # make a report, placing output in /tmp
  r = tracer.results()
  r.write_results(show_missing=True, coverdir="/tmp")
ÚTraceÚCoverageResultsé    N)Ú	monotonicz#pragma NO COVERc                   ó$   • \ rS rSrSS jrS rSrg)Ú_IgnoreéE   Nc                 óÞ   • U(       d
  [        5       O
[        U5      U l        U(       d  / O/U Vs/ s H"  n[        R                  R	                  U5      PM$     snU l        SS0U l        g s  snf )Nz<string>é   )ÚsetÚ_modsÚosÚpathÚnormpathÚ_dirsÚ_ignore)ÚselfÚmodulesÚdirsÚds       Ú/usr/lib/python3.13/trace.pyÚ__init__Ú_Ignore.__init__F   sW   € Þ")”S”U¬s°7«|ˆŒ
Þ#‘RÙ37ó*9Ú37¨aô +-¯'©'×*:Ñ*:¸1Ö*=Ù37ñ*9ˆŒ
à# QÐ(ˆ�ùò*9s   ¯)A*c                 óÒ  • X R                   ;   a  U R                   U   $ X R                  ;   a  SU R                   U'   gU R                   H-  nUR                  US-   5      (       d  M  SU R                   U'     g   Uc  SU R                   U'   gU R                   H;  nUR                  U[        R
                  -   5      (       d  M,  SU R                   U'     g   SU R                   U'   g)Nr
   Ú.r   )r   r   Ú
startswithr   r   Úsep)r   ÚfilenameÚ
modulenameÚmodr   s        r   ÚnamesÚ_Ignore.namesL   sØ   € ØŸ™Ó%Ø—<‘< 
Ñ+Ð+ð Ÿ™Ó#Ø'(ˆD�L‰L˜Ñ$Øð —:”:ˆCð ×$Ñ$ S¨3¡Y×/Ó/Ø+,�—‘˜ZÑ(Ùñ ð Ñà'(ˆD�L‰L˜Ñ$Øð —”ˆAð ×"Ñ" 1¤r§v¡v¡:×.Ó.Ø+,�—‘˜ZÑ(Ùñ ð $%ˆ�‰�ZÑ Øó    )r   r   r   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r    Ú__static_attributes__© r"   r   r   r   E   s   † ô)õ)r"   r   c                 ó†   • [         R                  R                  U 5      n[         R                  R                  U5      u  p#U$ )ú,Return a plausible module name for the path.)r   r   ÚbasenameÚsplitext)r   Úbaser   Úexts       r   Ú_modnamer0   w   s3   € ô �7‰7×Ñ˜DÓ!€DÜ—G‘G×$Ñ$ TÓ*�M€HØ€Or"   c                 óâ  • [         R                  R                  U 5      nSn[        R                   Hx  n[         R                  R                  U5      nUR	                  U5      (       d  M:  U[        U5         [         R                  :X  d  M\  [        U5      [        U5      :”  d  Mv  UnMz     U(       a  U [        U5      S-   S nOU n[         R                  R                  U5      u  pTUR                  [         R                  S5      n[         R                  (       a   UR                  [         R                  S5      n[         R                  R                  U5      u  pgUR                  S5      $ )r+   Ú r
   Nr   )r   r   ÚnormcaseÚsysr   Úlenr   Ú
splitdriveÚreplaceÚaltsepr-   Úlstrip)r   ÚcomparepathÚlongestÚdirr.   Údriver   r/   s           r   Ú_fullmodnamer>   ~   s  € ô —'‘'×"Ñ" 4Ó(€KØ€GÜ�xŒxˆÜ�g‰g×Ñ˜sÓ#ˆØ×!Ñ! #×&Ó&¨;´s¸3³xÑ+@ÄBÇFÁFÕ+JÜ�3‹xœ#˜g›,Õ&Ø’ñ	 ö Ø”C˜“L 1Ñ$Ð%Ð&‰àˆä—'‘'×$Ñ$ TÓ*�K€EØ�<‰<œŸ™ Ó$€DÜ	‡y‡yØ�|‰|œBŸI™I sÓ+ˆÜ—G‘G×$Ñ$ TÓ*�M€HØ�?‰?˜3ÓÐr"   c                   óJ   • \ rS rSr  SS jrS rS rSSS.S jjrSS	 jrS
r	g)r   éš   Nc                 ó   • Xl         U R                   c  0 U l         U R                   R                  5       U l        X l        U R                  c  0 U l        U R                  R                  5       U l        X@l        U R                  c  0 U l        U R                  R                  5       U l        X0l        XPl        U R
                  (       aY   [        U R
                  S5       n[        R                  " U5      u  pnS S S 5        U R                  U R                  XUS95        g g ! , (       d  f       N/= f! [        [        [        4 a4  n[        SU R
                  < SU< 3[         R"                  S9   S nAg S nAff = f)NÚrb)ÚcallerszSkipping counts file ú: ©Úfile)ÚcountsÚcopyÚcounterÚcalledfuncsrC   ÚinfileÚoutfileÚopenÚpickleÚloadÚupdateÚ	__class__ÚOSErrorÚEOFErrorÚ
ValueErrorÚprintr4   Ústderr)r   rG   rJ   rK   rC   rL   ÚfÚerrs           r   r   ÚCoverageResults.__init__›   s$  € àŒØ�;‰;ÑØˆDŒKØ—{‘{×'Ñ'Ó)ˆŒØ&ÔØ×ÑÑ#Ø!ˆDÔØ×+Ñ+×0Ñ0Ó2ˆÔØŒØ�<‰<ÑØˆDŒLØ—|‘|×(Ñ(Ó*ˆŒØŒØŒØ�;�;ðNÜ˜$Ÿ+™+ tÔ,°Ü39·;²;¸q³>Ñ0�F¨÷ -à—‘˜DŸN™N¨6È˜NÐPÕQð ÷ -Õ,ûô œX¤zÐ2ó NÝØ)-¯¬²cð;ÜBEÇ*Á*÷NûðNús0   Ã
D4 Ã D#Ã:'D4 Ä#
D1Ä-D4 Ä4E=Å	*E8Å8E=c                 óT   • UR                  S5      =(       a    UR                  S5      $ )zOReturn True if the filename does not refer to a file
we want to have reported.
Ú<Ú>)r   Úendswith)r   r   s     r   Úis_ignored_filenameÚ#CoverageResults.is_ignored_filenameµ   s%   € ð ×"Ñ" 3Ó'×B¨H×,=Ñ,=¸cÓ,BÐBr"   c                 ó  • U R                   nU R                  nU R                  nUR                   nUR                  nUR                  nU H  nUR                  US5      XX   -   X('   M     U H  nSX8'   M	     U H  nSXH'   M	     g)z.Merge in the data from another CoverageResultsr   r
   N)rG   rJ   rC   Úget)	r   ÚotherrG   rJ   rC   Úother_countsÚother_calledfuncsÚother_callersÚkeys	            r   rP   ÚCoverageResults.update»   sˆ   € à—‘ˆØ×&Ñ&ˆØ—,‘,ˆØ—|‘|ˆØ!×-Ñ-ÐØŸ™ˆãˆCØ Ÿ*™* S¨!Ó,¨|Ñ/@Ñ@ˆF‹Kñ  ó %ˆCØ ˆKÓñ %ó !ˆCØˆG‹Lò !r"   F)Úignore_missing_filesc                óþ  • U R                   (       aM  [        5         [        S5        U R                   n[        U5       H  u  pgn[        SU< SU< SU< 35        M     U R                  (       a�  [        5         [        S5        S=pš[        U R                  5       H_  u  u  p¼nu  pïnX¹:w  a  [        5         [        SUS5        Un	Sn
Xë:w  a  X®:w  a  [        SU5        Un
[        S	U< S
U< SU< S
U< 35        Ma     0 nU R                   H1  u  nnUR                  U0 5      =nUU'   U R                  UU4   UU'   M3     0 nUR                  5        GHŸ  u  nnU R                  U5      (       a  M  UR                  S5      (       a  USS nU(       a&  [        R                  R                  U5      (       d  Mg  UcH  [        R                  R                  [        R                  R                  U5      5      n[        U5      nO"Un[        R                  " USS9  [!        U5      nU(       a  [#        U5      nO0 n[$        R&                  " U5      n[        R                  R)                  UUS-   5      n[+        US5       n[,        R.                  " UR0                  5      u  nnSSS5        U R3                  UUUUW5      u  nnU(       d  GM|  U(       d  GM†  [5        SU-  U-  5      nUUXv4UU'   GM¢     U(       a>  U(       a7  [        S5        [        U5       H  n UU    u  nnpv[        SUU    -  5        M     U R6                  (       aZ   [+        U R6                  S5       n![8        R:                  " U R                  U R                   U R                  4U!S5        SSS5        gg! , (       d  f       GN
= f! , (       d  f       g= f! [<         a%  n"[        SU"-  [>        R@                  S9   Sn"A"gSn"A"ff = f)aì  
Write the coverage results.

:param show_missing: Show lines that had no hits.
:param summary: Include coverage summary per module.
:param coverdir: If None, the results of each module are placed in its
                 directory, otherwise it is included in the directory
                 specified.
:param ignore_missing_files: If True, counts for files that no longer
                 exist are silently ignored. Otherwise, a missing file
                 will raise a FileNotFoundError.
zfunctions called:z
filename: z, modulename: ú, funcname: zcalling relationships:r2   z***z  -->z    r   z -> z.pycNéÿÿÿÿT)Úexist_okz.coverrB   éd   zlines   cov%   module   (path)z%5d   %3d%%   %s   (%s)Úwbr
   z"Can't save counts files because %srE   )!rJ   rU   ÚsortedrC   rG   ra   Úitemsr^   r]   r   r   ÚisfileÚdirnameÚabspathr0   Úmakedirsr>   Ú_find_executable_linenosÚ	linecacheÚgetlinesÚjoinrM   ÚtokenizeÚdetect_encodingÚreadlineÚwrite_results_fileÚintrL   rN   ÚdumprR   r4   rV   )#r   Úshow_missingÚsummaryÚcoverdirrh   Úcallsr   r   ÚfuncnameÚlastfileÚ	lastcfileÚpfileÚpmodÚpfuncÚcfileÚcmodÚcfuncÚper_fileÚlinenoÚ	lines_hitÚsumsÚcountr<   ÚlnotabÚsourceÚ	coverpathÚfpÚencodingÚ_Ún_hitsÚn_linesÚpercentÚmrW   rX   s#                                      r   Úwrite_resultsÚCoverageResults.write_resultsÍ   sZ  € ð ××ÜŒGÜÐ%Ô&Ø×$Ñ$ˆEÜ28¸¶-Ñ.� hÝÛ"£J²ð:ö <ñ 3@ð �<�<ÜŒGÜÐ*Ô+Ø#%Ð%ˆHä˜dŸl™lÖ+ñ =Ñ%�%˜uÑ';¨°UàÓ$Ü”GÜ˜% ¨Ô.Ø$�HØ "�IØ“> iÓ&8Ü˜' 5Ô)Ø %�IÝ«d³E»4ÂÐGÖHñ ,ð ˆØ $§¤ÑˆH�fØ-5¯\©\¸(ÀBÓ-GÐGˆI˜ Ñ*Ø $§¡¨X°vÐ,>Ñ ?ˆI�fÓñ !,ð
 ˆà'Ÿ~™~×/‰OˆH�eØ×'Ñ'¨×1Ñ1Ùà× Ñ  ×(Ñ(Ø# C R˜=�æ#¬B¯G©G¯N©N¸8×,DÑ,DÙàÑÜ—g‘g—o‘o¤b§g¡g§o¡o°hÓ&?Ó@�Ü% hÓ/‘
à�Ü—’˜C¨$Ò/Ü)¨(Ó3�
ö Ü1°(Ó;‘à�Ü×'Ò'¨Ó1ˆFÜŸ™Ÿ™ S¨*°xÑ*?Ó@ˆIÜ�h Ô%¨Ü&×6Ò6°r·{±{ÓC‘�˜!÷ &à"×5Ñ5°iÀØ6<¸eÀXóO‰OˆF�Gç‰wŸ7™7Ü˜c F™l¨WÑ4Ó5�Ø#*¨G°ZÐ#I��ZÔ ñA  0öD –tÜÐ2Ô3Ü˜D–\�Ø9=¸a¹Ñ6�˜ *ÜÐ/°$°q±'Ñ9Ö:ñ "ð �<�<ðSÜ˜$Ÿ,™,¨Ô-°Ü—K’K §¡¨d×.>Ñ.>ÀÇÁÐ MØ ! 1ô&÷ .Ð-ð ÷ &Ö%ú÷" .Õ-ûô ó SÜÐ:¸SÑ@ÄsÇzÁz×RûðSúsB   Ê$N*ÍO Í&:N<Î O Î*
N9	Î<
O
ÏO Ï
O Ï
O<ÏO7Ï7O<c                 óø  •  [        USUS9nS	nS	n	U   [        US
5       H‚  u  p«X¤;   a!  UR                  SXJ   -  5        U	S
-  n	US
-  nO7X£;   a!  [        U;  a  UR                  S5        US
-  nOUR                  S5        UR                  UR                  S5      5        M„     SSS5        X˜4$ ! [         a+  n[        SU< SU< S3[        R                  S9   SnAgSnAff = f! , (       d  f       X˜4$ = f)z'Return a coverage results file in path.Úw©r•   ztrace: Could not open z for writing: z - skippingrE   N)r   r   r   r
   z%5d: z>>>>>> z       é   )	rM   rR   rU   r4   rV   Ú	enumerateÚwriteÚPRAGMA_NOCOVERÚ
expandtabs)r   r   Úlinesr‘   rŽ   r•   rL   rX   r˜   r—   r�   Úlines               r   r|   Ú"CoverageResults.write_results_file.  sú   € ð	Ü˜4 ¨xÑ8ˆGð ˆØˆÚÜ )¨%°Ö 3‘�ð Ó&Ø—M‘M '¨IÑ,=Ñ"=Ô>Ø˜a‘K�FØ˜q‘L‘GØÓ%¬nÀÓ.Dð —M‘M )Ô,Ø˜q‘L‘Gà—M‘M )Ô,Ø—‘˜dŸo™o¨aÓ0Ö1ñ !4÷ ð" ˆÐøô1 ó 	ÝÛ26»ð=ÜDGÇJÁJòPäûð	ú÷ ŒWð" ˆÐús#   ‚B1 “BC)Â1
C&Â;!C!Ã!C&Ã)
C9)rJ   rC   rI   rG   rK   rL   )NNNNN)TFN©N)
r$   r%   r&   r'   r   r^   rP   r›   r|   r(   r)   r"   r   r   r   š   s0   † Ø=AØ'+ôNò4Còð$_SØ+0ö_S÷Br"   c                 ó^   • 0 n[         R                  " U 5       H  u  p4XA;  d  M  SX$'   M     U$ )z:Return dict where keys are lines in the line number table.r
   )ÚdisÚfindlinestarts)ÚcodeÚstrsÚlinenosr–   r�   s        r   Ú_find_lines_from_coder¯   N  s2   € à€Gä×'Ò'¨Ö-‰	ˆØÕØˆG‹Oñ .ð €Nr"   c                 ó°   • [        X5      nU R                   H:  n[        R                  " U5      (       d  M   UR	                  [        X15      5        M<     U$ )z<Return lineno dict for all code objects reachable from code.)r¯   Ú	co_constsÚinspectÚiscoderP   Ú_find_lines)r¬   r­   r®   Úcs       r   r´   r´   X  sE   € ô $ DÓ/€Gð �^Œ^ˆÜ�>Š>˜!×Óà�N‰Nœ; qÓ/Ö0ñ ð €Nr"   c                 ób  • 0 n[         R                  n[        XS9 n[        R                  " UR
                  5      nU HR  u  pgp‰n
U[         R                  :X  a5  U[         R                  :X  a!  Uu  p¼U	u  pÞ[        X½S-   5       H  nSX/'   M	     UnMT     SSS5        U$ ! , (       d  f       U$ = f)z´Return a dict of possible docstring positions.

The dict maps line numbers to strings.  There is an entry for
line that contains only a string or a part of a triple-quoted
string.
rŸ   r
   N)ÚtokenÚINDENTrM   ry   Úgenerate_tokensr{   ÚSTRINGÚrange)r   r•   r   Ú
prev_ttyperW   ÚtokÚttypeÚtstrÚstartÚendr¦   ÚslineÚscolÚelineÚecolÚis                   r   Ú_find_stringsrÇ   d  s¤   € ð 	€Aô —‘€JÜ	ˆhÒ	*¨aÜ×&Ò& q§z¡zÓ2ˆÛ-0Ñ)ˆE˜ TØœŸ™Ó$Ø¤§¡Ó-Ø"'‘K�EØ"%‘K�EÜ" 5°!©)Ö4˜Ø ˜›ñ 5àŠJñ .1÷ 
+ð €H÷ 
+Ô	*ð €Hús   œA9BÂ
B.c                 óV  •  [         R                  " U 5       nUR                  5       nUR                  nSSS5        [        WU S5      n[        U W5      n[        XV5      $ ! , (       d  f       N2= f! [         a,  n[        SU < SU< 3[        R                  S9  0 s SnA$ SnAff = f)zAReturn dict where keys are line numbers in the line number table.NzNot printing coverage data for rD   rE   Úexec)ry   rM   Úreadr•   rR   rU   r4   rV   ÚcompilerÇ   r´   )r   rW   Úprogr•   rX   r¬   r­   s          r   ru   ru   {  sŽ   € ðÜ�]Š]˜8Ô$¨Ø—6‘6“8ˆDØ—z‘zˆH÷ %ô �4˜ 6Ó*€DÜ˜ 8Ó,€DÜ�tÓ"Ð"÷ %Õ$ûô ó ÝÛ!)ª3ð0Ü7:·z±zò	Cà�	ûðús9   ‚A2 ˜A!µA2 Á!
A/Á+A2 Á/A2 Á2
B(Á<!B#ÂB(Â#B(c                   ój   • \ rS rSr   SS jrS rSS jrS rS rS r	S	 r
S
 rS rS rS rS rSrg)r   i‰  Nc
                 óR  • Xpl         X€l        [        XV5      U l        0 U l        0 U l        SU l        X l        0 U l        0 U l	        0 U l
        SU l        U	(       a  [        5       U l        U(       a  U R                  U l        gU(       a  U R                  U l        gU(       a*  U(       a#  U R                   U l        U R"                  U l        gU(       a#  U R                   U l        U R&                  U l        gU(       a#  U R                   U l        U R(                  U l        gSU l        g)aø  
@param count true iff it should count number of times each
             line is executed
@param trace true iff it should print out each line that is
             being counted
@param countfuncs true iff it should just output a list of
             (filename, modulename, funcname,) for functions
             that were called at least once;  This overrides
             `count' and `trace'
@param ignoremods a list of the names of modules to ignore
@param ignoredirs a list of the names of directories to ignore
             all of the (recursive) contents of
@param infile file from which to read stored counts to be
             added into the results
@param outfile file in which to write the results
@param timing true iff timing information be displayed
r   Nr
   )rK   rL   r   ÚignorerG   ÚpathtobasenameÚ	donothingÚtraceÚ_calledfuncsÚ_callersÚ_caller_cacheÚ
start_timeÚ_timeÚglobaltrace_trackcallersÚglobaltraceÚglobaltrace_countfuncsÚglobaltrace_ltÚlocaltrace_trace_and_countÚ
localtraceÚlocaltrace_traceÚlocaltrace_count)
r   r�   rÒ   Ú
countfuncsÚcountcallersÚ
ignoremodsÚ
ignoredirsrK   rL   Útimings
             r   r   ÚTrace.__init__Š  sæ   € ð( ŒØŒÜ˜jÓ5ˆŒØˆŒØ ˆÔØˆŒØŒ
ØˆÔØˆŒØˆÔØˆŒÞÜ#›gˆDŒOÞØ#×<Ñ<ˆDÕÞØ#×:Ñ:ˆDÕÞ–uØ#×2Ñ2ˆDÔØ"×=Ñ=ˆD�OÞØ#×2Ñ2ˆDÔØ"×3Ñ3ˆD�OÞØ#×2Ñ2ˆDÔØ"×3Ñ3ˆD�Oð ˆD�Nr"   c                 óH   • SS K nUR                  nU R                  XU5        g )Nr   )Ú__main__Ú__dict__Úrunctx)r   Úcmdrç   Údicts       r   ÚrunÚ	Trace.run¼  s   € ÛØ× Ñ ˆØ�‰�C˜tÕ$r"   c                 óÖ  • Uc  0 nUc  0 nU R                   (       d@  [        R                  " U R                  5        [        R                  " U R                  5         [        XU5        U R                   (       d-  [        R                  " S 5        [        R                  " S 5        g g ! U R                   (       d-  [        R                  " S 5        [        R                  " S 5        f f = fr¨   )rÑ   Ú	threadingÚsettracerÙ   r4   rÉ   )r   rê   ÚglobalsÚlocalss       r   ré   ÚTrace.runctxÁ  s�   € Ø‰? b˜GØ‰> B˜6Ø�~�~Ü×Ò˜t×/Ñ/Ô0Ü�LŠL˜×)Ñ)Ô*ð	)Ü�˜vÔ&à—>—>Ü—’˜TÔ"Ü×"Ò" 4Õ(ð "ø�4—>—>Ü—’˜TÔ"Ü×"Ò" 4Õ(ð "ús   ÁB( Â(A C(c                ó&  • S nU R                   (       d   [        R                  " U R                  5         U" U0 UD6nU R                   (       d  [        R                  " S 5        U$ ! U R                   (       d  [        R                  " S 5        f f = fr¨   )rÑ   r4   rð   rÙ   )r   ÚfuncÚargsÚkwÚresults        r   ÚrunfuncÚTrace.runfuncÎ  sh   € ØˆØ�~�~Ü�LŠL˜×)Ñ)Ô*ð	#Ù˜4Ð& 2Ñ&ˆFà—>—>Ü—’˜TÔ"Øˆøð —>—>Ü—’˜TÕ"ð "ús   µA& Á&*Bc                 óF  • UR                   nUR                  nU(       a  [        U5      nOS nUR                  nS nX R                  ;   a!  U R                  U   b  U R                  U   nGOS U R                  U'   [
        R                  " U5       Vs/ s H"  n[        R                  " U5      (       d  M   UPM$     nn[        U5      S:X  a·  [
        R                  " US   5       V	s/ s H  n	[        U	[        5      (       d  M  U	PM     n
n	[        U
5      S:X  ah  [
        R                  " U
S   5       Vs/ s H  n[        US5      (       d  M  UPM     nn[        U5      S:X  a  US   R                  nX`R                  U'   Ub	  U< SU< 3nX4U4$ s  snf s  sn	f s  snf )Nr
   r   Ú	__bases__r   )Úf_codeÚco_filenamer0   Úco_namerÕ   ÚgcÚget_referrersr²   Ú
isfunctionr5   Ú
isinstancerë   Úhasattrr$   )r   Úframer¬   r   r   rƒ   ÚclsnamerW   Úfuncsr   Údictsrµ   Úclassess                r   Úfile_module_function_ofÚTrace.file_module_function_ofÙ  s…  € Ø�|‰|ˆØ×#Ñ#ˆÞÜ! (Ó+‰JàˆJà—<‘<ˆØˆØ×%Ñ%Ó%Ø×!Ñ! $Ñ'Ñ3Ø×,Ñ,¨TÑ2�ùà'+ˆD×Ñ˜tÑ$ô !#× 0Ò 0°Ô 6ó 3Ò 6˜1Ü#×.Ò.¨q×1÷ Ñ 6ˆEð 3ô
 �5‹z˜Q‹Ü$&×$4Ò$4°U¸1±XÔ$>ó 5Ò$>˜qÜ *¨1¬d× 3÷ Ñ$>�ð 5ä�u“: “?Ü*,×*:Ò*:¸5À¹8Ô*Dó ?Ò*D QÜ&-¨a°×&=÷  !Ñ*D�Gð ?ä˜7“| qÓ(à")¨!¡*×"5Ñ"5˜ð
 4;×*Ñ*¨4Ñ0ØÑÛ")ª8Ð4ˆHà XÐ-Ð-ùò-3ùò5ùò?s$   ÂFÂ6FÃ(FÄFÄ7FÅFc                 óŠ   • US:X  a=  U R                  U5      nU R                  UR                  5      nSU R                  XT4'   gg)z[Handler for call events.

Adds information about who called who to the self._callers dict.
Úcallr
   N)r
  Úf_backrÔ   )r   r  ÚwhyÚargÚ	this_funcÚparent_funcs         r   rØ   ÚTrace.globaltrace_trackcallers  sE   € ð
 �&‹=à×4Ñ4°UÓ;ˆIØ×6Ñ6°u·|±|ÓDˆKØ67ˆD�M‰M˜;Ð2Ò3ð	 r"   c                 óR   • US:X  a!  U R                  U5      nSU R                  U'   gg)z_Handler for call events.

Adds (filename, modulename, funcname) to the self._calledfuncs dict.
r  r
   N)r
  rÓ   )r   r  r  r  r  s        r   rÚ   ÚTrace.globaltrace_countfuncs  s0   € ð
 �&‹=Ø×4Ñ4°UÓ;ˆIØ+,ˆD×Ñ˜iÒ(ð r"   c                 óH  • US:X  aœ  UR                   nUR                  R                  SS5      nU(       al  [        U5      nUb]  U R                  R                  XV5      nU(       d:  U R                  (       a  [        SU< SUR                  < 35        U R                  $ gggg)zzHandler for call events.

If the code block being entered is to be ignored, returns `None',
else returns self.localtrace.
r  Ú__file__Nz --- modulename: rj   )
rý   Ú	f_globalsra   r0   rÏ   r    rÒ   rU   rÿ   rÝ   )r   r  r  r  r¬   r   r   Ú	ignore_its           r   rÛ   ÚTrace.globaltrace_lt  s“   € ð �&‹=Ø—<‘<ˆDØ—‘×*Ñ*¨:°tÓ<ˆHÞô & hÓ/�
ØÑ)Ø $§¡× 1Ñ 1°(Ó G�IÞ$ØŸ:Ÿ:Ý!Û&0°$·,³,ð$@ô Bà#Ÿ™Ð.ð	 %ð *ð ð r"   c                 ó  • US:X  aï  UR                   R                  nUR                  nXE4nU R                  R	                  US5      S-   U R                  U'   U R
                  (       a"  [        S[        5       U R
                  -
  -  SS9  [        R                  R                  U5      n[        R                  " XE5      n[        SXu4-  SS9  U(       a  [        S	USS9  U R                  $ [        5         U R                  $ )
Nr¦   r   r
   ú%.2fÚ ©rÁ   ú%s(%d)r2   rD   )rý   rþ   Úf_linenorG   ra   rÖ   rU   r×   r   r   r,   rv   ÚgetlinerÝ   )	r   r  r  r  r   r�   rf   Úbnamer¦   s	            r   rÜ   Ú Trace.localtrace_trace_and_count-  sÍ   € Ø�&‹=à—|‘|×/Ñ/ˆHØ—^‘^ˆFØÐ"ˆCØ#Ÿ{™{Ÿ™¨s°AÓ6¸Ñ:ˆD�K‰K˜Ñà��Ü�f¤£¨$¯/©/Ñ 9Ñ:ÀÒDÜ—G‘G×$Ñ$ XÓ.ˆEÜ×$Ò$ XÓ6ˆDÜ�(˜e˜_Ñ,°"Ò5ÞÜ�d˜D bÒ)ð �‰Ðô ”Ø�‰Ðr"   c                 ó¦  • US:X  aÀ  UR                   R                  nUR                  nU R                  (       a"  [	        S[        5       U R                  -
  -  SS9  [        R                  R                  U5      n[        R                  " XE5      n[	        SXe4-  SS9  U(       a  [	        SUSS9  U R                  $ [	        5         U R                  $ )Nr¦   r  r  r  r  r2   rD   )rý   rþ   r   rÖ   rU   r×   r   r   r,   rv   r!  rÝ   )r   r  r  r  r   r�   r"  r¦   s           r   rÞ   ÚTrace.localtrace_trace@  s£   € Ø�&‹=à—|‘|×/Ñ/ˆHØ—^‘^ˆFà��Ü�f¤£¨$¯/©/Ñ 9Ñ:ÀÒDÜ—G‘G×$Ñ$ XÓ.ˆEÜ×$Ò$ XÓ6ˆDÜ�(˜e˜_Ñ,°"Ò5ÞÜ�d˜D bÒ)ð �‰Ðô ”Ø�‰Ðr"   c                 óÈ   • US:X  aQ  UR                   R                  nUR                  nXE4nU R                  R	                  US5      S-   U R                  U'   U R
                  $ )Nr¦   r   r
   )rý   rþ   r   rG   ra   rÝ   )r   r  r  r  r   r�   rf   s          r   rß   ÚTrace.localtrace_countQ  sU   € Ø�&‹=Ø—|‘|×/Ñ/ˆHØ—^‘^ˆFØÐ"ˆCØ#Ÿ{™{Ÿ™¨s°AÓ6¸Ñ:ˆD�K‰K˜ÑØ�‰Ðr"   c                 ó€   • [        U R                  U R                  U R                  U R                  U R
                  S9$ )N)rK   rL   rJ   rC   )r   rG   rK   rL   rÓ   rÔ   )r   s    r   ÚresultsÚTrace.resultsY  s2   € Ü˜tŸ{™{°4·;±;Ø'+§|¡|Ø+/×+<Ñ+<Ø'+§}¡}ñ6ð 	6r"   )rÓ   rÕ   rÔ   rG   rÑ   rÙ   rÏ   rK   rÝ   rL   rÐ   rÖ   rÒ   )	r
   r
   r   r   r)   r)   NNFr#   )r$   r%   r&   r'   r   rì   ré   rù   r
  rØ   rÚ   rÛ   rÜ   rÞ   rß   r)  r(   r)   r"   r   r   r   ‰  sI   † ØDEØDHØô0òd%ô
)ò	ò'.òR	8ò-òò.ò&ò"õ6r"   c                  óÀ  ^^• SS K n U R                  5       nUR                  SSSS9  UR                  SS5      nUR                  SS	S
SS9  UR                  SSS
SS9  UR                  SSS
SS9  UR                  SSS
SS9  UR                  S5      nUR	                  5       nUR                  SSS
SS9  UR                  SSS
SS9  UR                  SSSS 9  UR                  S!S"S#S 9  UR                  S$S%S
S&S9  UR                  S'S(S
S)S9  UR                  S*S+S
S,S9  UR                  S-S.5      nUR                  S/S0/ S1S29  UR                  S3S0/ S4S29  UR                  S5S
S6S7S29  UR                  S8S9S:S;9  UR                  S<U R
                  S=S;9  UR                  5       nUR                  (       a,  [        R                  " S>5      m[        R                  " S?5      mUU4S@ jnUR                   VVs/ s H+  ofR                  SA5        H  nUR                  5       PM     M-     snnUl
        UR                   VVs/ s H1  ofR                  [        R                  5        H  nU" U5      PM     M3     snnUl        UR                  (       aq  UR                   (       d  UR#                  SB5        [%        UR                   UR                   SC9n	U	R'                  UR(                  UR*                  UR,                  5      $ [/        UR0                  UR2                  UR4                  UR6                  /5      (       d  UR#                  SD5        UR4                  (       a3  UR2                  (       d  UR0                  (       a  UR#                  SE5        UR*                  (       a"  UR2                  (       d  UR#                  SF5        UR8                  c  UR#                  SG5        [;        UR2                  UR0                  UR4                  UR6                  UR                  UR                  UR                   UR                   UR<                  SH9	n
 UR>                  (       an  SS K nUR8                  nURC                  U5      u  pÞnURD                  /URF                  Q[H        l%        SIURD                  URL                  URN                  US SJ.nO»UR8                  /URF                  Q[H        l%        [        RP                  RS                  UR8                  5      [H        RP                  S'   [T        RV                  " UR8                  5       n[Y        UR[                  5       UR8                  SK5      nS S S 5        UR8                  SIS S SL.nU
R]                  WUU5        U
Re                  5       n	URf                  (       d2  U	R'                  UR(                  UR*                  UR,                  5        g g s  snnf s  snnf ! , (       d  f       N’= f! [^         a9  n[H        R`                  " SM[H        RJ                  S   < SNU< 35         S nAN¯S nAf[b         a     N¾f = f)ONr   z	--versionÚversionz	trace 2.0)Úactionr,  zMain optionsz(One of these (or --report) must be givenz-cz--countÚ
store_truez»Count the number of times each line is executed and write the counts to <module>.cover for each module executed, in the module's directory. See also --coverdir, --file, --no-report below.)r-  Úhelpz-tz--tracez3Print each line to sys.stdout before it is executedz-lz--listfuncsz§Keep track of which functions are executed at least once and write the results to sys.stdout after the program exits. Cannot be specified alongside --trace or --count.z-Tz--trackcallsz^Keep track of caller/called pairs and write the results to sys.stdout after the program exits.Ú	Modifiersz-rz--reportz¶Generate a report from a counts file; does not execute any code. --file must specify the results file to read, which must have been created in a previous run with --count --file=FILEz-Rz--no-reportz^Do not generate the coverage report files. Useful if you want to accumulate over several runs.z-fz--filez+File to accumulate counts over several runs)r/  z-Cz
--coverdirz†Directory where the report files go. The coverage report for <package>.<module> will be written to file <dir>/<package>/<module>.coverz-mz	--missingz?Annotate executable lines that were not executed with ">>>>>> "z-sz	--summaryz\Write a brief summary for each file to sys.stdout. Can only be used with --count or --reportz-gz--timingzQPrefix each line with the time since the program started. Only used while tracingÚFilterszCan be specified multiple timesz--ignore-moduleÚappendzqIgnore the given module(s) and its submodules (if it is a package). Accepts comma separated list of module names.)r-  Údefaultr/  z--ignore-dirzWIgnore files in the given directory (multiple directories can be joined by os.pathsep).z--moduleFzTrace a module. ÚprognameÚ?zfile to run as main program)Únargsr/  Ú	argumentszarguments to the programÚstdlibÚ
platstdlibc                 óþ   >• [         R                  R                  [         R                  R                  U 5      5      n U R	                  ST5      R	                  ST5      n [         R                  R                  U 5      $ )Nz$prefixz$exec_prefix)r   r   Ú
expanduserÚ
expandvarsr7   r   )ÚsÚ_exec_prefixÚ_prefixs    €€r   Úparse_ignore_dirÚmain.<locals>.parse_ignore_dirª  sX   ø€ Ü�G‰G×ÑœrŸw™w×1Ñ1°!Ó4Ó5ˆØ�I‰I�i Ó)×1Ñ1°.À,ÓOˆÜ�w‰w×Ñ Ó"Ð"r"   Ú,z-r/--report requires -f/--file)rK   rL   zLmust specify one of --trace, --count, --report, --listfuncs, or --trackcallsz8cannot specify both --listfuncs and (--trace or --count)z3--summary can only be used with --count or --reportz3progname is missing: required with the main options)rà   rá   râ   rã   rK   rL   rä   rç   )r$   r  Ú__package__Ú
__loader__Ú__spec__Ú
__cached__rÉ   )r  r$   rC  rF  zCannot run file z
 because: )4ÚargparseÚArgumentParserÚadd_argumentÚadd_argument_groupÚadd_mutually_exclusive_groupÚ	REMAINDERÚ
parse_argsÚ
ignore_dirÚ	sysconfigÚget_pathÚignore_moduleÚsplitÚstripr   ÚpathsepÚreportrF   Úerrorr   r›   Úmissingr€   r�   ÚanyrÒ   r�   Ú	listfuncsÚ
trackcallsr4  r   rä   ÚmoduleÚrunpyÚ_get_module_detailsrþ   r7  r4   ÚargvÚparentÚloaderr   rr   ÚioÚ	open_coderË   rÊ   ré   rR   ÚexitÚ
SystemExitr)  Ú	no_report)rG  ÚparserÚgrpÚ_grpÚoptsr@  rÆ   r   r=  r)  Útr\  Úmodule_nameÚmod_nameÚmod_specr¬   Úglobsr”   rX   r>  r?  s                      @@r   Úmainro  _  sË  ù€ Ûà×$Ñ$Ó&€FØ
×Ñ˜¨I¸{ÐÑKà
×
#Ñ
# NØ6ó8€Cð ×Ñ�T˜9¨\ð&ð ñ 'ð
 ×Ñ�T˜9¨\ØFð ñ Hà×Ñ�T˜=°ðEð ñ Fð ×Ñ�T˜>°,ð7ð ñ 8ð ×
#Ñ
# KÓ
0€Cà×+Ñ+Ó-€DØ×Ñ�d˜J¨|ðð ñ  ð
 	×Ñ�d˜M°,ðGð ñ Hð ×Ñ�T˜8Ø>ð ñ @à×Ñ�T˜<ð2ð ñ 3ð ×Ñ�T˜;¨|ðð ñ ð ×Ñ�T˜;¨|ð=ð ñ >ð ×Ñ�T˜:¨lð+ð ñ ,ð ×
#Ñ
# IØ-ó/€Cà×ÑÐ&¨xÀð!ð ñ "ð ×Ñ�^¨H¸bðGð ñ Hð ×Ñ˜
¨<ÀØ/ð ñ 1à
×Ñ˜
¨#Ø.ð ñ 0à
×Ñ˜¨8×+=Ñ+=Ø+ð ñ -ð ×ÑÓ€Dà‡‡Ü×$Ò$ XÓ.ˆÜ ×)Ò)¨,Ó7ˆö#ð $(×#5Ò#5ôOÚ#5˜aÇÁÈÇ¸#ð Ÿ)™)ž+ÙAMñ &Ù#5òO€DÔð !%§¢ôNÚ /˜1¿¹ÄÇÁ×9L°Añ (¨Ö*Ù9Lñ +Ù /òN€D„Oð ‡{‡{Ø�y�yØ�L‰LÐ9Ô:Ü!¨¯©¸D¿I¹IÑFˆØ×$Ñ$ T§\¡\°4·<±<ÀÇÁÓOÐOä�—
‘
˜DŸJ™J¨¯©¸¿¹ÐH×IÑIØ�‰ð 4ô 	5ð ‡~‡~˜4Ÿ:Ÿ:¨¯¯Ø�‰ÐOÔPà‡|‡|˜DŸJŸJØ�‰ÐJÔKà‡}�}ÑØ�‰ÐJÔKäˆd�j‰j˜$Ÿ*™*°·±ØŸ?™?°t×7IÑ7IØŸ™°·±Ø—i‘i¨¯©ñ	5€AðØ�;�;ÛØŸ-™-ˆKØ',×'@Ñ'@ÀÓ'MÑ$ˆH Ø×(Ñ(Ð:¨4¯>©>Ð:ŒCŒHà&Ø ×,Ñ,Ø'Ÿ™Ø&Ÿo™oØ$Ø"ñ‰Eð Ÿ™Ð7¨¯©Ð7ŒCŒHÜŸ'™'Ÿ/™/¨$¯-©-Ó8ŒC�H‰H�Q‰Kä—’˜dŸm™mÔ,°Ü˜rŸw™w›y¨$¯-©-¸Ó@�÷ -ð !ŸM™MØ&Ø#Ø"ñ	ˆEð 	
�‰��u˜eÔ$ð �i‰i‹k€Gà�>�>Ø×Ñ˜dŸl™l¨D¯L©L¸$¿-¹-ÕHð ùóOùóN÷X -Õ,ûô ó HÜ�‹´S·X±X¸a´[Â#ÐF×GÑGûÜó ÙðúsC   Ç62W2É 8W8ÑC;X Õ&W>Õ2,X ×>
XØX Ø
YØ/YÙYÙYrç   r¨   )Ú__doc__Ú__all__ra  rv   r   r4   rO  r·   ry   r²   r   rª   rN   Útimer   r×   rï   r£   r   r0   r>   r   r¯   r´   rÇ   ru   r   ro  r$   r)   r"   r   Ú<module>rs     s¢   ðñ<ð( Ð%Ð
&€ã 	Û Û 	Û 
Û Û Û Û Û 	Û 
Û Ý #ã à#€÷0ñ 0òdò ÷8rñ ròhò
ôò.#÷T6ñ T6òlPIðd ˆZÓÙ…Fð r"   