Ë ‚Ö¦i¨rãó—dZddgZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZddlZdZGd„d«Zd „Zd „ZGd „d«Zd „Zd „Zdd„Zd„ZGd„d«Zd„Zedk(re«yy)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ó—eZdZdd„Zd„Zy)Ú_IgnoreNcóÄ—|s t«n t|«|_|sgn,|D�cgc]!}tjj |«‘Œ#c}|_ddi|_ycc}w)Nzé)ÚsetÚ_modsÚosÚpathÚnormpathÚ_dirsÚ_ignore)ÚselfÚmodulesÚdirsÚds ú/usr/lib64/python3.12/trace.pyÚ__init__z_Ignore.__init__FsW€Ù")”S”U¬s°7«|ˆŒ Ù#‘RÙ37ó*9Ù37¨aô+-¯'©'×*:Ñ*:¸1Õ*=Ø37ñ*9ˆŒ à# QÐ(ˆ� ùò*9s¥&Acó°—||jvr|j|S||jvrd|j|<y|jD]'}|j|dz«sŒd|j|<y|€d|j|<y|jD]5}|j|tj z«sŒ&d|j|<yd|j|<y)Nr Ú.r)rr Ú startswithrr Úsep)rÚfilenameÚ modulenameÚmodrs rÚnamesz _Ignore.namesLsÖ€Ø ˜Ÿ™Ñ %Ø—<‘<  Ñ+Ð +𠘟™Ñ #Ø'(ˆD�L‰L˜Ñ $Øð—:”:ˆCð×$Ñ$ S¨3¡YÕ/Ø+,�— ‘ ˜ZÑ(Ùð ð Ð à'(ˆD�L‰L˜Ñ $Øð—”ˆAð×"Ñ" 1¤r§v¡v¡:Õ.Ø+,�— ‘ ˜ZÑ(Ùðð$%ˆ� ‰ �ZÑ Øó©NN)Ú__name__Ú __module__Ú __qualname__rr©rrrrEs „ó)ó )rrcóˆ—tjj|«}tjj|«\}}|S)ú,Return a plausible module name for the path.)r r ÚbasenameÚsplitext)r ÚbaserÚexts rÚ_modnamer+ws5€ô �7‰7× Ñ ˜DÓ !€DÜ—G‘G×$Ñ$ TÓ*�M€HˆcØ €Orcóº—tjj|«}d}tjD]m}tjj|«}|j |«sŒ4|t |«tj k(sŒTt |«t |«kDsŒl|}Œo|r|t |«dzd}n|}tjj|«\}}|jtj d«}tjr |jtjd«}tjj|«\}}|jd«S)r&Úr Nr) r r ÚnormcaseÚsysrÚlenrÚ splitdriveÚreplaceÚaltsepr(Úlstrip)r Ú comparepathÚlongestÚdirr)Údriverr*s rÚ _fullmodnamer9~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ˆ4Ø �<‰<œŸ™ Ó $€DÜ ‡y‚yØ�|‰|œBŸI™I sÓ+ˆÜ—G‘G×$Ñ$ TÓ*�M€HˆcØ �?‰?˜3Ó Ðrcó4—eZdZ dd„Zd„Zd„Zdd„Zd d„Zy) rNcóø—||_|j€i|_|jj«|_||_|j€i|_|jj«|_||_|j€i|_|jj«|_||_||_|j r] t|j d«5}tj|«\}}}ddd«|j|j|||¬««yy#1swYŒ.xYw#tttf$r5}td|j ›d|›�t j"¬«Yd}~yd}~wwxYw)NÚrb)ÚcallerszSkipping counts file ú: ©Úfile)ÚcountsÚcopyÚcounterÚ calledfuncsr=ÚinfileÚoutfileÚopenÚpickleÚloadÚupdateÚ __class__ÚOSErrorÚEOFErrorÚ ValueErrorÚprintr/Ústderr)rrArDrEr=rFÚfÚerrs rrzCoverageResults.__init__›s8€àˆŒ Ø �;‰;Р؈DŒKØ—{‘{×'Ñ'Ó)ˆŒ Ø&ˆÔØ × Ñ Ð #Ø!ˆDÔ Ø×+Ñ+×0Ñ0Ó2ˆÔ؈Œ Ø �<‰<Р؈DŒLØ—|‘|×(Ñ(Ó*ˆŒ ؈Œ ؈Œ Ø �;Š;ð Nܘ$Ÿ+™+ tÔ,°Ü39·;±;¸q³>Ñ0�F˜K¨÷-à— ‘ ˜DŸN™N¨6°;ȘNÓPÕQð ÷-Ð,ûôœX¤zÐ2ò NÝØ)-¯«±cð;ÜBEÇ*Á*÷NòNûð Nús0ÃD0ÃD$Ã7+D0Ä$D-Ä)D0Ä0E9Å+E4Å4E9cóJ—|jd«xr|jd«S)z_Return True if the filename does not refer to a file we want to have reported. Ú<Ú>)rÚendswith)rrs rÚis_ignored_filenamez#CoverageResults.is_ignored_filenameµs%€ð×"Ñ" 3Ó'ÒB¨H×,=Ñ,=¸cÓ,BÐBrcó—|j}|j}|j}|j}|j}|j}|D]}|j|d«||z||<Œ|D]}d||<Œ |D]}d||<Œ y)z.Merge in the data from another CoverageResultsrr N)rArDr=Úget) rÚotherrArDr=Ú other_countsÚother_calledfuncsÚ other_callersÚkeys rrJzCoverageResults.update»s�€à—‘ˆØ×&Ñ&ˆ Ø—,‘,ˆØ—|‘|ˆ Ø!×-Ñ-ÐØŸ ™ ˆ ãˆCØ Ÿ*™* S¨!Ó,¨|¸CÑ/@Ñ@ˆF�3ŠKð ó%ˆCØ ˆK˜Ò ð%ó!ˆC؈G�CŠLñ!rc ó—|jrIt«td«|j}t|«D]\}}}td|›d|›d|›�«Œ|jr�t«td«dx}} t|j«D]\\\} } } \} }}| |k7rt«td| d«| }d} | | k7r| | k7rtd| «| } td | ›d | ›d |›d |›�«Œ^i}|jD]0\}}|j |i«x}||<|j||f||<Œ2i}|j «D�]U\}}|j|«rŒ|jd «r|d d}|€Htjjtjj|««}t|«}n$|}tj|d¬«t|«}|r t!|«}ni}t#j$|«}tjj'||dz«}t)|d«5}t+j,|j.«\}}d d d «|j1||||«\}}|s�Œ8|s�Œ¬«Yd }!~!y d }!~!wwxYw)af 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. zfunctions called:z filename: z, modulename: ú , funcname: zcalling relationships:r-z***z -->z rz -> z.pycNéÿÿÿÿT)Úexist_okz.coverr<édzlines cov% module (path)z%5d %3d%% %s (%s)Úwbr z"Can't save counts files because %sr?) rDrOÚsortedr=rArYÚitemsrWrVr r ÚdirnameÚabspathr+Úmakedirsr9Ú_find_executable_linenosÚ linecacheÚgetlinesÚjoinrGÚtokenizeÚdetect_encodingÚreadlineÚwrite_results_fileÚintrFrHÚdumprLr/rP)"rÚ show_missingÚsummaryÚcoverdirÚcallsrrÚfuncnameÚlastfileÚ lastcfileÚpfileÚpmodÚpfuncÚcfileÚcmodÚcfuncÚper_fileÚlinenoÚ lines_hitÚsumsÚcountr7ÚlnotabÚsourceÚ coverpathÚfpÚencodingÚ_Ún_hitsÚn_linesÚpercentÚmrQrRs" rÚ write_resultszCoverageResults.write_resultsÍsL€ð × Ò Ü ŒGÜ Ð%Ô &Ø×$Ñ$ˆEÜ28¸¶-Ñ.�˜* hÝÚ"¢J±ð:õ<ð3@ð �<Š<Ü ŒGÜ Ð*Ô +Ø#%Ð %ˆH�yä˜dŸl™lÖ+ñ=Ñ%�%˜˜uÑ';¨¨t°Uà˜HÒ$Ü”Gܘ% ¨Ô.Ø$�HØ "�IؘE’> i°5Ò&8ܘ' 5Ô)Ø %�Iݪd²Eº4ÁÐGÕHð,ðˆØ $§ ¤ Ñ ˆH�fØ-5¯\©\¸(ÀBÓ-GÐ GˆI˜ Ñ*Ø $§ ¡ ¨X°vÐ,>Ñ ?ˆI�fÒ ð!,ð ˆà'Ÿ~™~×/‰OˆH�eØ×'Ñ'¨Ô1Øà× Ñ  Ô(Ø# C R˜=�àÐÜ—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ã›7ܘc F™l¨WÑ4Ó5�Ø#*¨G°ZÀÐ#I��ZÓ ð; 0ñ@ ‘tÜ Ð2Ô 3ܘD–\�Ø9=¸a¹Ñ6�˜ *¨hÜÐ/°$°q±'Ñ9Õ:ð"ð �<Š<ð Sܘ$Ÿ,™,¨Ô-°Ü—K‘K §¡¨d×.>Ñ.>ÀÇ Á Ð MØ ! 1ô&÷.Ð-ð ÷&Ð%ú÷$.Ð-ûôò SÜÐ:¸SÑ@ÄsÇzÁz×RÒRûð SúsBÈ3#L;Ë"MË89MÌ1MÌ;M ÍMÍ MÍMÍ NÍM?Í?Ncóò— t|d|¬«}d }d } |5t |d «D]\} } | |vr"|j d || z«| d z } |d z }n4| |vrt| vr|j d «|d z }n|j d «|j | jd««Œ� ddd«| |fS#t$r,}td|›d|›d�tj¬«Yd}~yd}~wwxYw#1swY| |fSxYw)z'Return a coverage results file in path.Úw©rŠztrace: Could not open z for writing: z - skippingr?N)rrrr z%5d: z>>>>>> z é) rGrLrOr/rPÚ enumerateÚwriteÚPRAGMA_NOCOVERÚ expandtabs) rr Úlinesr†rƒrŠrFrRr�rŒr‚Úlines rrqz"CoverageResults.write_results_file(s€ð ܘ4 ¨xÔ8ˆGð ˆØˆÚ Ü )¨%°Ö 3‘ �˜ð˜YÑ&Ø—M‘M '¨I°fÑ,=Ñ"=Ô>ؘa‘K�Fؘq‘L‘GؘvÑ%¬nÀÑ.Dð—M‘M )Ô,ؘq‘L‘Gà—M‘M )Ô,Ø— ‘ ˜dŸo™o¨aÓ0Õ1ñ!4÷ð"�wˆÐøô1ò Ý Ú26ºð=ÜDGÇJÁJõ Päûð ú÷ð"�wˆÐús#‚B2–BC*Â2 C'Â;"C"Ã"C'Ã*C6)NNNNN)TFN©N)r!r"r#rrWrJr�rqr$rrrršs&„Ø=AØ'+óNò4Cò ó$YSôvrcóX—i}tj|«D]\}}||vsŒ d||<Œ|S)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¢Hs8€à€Gä×'Ñ'¨Ö-‰ ˆˆ6Ø ˜Ò ؈G�FŠOð.ð €Nrcó¢—t||«}|jD]3}tj|«sŒ|j t ||««Œ5|S)z‰>˜!Õ à �N‰Nœ; q¨$Ó/Õ 0ðð €Nrcó`—i}tj}t||¬«5}tj|j «}|D]S\}}}} } |tj k(r6|tjk(r#|\} } | \} }t| | dz«D]}d||<Œ |}ŒU ddd«|S#1swY|SxYw)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ÚINDENTrGrnÚgenerate_tokensrpÚSTRINGÚrange)rrŠrÚ prev_ttyperQÚtokÚttypeÚtstrÚstartÚendršÚslineÚscolÚelineÚecolÚis rÚ _find_stringsrº^s¯€ð €Aô—‘€JÜ ˆh Õ *¨aÜ×&Ñ& q§z¡zÓ2ˆÛ-0Ñ )ˆE�4˜  TØœŸ ™ Ò$ؤ§¡Ò-Ø"'‘K�E˜4Ø"%‘K�E˜4Ü" 5¨%°!©)Ö4˜Ø ˜˜!šð5à‰Jñ.1÷ +ð €H÷ +ð €Hús  A8B#Â#B-cóL— tj|«5}|j«}|j}ddd«t|d«}t|«}t||«S#1swYŒ.xYw#t$r-}t d|›d|›�t j¬«icYd}~Sd}~wwxYw)zAReturn dict where keys are line numbers in the line number table.NzNot printing coverage data for r>r?Úexec) rnrGÚreadrŠrLrOr/rPÚcompilerºr§)rrQÚprogrŠrRrŸr s rrjrjus�€ðÜ �]‰]˜8Ô $¨Ø—6‘6“8ˆDØ—z‘zˆH÷%ô �4˜ 6Ó *€DÜ ˜ 8Ó ,€DÜ �t˜TÓ "Ð"÷%Ð $ûô òÝ Ú!)©3ð0Ü7:·z±zõ Cà� ûðús3‚A-—A!´A-Á!A*Á&A-Á- B#Á6"BÂB#ÂB#có^—eZdZ dd„Zd„Zdd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zy)rNc ó—||_||_t||«|_i|_i|_d|_||_i|_i|_ i|_ d|_ | rt«|_ |r|j|_y|r|j|_y|r%|r#|j |_|j"|_y|r#|j |_|j&|_y|r#|j |_|j(|_yd|_y)ax @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 rNr )rErFrÚignorerAÚ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) rr…rÅÚ countfuncsÚ countcallersÚ ignoremodsÚ ignoredirsrErFÚtimings rrzTrace.__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�NrcóJ—ddl}|j}|j|||«y)Nr)Ú__main__Ú__dict__Úrunctx)rÚcmdrÙÚdicts rÚrunz Trace.run¶s €ÛØ× Ñ ˆØ � ‰ �C˜˜tÕ$rcóª—|€i}|€i}|js>tj|j«t j|j« t |||«|js+t jd«tjd«yy#|js+t jd«tjd«wwxYwr›)rÄÚ threadingÚsettracerÌr/r¼)rrÜÚglobalsÚlocalss rrÛz Trace.runctx»sŸ€Ø ˆ? b˜GØ ˆ> B˜6Ø�~Š~Ü × Ñ ˜t×/Ñ/Ô 0Ü �L‰L˜×)Ñ)Ô *ð )Ü ��g˜vÔ &à—>’>Ü— ‘ ˜TÔ"Ü×"Ñ" 4Õ(ð"ø�4—>’>Ü— ‘ ˜TÔ"Ü×"Ñ" 4Õ(ð"ús Á BÂ9Ccó—d}|jstj|j« ||i|¤Ž}|jstjd«|S#|jstjd«wwxYwr›)rÄr/rárÌ)rÚfuncÚargsÚkwÚresults rÚrunfuncz Trace.runfuncÈsh€ØˆØ�~Š~Ü �L‰L˜×)Ñ)Ô *ð #Ù˜4Ð& 2Ñ&ˆFà—>’>Ü— ‘ ˜TÔ"؈ øð—>’>Ü— ‘ ˜TÕ"ð"ús ¯AÁ$A>cóì—|j}|j}|r t|«}nd}|j}d}||jvr |j|��|j|}nôd|j|<t j |«D�cgc]}tj|«r|‘Œ}}t|«dk(r t j |d«D� cgc]} t| t«r| ‘Œ} } t| «dk(r]t j | d«D� cgc]} t| d«r| ‘Œ} } t| «dk(r| dj}||j|<|�|›d|›�}|||fScc}wcc} wcc} w)Nr rÚ __bases__r)Úf_codeÚ co_filenamer+Úco_namerÈÚgcÚ get_referrersr¥Ú isfunctionr0Ú isinstancerÝÚhasattrr!) rÚframerŸrrrxÚclsnamerQÚfuncsrÚdictsr¨Úclassess rÚfile_module_function_ofzTrace.file_module_function_ofÓsŠ€Ø�|‰|ˆØ×#Ñ#ˆÙ Ü! (Ó+‰JàˆJà—<‘<ˆØˆØ �4×%Ñ%Ñ %Ø×!Ñ! $Ñ'Ñ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 E'ÃE,ÄE1cóŠ—|dk(r>|j|«}|j|j«}d|j||f<yy)zkHandler for call events. Adds information about who called who to the self._callers dict. Úcallr N)rùÚf_backrÇ)rrôÚwhyÚargÚ this_funcÚ parent_funcs rrËzTrace.globaltrace_trackcallersüsG€ð �&Š=à×4Ñ4°UÓ;ˆIØ×6Ñ6°u·|±|ÓDˆKØ67ˆD�M‰M˜;¨ Ð2Ò 3ð rcóP—|dk(r!|j|«}d|j|<yy)zoHandler for call events. Adds (filename, modulename, funcname) to the self._calledfuncs dict. rûr N)rùrÆ)rrôrýrþrÿs rrÍzTrace.globaltrace_countfuncss0€ð �&Š=Ø×4Ñ4°UÓ;ˆIØ+,ˆD× Ñ ˜iÒ (ð rcó$—|dk(r‹|j}|jjdd«}|r`t|«}|�R|jj ||«}|s3|j rtd|›d|j›�«|jSyyyy)z’Handler for call events. If the code block being entered is to be ignored, returns `None', else returns self.localtrace. rûÚ__file__Nz --- modulename: r`) rìÚ f_globalsrYr+rÂrrÅrOrîrÐ)rrôrýrþrŸrrÚ ignore_its rrÎzTrace.globaltrace_lts•€ð �&Š=Ø—<‘<ˆDØ—‘×*Ñ*¨:°tÓ<ˆHÙô& hÓ/� ØÐ)Ø $§ ¡ × 1Ñ 1°(¸JÓ G�IÙ$ØŸ:š:Ý!Ú&0°$·,²,ð$@ôBà#Ÿ™Ð.ð %ð*ðð rcó—|dk(rð|jj}|j}||f}|jj |d«dz|j|<|j r%t dt«|j z zd¬«tjj|«}tj||«}t d||fzd¬«|rt d |d¬«|jSt «|jS) Nršrr ú%.2fÚ ©r´ú%s(%d)r-r>)rìríÚf_linenorArYrÉrOrÊr r r'rkÚgetlinerÐ) rrôrýrþrr‚r^Úbnameršs rrÏz Trace.localtrace_trace_and_count'sÓ€Ø �&Š=à—|‘|×/Ñ/ˆHØ—^‘^ˆFؘFÐ"ˆCØ#Ÿ{™{Ÿ™¨s°AÓ6¸Ñ:ˆD�K‰K˜Ñ à�ŠÜ�f¤£¨$¯/©/Ñ 9Ñ:ÀÕDÜ—G‘G×$Ñ$ XÓ.ˆEÜ×$Ñ$ X¨vÓ6ˆDÜ �(˜e V˜_Ñ,°"Õ 5ÙÜ�d˜D bÕ)ð�‰Ðô”Ø�‰Ðrcó¤—|dk(rÀ|jj}|j}|jr%t dt «|jz zd¬«t jj|«}tj||«}t d||fzd¬«|rt d|d¬«|jSt «|jS)Nršrrr r r-r>) rìrír rÉrOrÊr r r'rkr rÐ)rrôrýrþrr‚r ršs rrÑzTrace.localtrace_trace:s§€Ø �&Š=à—|‘|×/Ñ/ˆHØ—^‘^ˆFà�ŠÜ�f¤£¨$¯/©/Ñ 9Ñ:ÀÕDÜ—G‘G×$Ñ$ XÓ.ˆEÜ×$Ñ$ X¨vÓ6ˆDÜ �(˜e V˜_Ñ,°"Õ 5ÙÜ�d˜D bÕ)ð�‰Ðô”Ø�‰ÐrcóÈ—|dk(rR|jj}|j}||f}|jj |d«dz|j|<|j S)Nršrr )rìrír rArYrÐ)rrôrýrþrr‚r^s rrÒzTrace.localtrace_countKsW€Ø �&Š=Ø—|‘|×/Ñ/ˆHØ—^‘^ˆFؘFÐ"ˆCØ#Ÿ{™{Ÿ™¨s°AÓ6¸Ñ:ˆD�K‰K˜Ñ Ø�‰Ðrcó†—t|j|j|j|j|j ¬«S)N)rErFrDr=)rrArErFrÆrÇ)rs rÚresultsz Trace.resultsSs2€Ü˜tŸ{™{°4·;±;Ø'+§|¡|Ø+/×+<Ñ+<Ø'+§}¡}ô6ð 6r) r r rrr$r$NNFr )r!r"r#rrÞrÛrérùrËrÍrÎrÏrÑrÒrr$rrrrƒsI„ØDEØDHØó0òd%ó )ò ò'.òR 8ò-òò.ò&ò"ó6rc ó” ‡‡—ddl}|j«}|jddd¬«|jdd«}|jdd d d ¬ «|jd dd d¬ «|jddd d¬ «|jddd d¬ «|jd«}|j «}|jddd d¬ «|jddd d¬ «|jddd¬ «|jd!d"d#¬ «|jd$d%d d&¬ «|jd'd(d d)¬ «|jd*d+d d,¬ «|jd-d.«}|jd/d0gd1¬2«|jd3d0gd4¬2«|jd5d d6d7¬2«|jd8d9d:¬;«|jd<|j d=¬;«|j «}|jr*tjd>«Štjd?«Šˆˆfd@„}|jD��cgc](}|jdA«D]}|j«‘ŒŒ*c}}|_ |jD��cgc].}|jtj«D] }||«‘Œ Œ0c}}|_|jro|j s|j#dB«t%|j |j ¬C«} | j'|j(|j*|j,«St/|j0|j2|j4|j6g«s|j#dD«|j4r)|j2s |j0r|j#dE«|j*r|j2s|j#dF«|j8€|j#dG«t;|j2|j0|j4|j6|j|j|j |j |j<¬H« } |j>roddl } |j8} | jC| «\} }}|jDg|jF¢tH_%dI|jD|jL|jN|ddJœ}nº|j8g|jF¢tH_%tjPjS|j8«tHjPd<tUjV|j8«5}tY|j[«|j8dK«}ddd«|j8dIdddLœ}| j]||«| je«} |jfs2| j'|j(|j*|j,«yycc}}wcc}}w#1swYŒˆxYw#t^$r6}tIj`dMtHjJd›dN|›�«Yd}~Œ¡d}~wtb$rYŒ¯wxYw)ONrz --versionÚversionz trace 2.0)Úactionrz 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 .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)rz-Cz --coverdirz†Directory where the report files go. The coverage report for . will be written to file //.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ÚFilterszCan 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Údefaultrz --ignore-dirzWIgnore files in the given directory (multiple directories can be joined by os.pathsep).z--moduleFzTrace a module. ÚprognameÚ?zfile to run as main program)ÚnargsrÚ argumentszarguments to the programÚstdlibÚ platstdlibcóþ•—tjjtjj|««}|j d‰«j d‰«}tjj |«S)Nz$prefixz $exec_prefix)r r Ú expanduserÚ expandvarsr2r)ÚsÚ _exec_prefixÚ_prefixs €€rÚparse_ignore_dirzmain..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)rErFzLmust 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ÖrErFr×rÙ)r!rÚ __package__Ú __loader__Ú__spec__Ú __cached__r¼)rr!r)r,zCannot 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Úreportr@Úerrorrr�ÚmissingrurvÚanyrÅr…Ú listfuncsÚ trackcallsrrr×ÚmoduleÚrunpyÚ_get_module_detailsrírr/ÚargvÚparentÚloaderr rgÚioÚ open_coder¾r½rÛrLÚexitÚ SystemExitrÚ no_report)r-ÚparserÚgrpÚ_grpÚoptsr'r¹rr$rÚtrBÚ module_nameÚmod_nameÚmod_specrŸÚglobsr‰rRr%r&s @@rÚmainrUYsÎù€Ûà × $Ñ $Ó &€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Ø� ‰ ð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�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È!-W&É&3W,ÑC6W>Õ&W2Õ+,W>×2W;×7W>×> YØ,X8Ø8 YÙYrÙr›)Ú__doc__Ú__all__rGrkr r/r5rªrnr¥rïr�rHÚtimerrÊràr—rr+r9rr¢r§rºrjrrUr!r$rrÚrYs¢ðñ<ð( Ð%Ð &€ã ÛÛ Û ÛÛ ÛÛÛ Û Û Ý#ãà#€÷0ñ0òdò ÷8lñlò\ò ó ò. #÷T6ñT6òlPIðd ˆZÒÙ…Fðr