+
    lhs                        R t RR.t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RItRt ! R R4      tR tR	 t ! R
 R4      tR tR tRR ltR t ! R R4      tR t]R8X  d
   ]! 4        R# R# )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CoverageResultsN)	monotonicz#pragma NO COVERc                   0   a  ] tR t^Ct o RR ltR tRtV tR# )_IgnoreNc                    V'       g   \        4       M
\        V4      V n        V'       g   . M.V Uu. uF"  p\        P                  P	                  V4      NK$  	  upV n        R ^/V n        R# u upi )z<string>N)set_modsospathnormpath_dirs_ignore)selfmodulesdirsds   &&& lib/python3.14/trace.py__init___Ignore.__init__D   sW    ")SUs7|
#R37*937a +-''*:*:1*=37*9
#Q(*9s   (A,c                   W P                   9   d   V P                   V,          # W P                  9   d   ^V P                   V&   ^# V P                   F3  pVP                  VR,           4      '       g   K#  ^V P                   V&    ^# 	  Vf   ^V P                   V&   ^# V P                   FA  pVP                  V\        P
                  ,           4      '       g   K1  ^V P                   V&    ^# 	  ^ V P                   V&   ^ # )   .)r   r	   
startswithr   r
   sep)r   filename
modulenamemodr   s   &&&  r   names_Ignore.namesJ   s    %<<
++ #'(DLL$ ::C $$S3Y//+,Z(  '(DLL$ A ""1rvv:..+,Z(  $%Z     )r   r   r	   NN)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   C   s     )) )r    r   c                    \         P                  P                  V 4      p\         P                  P                  V4      w  r#V# ),Return a plausible module name for the path.)r
   r   basenamesplitext)r   baser   exts   &   r   _modnamer0   u   s3     77D!DGG$$T*MHOr    c                   \         P                  P                  V 4      pRp\        P                   F  p\         P                  P                  V4      pVP	                  V4      '       g   K;  V\        V4      ,          \         P                  8X  g   Kb  \        V4      \        V4      8  g   K}  TpK  	  V'       d   V \        V4      ^,           R pMT p\         P                  P                  V4      w  rTVP                  \         P                  R4      p\         P                  '       d!   VP                  \         P                  R4      p\         P                  P                  V4      w  rgVP                  R4      # )r+    Nr   )r
   r   normcasesysr   lenr   
splitdrivereplacealtsepr-   lstrip)r   comparepathlongestdirr.   driver   r/   s   &       r   _fullmodnamer>   |   s    ''""4(KGxxggs#!!#&&;s3x+@BFF+J3x#g,&	  CL1$%&''$$T*KE<<$D	yyy||BIIs+GG$$T*MH??3r    c                   R   a  ] tR t^t o R
R ltR tR tRRR/R lltRR ltR	t	V t
R# )r   Nc                0   Wn         V P                   f   / V n         V P                   P                  4       V n        W n        V P                  f   / V n        V P                  P                  4       V n        W@n        V P                  f   / V n        V P                  P                  4       V n        W0n        WPn        V P
                  '       df    \        V P
                  R4      ;_uu_ 4       p\        P                  ! V4      w  rpR R R 4       V P                  V P                  WVR7      4       R # R #   + '       g   i     L6; i  \        \        \        3 d9   p\        RT P
                  : RT: 2\         P"                  R7        R p?R # R p?ii ; i)Nrb)callerszSkipping counts file : file)countscopycountercalledfuncsrB   infileoutfileopenpickleloadupdate	__class__OSErrorEOFError
ValueErrorprintr4   stderr)r   rF   rI   rJ   rB   rK   ferrs   &&&&&&  r   r   CoverageResults.__init__   s/   ;;DK{{'')&#!D++002<<DL||((*;;;N$++t,,39;;q>0F -DNN6NPQ  -, Xz2 N)-c;BE**N NNs0   E ,D4*E 4E	?E F-FFc                V    VP                  R4      ;'       d    VP                  R4      # )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BH,=,=c,BBr    c                   V P                   pV P                  pV P                  pVP                   pVP                  pVP                  pV F$  pVP                  V^ 4      WX,          ,           W(&   K&  	  V F  p^W8&   K	  	  V F  p^WH&   K	  	  R# )z.Merge in the data from another CoverageResultsN)rF   rI   rB   get)	r   otherrF   rI   rB   other_countsother_calledfuncsother_callerskeys	   &&       r   rO   CoverageResults.update   s    &&,,||!--C **S!,|/@@FK   %C K % !CGL !r    Fignore_missing_filesc               x   V P                   '       dN   \        4        \        R4       V P                   p\        V4       F  w  rgp\        RV: RV: RV: 24       K  	  V P                  '       d   \        4        \        R4       R;r\        V P                  4       Fb  w  w  rpw  rpW8w  d   \        4        \        RVR4       Tp	Rp
W8w  d   W8w  d   \        RV4       Tp
\        R	V: R
V: RV: R
V: 24       Kd  	  / pV P                   F5  w  ppVP                  V/ 4      ;pVV&   V P                  VV3,          VV&   K7  	  / pVP                  4        EF  w  ppV P                  V4      '       d   K   VP                  R4      '       d   VRR pV'       d(   \        P                  P                  V4      '       g   Kk  VfI   \        P                  P                  \        P                  P                  V4      4      p\        V4      pM%Tp\        P                  ! VRR7       \!        V4      pV'       d   \#        V4      pM/ p\$        P&                  ! V4      p\        P                  P)                  VVR,           4      p\+        VR4      ;_uu_ 4       p\,        P.                  ! VP0                  4      w  ppRRR4       V P3                  VVVVX4      w  ppV'       g   EK  V'       g   EK  VVWv3VV&   EK  	  V'       dS   V'       dK   \        R4       \        V4       F0  pVV,          w  pprv\        VR RVV,          R RV RV R24       K2  	  V P4                  '       dd    \+        V P4                  R4      ;_uu_ 4       p \6        P8                  ! V P                  V P                   V P                  3V ^4       RRR4       R# R#   + '       g   i     EL; i  + '       g   i     R# ; i  \:         d.   p!\        RT!,          \<        P>                  R7        Rp!?!R# Rp!?!ii ; i)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.pycNT)exist_okz.coverrA   zlines   cov%   module   (path)5dz   z.1%z   ()wbz"Can't save counts files because %srD   ) rI   rT   sortedrB   rF   r`   itemsr]   r\   r
   r   isfiledirnameabspathr0   makedirsr>   _find_executable_linenos	linecachegetlinesjoinrL   tokenizedetect_encodingreadlinewrite_results_filerK   rM   dumprQ   r4   rU   )"r   show_missingsummarycoverdirrg   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mrV   rW   s"   &&&&$                             r   write_resultsCoverageResults.write_results   su    G%&$$E28-.h"J: < 3@ <<<G*+#%%Hdll+ =%%u';U$G%.$H "I>i&8'5) %IdE4GH ,  $Hf-5\\(B-GGI* $Xv,> ?If !,
 '~~/OHe''11  ((#CR=#BGGNN8,D,Dggoobggooh&?@%h/
C$/)(3
 1(;''1FS*x*?@Ih%%&66r{{C! &"55i6<eXOOFGw77#*FJ#HZ ?  0B t23D\8<Q5Cws';3zl$xjXYZ[ " <<<S$,,--KKd.>.> M !1& .-  &%%  .--  S:S@szzRRSsB   !$O5P :O-P O*-O>	8P >P P9"P44P9c                L    \        VRVR7      p^ p^ p	T;_uu_ 4        \        T^4       F  w  rY9   d2   TP                  RYJ,          ,          4       T	^,          p	T^,          pM=Y9   d'   \        T9   g   TP                  R	4       T^,          pMTP                  R
4       TP                  TP                  ^4      4       K  	  RRR4       Y3#   \         d1   p\        RT: RT: R2\        P                  R7       Ru Rp?# Rp?ii ; i  + '       g   i     Y3# ; i)z'Return a coverage results file in path.wr   ztrace: Could not open z for writing: z - skippingrD   Nz%5d: z>>>>>> z       )    r   )	rL   rQ   rT   r4   rU   	enumeratewritePRAGMA_NOCOVER
expandtabs)r   r   linesr   r   r   rK   rW   r   r   r   lines   &&&&&&      r   r|   "CoverageResults.write_results_file+  s    	4x8G W )% 3 &MM'I,="=>aKFqLG%n.D MM),qLGMM),dooa01 !4 " 1  	26=DGJJPK	 W" s)   C B*DD%D	D	DD#	)rI   rB   rH   rF   rJ   rK   )NNNNN)TFNN)r"   r#   r$   r%   r   r]   rO   r   r|   r&   r'   r(   s   @r   r   r      s2     N4C$^S+0^S@ r    c                `    / p\         P                  ! V 4       F  w  r4WA9  g   K  ^W$&   K  	  V# )z:Return dict where keys are lines in the line number table.)disfindlinestarts)codestrslinenosr   r   s   &&   r   _find_lines_from_coder   K  s2    G''-	GO . Nr    c                    \        W4      pV P                   F;  p\        P                  ! V4      '       g   K!  VP	                  \        W14      4       K=  	  V# )z<Return lineno dict for all code objects reachable from code.)r   	co_constsinspectiscoderO   _find_lines)r   r   r   cs   &&  r   r   r   U  sE     $D/G ^^>>!NN;q/0  Nr    c                   / p\         P                  p\        WR7      ;_uu_ 4       p\        P                  ! VP
                  4      pV FX  w  rgrp
V\         P                  8X  d;   V\         P                  8X  d&   Vw  rV	w  r\        W^,           4       F  p^W/&   K	  	  TpKZ  	  RRR4       V#   + '       g   i     T# ; i)zReturn 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   N)tokenINDENTrL   ry   generate_tokensr{   STRINGrange)r   r   r   
prev_ttyperV   tokttypetstrstartendr   slinescolelineecolis   &&              r   _find_stringsr   a  s     	A J	h	*	*a&&qzz2-0)ET$-"'KE"%KE"5!)4  5J .1 
+ H 
+	* Hs   A?B00C	c                r    \         P                  ! V 4      ;_uu_ 4       pVP                  4       pVP                  pRRR4       \        XT R4      p\        T X4      p\        YV4      #   + '       g   i     L4; i  \         d0   p\        RT : RT: 2\        P                  R7       / u Rp?# Rp?ii ; i)zAReturn dict where keys are line numbers in the line number table.NzNot printing coverage data for rC   rD   exec)ry   rL   readr   rQ   rT   r4   rU   compiler   r   )r   rV   progr   rW   r   r   s   &      r   ru   ru   x  s    ]]8$$668DzzH % 46*D8,Dt"" %$  !)307:zz	C	s9   A< A)A< )A9	4A< 9A< <B6$B1+B61B6c                   p   a  ] tR tRt o RR ltR tRR ltR tR tR t	R	 t
R
 tR tR tR tR tRtV tR# )r   i  Nc
                l   Wpn         Wn        \        WV4      V n        / V n        / V n        ^ V n        W n        / V n        / V n	        / V n
        RV n        V	'       d   \        4       V n        V'       d   V P                  V n        R# V'       d   V P                  V n        R# V'       d-   V'       d%   V P                   V n        V P"                  V n        R# V'       d%   V P                   V n        V P&                  V n        R# V'       d%   V P                   V n        V P(                  V n        R# ^V n        R# )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
N)rJ   rK   r   ignorerF   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
ignoredirsrJ   rK   timings
   &&&&&&&&&&r   r   Trace.__init__  s    ( j5 
#gDO#<<D#::Du#22D"==DO#22D"33DO#22D"33DO DNr    c                J    ^ RI pVP                  pV P                  WV4       R# )r   N)__main____dict__runctx)r   cmdr   dicts   &&  r   run	Trace.run  s      Ct$r    c                   Vf   / pVf   / pV P                   '       gA   \        P                  ! V P                  4       \        P                  ! V P                  4        \        WV4       V P                   '       g/   \        P                  ! R 4       \        P                  ! R 4       R # R #   T P                   '       g.   \        P                  ! R 4       \        P                  ! R 4       i i ; ir   )r   	threadingsettracer   r4   r   )r   r   globalslocalss   &&&&r   r   Trace.runctx  s    ?bG>B6~~~t//0LL))*	)v&>>>T"""4( "4>>>T"""4( "s    B. .AC/c               ,   R pV P                   '       g!   \        P                  ! V P                  4        V! V/ VB pV P                   '       g   \        P                  ! R 4       V#   T P                   '       g   \        P                  ! R 4       i i ; ir   )r   r4   r   r   )r   funcargskwresults   ""*, r   runfuncTrace.runfunc  sn    ~~~LL))*	#4&2&F>>>T" >>>T" "s   A( (+Bc                |   VP                   pVP                  pV'       d   \        V4      pMR pVP                  pR pW P                  9   d+   V P                  V,          e   V P                  V,          pEM'R V P                  V&   \
        P                  ! V4       Uu. uF#  p\        P                  ! V4      '       g   K!  VNK%  	  pp\        V4      ^8X  d   \
        P                  ! V^ ,          4       U	u. uF  p	\        V	\        4      '       g   K  V	NK  	  p
p	\        V
4      ^8X  dr   \
        P                  ! V
^ ,          4       Uu. uF  p\        VR4      '       g   K  VNK  	  pp\        V4      ^8X  d"   V^ ,          P                  pW`P                  V&   Ve
   V: RV: 2pW4V3# u upi u up	i u upi )N	__bases__r   )f_codeco_filenamer0   co_namer   gcget_referrersr   
isfunctionr5   
isinstancer   hasattrr"   )r   framer   r   r   r   clsnamerV   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 61#..q1 Q 6E 3
 5zQ$&$4$4U1X$> 5$>q *1d 3 $> 5u:?*,*:*:58*D ?*DQ&-a&=  !q*DG ?7|q(")!*"5"5
 4;**40")84HX---35?s$   F/F/8F4F4F9%F9c                    VR8X  d?   V P                  V4      pV P                  VP                  4      p^V P                  WT3&   R# R# )z[Handler for call events.

Adds information about who called who to the self._callers dict.
callN)r  f_backr   )r   r  whyarg	this_funcparent_funcs   &&&&  r   r   Trace.globaltrace_trackcallers  sE    
 &=44U;I66u||DK67DMM;23	 r    c                X    VR8X  d#   V P                  V4      p^V P                  V&   R# R# )z_Handler for call events.

Adds (filename, modulename, funcname) to the self._calledfuncs dict.
r  N)r  r   )r   r  r  r  r  s   &&&& r   r   Trace.globaltrace_countfuncs
  s0    
 &=44U;I+,Di( r    c                Z   VR8X  d   VP                   pVP                  P                  RR4      pV'       dr   \        V4      pVea   V P                  P                  WV4      pV'       g<   V P                  '       d   \        RV: RVP                  : 24       V P                  # R# R# R# R# )zzHandler for call events.

If the code block being entered is to be ignored, returns 'None',
else returns self.localtrace.
r  __file__Nz --- modulename: ri   )
r   	f_globalsr`   r0   r   r   r   rT   r   r   )r   r  r  r  r   r   r   	ignore_its   &&&&    r   r   Trace.globaltrace_lt  s     &=<<D**:t<H &h/
) $ 1 1( GI$:::!&0$,,$@ B#.	 % *  r    c                >   VR 8X  Ed   VP                   P                  pVP                  pWE3pV P                  P	                  V^ 4      ^,           V P                  V&   V P
                  '       d.   \        R\        4       V P
                  ,
          ,          RR7       \        P                  P                  V4      p\        P                  ! WE4      p\        RWu3,          RR7       V'       d   \        RVRR7       V P                  # \        4        V P                  # r   z%.2f )r   z%s(%d)r2   rC   )r   r   f_linenorF   r`   r   rT   r   r
   r   r,   rv   getliner   )	r   r  r  r  r   r   re   bnamer   s	   &&&&     r   r    Trace.localtrace_trace_and_count*  s    &=||//H^^F"C#{{sA6:DKKf$// 9:DGG$$X.E$$X6D(e_,"5dDb)  r    c                   VR 8X  d   VP                   P                  pVP                  pV P                  '       d.   \	        R\        4       V P                  ,
          ,          RR7       \        P                  P                  V4      p\        P                  ! WE4      p\	        RWe3,          RR7       V'       d   \	        RVRR7       V P                  # \	        4        V P                  # r  )r   r   r  r   rT   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GG$$X.E$$X6D(e_,"5dDb)  r    c                    VR 8X  dV   VP                   P                  pVP                  pWE3pV P                  P	                  V^ 4      ^,           V P                  V&   V P
                  # )r   )r   r   r  rF   r`   r   )r   r  r  r  r   r   re   s   &&&&   r   r   Trace.localtrace_countN  sU    &=||//H^^F"C#{{sA6:DKKr    c                    \        V P                  V P                  V P                  V P                  V P
                  R 7      # ))rJ   rK   rI   rB   )r   rF   rJ   rK   r   r   )r   s   &r   resultsTrace.resultsV  s2    t{{4;;'+||+/+<+<'+}}6 	6r    )r   r   r   rF   r   r   r   rJ   r   rK   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(   s   @r   r   r     sH     0d%
)	'.R	8-.&"6 6r    c                  z  aa ^ RI p V P                  RR7      pVP                  RRRR7       VP                  RR	4      pVP                  R
RRRR7       VP                  RRRRR7       VP                  RRRRR7       VP                  RRRRR7       VP                  R4      pVP	                  4       pVP                  RRRRR7       VP                  RRRRR7       VP                  RR R!R"7       VP                  R#R$R%R"7       VP                  R&R'RR(R7       VP                  R)R*RR+R7       VP                  R,R-RR.R7       VP                  R/R04      pVP                  R1R2. R3R47       VP                  R5R2. R6R47       VP                  R7RR8R9R47       VP                  R:R;R<R=7       VP                  R>V P
                  R?R=7       VP                  4       pVP                  '       d-   \        P                  ! R@4      o\        P                  ! RA4      oVV3RB lpVP                   UUu. uF*  qfP                  RC4       F  pVP                  4       NK  	  K,  	  uppVn
        VP                   UUu. uF0  qfP                  \        P                  4       F  pV! V4      NK  	  K2  	  uppVn        VP                  '       dv   VP                   '       g   VP#                  RD4       \%        VP                   VP                   RE7      p	V	P'                  VP(                  VP*                  VP,                  4      # \/        VP0                  VP2                  VP4                  VP6                  .4      '       g   VP#                  RF4       VP4                  '       d6   VP2                  '       g   VP0                  '       d   VP#                  RG4       VP*                  '       d$   VP2                  '       g   VP#                  RH4       VP8                  f   VP#                  RI4       \;        VP2                  VP0                  VP4                  VP6                  VP                  VP                  VP                   VP                   VP<                  RJ7	      p
 VP>                  '       dt   ^ RI pVP8                  pVPC                  V4      w  rpVPD                  .VPF                  O\H        n%        RKRLRMVPD                  RNVPL                  ROVPN                  RPVRQR/pMVP8                  .VPF                  O\H        n%        \        PP                  PS                  VP8                  4      \H        PP                  ^ &   \T        PV                  ! VP8                  4      ;_uu_ 4       p\Y        VP[                  4       VP8                  RR4      pRRR4       RMVP8                  RKRLRNRRQR/pV
P]                  XVV4       V
Pe                  4       p	VPf                  '       g4   V	P'                  VP(                  VP*                  VP,                  4       R# R# u uppi u uppi   + '       g   i     L; i  \^         d>   p\H        P`                  ! RS\H        PJ                  ^ ,          : RTT: 24        Rp?LRp?i\b         d     Li ; i)Ur   NT)colorz	--versionversionz	trace 2.0)actionr*  zMain optionsz(One of these (or --report) must be givenz-cz--count
store_truezCount 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--listfuncszKeep 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--reportzGenerate 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
--coverdirzDirectory 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                    < \         P                  P                  \         P                  P                  V 4      4      p V P	                  R S4      P	                  RS4      p \         P                  P                  V 4      # )z$prefixz$exec_prefix)r
   r   
expanduser
expandvarsr7   r   )s_exec_prefix_prefixs   &r   parse_ignore_dirmain.<locals>.parse_ignore_dir  sX    GGrww11!45IIi)11.,Oww""r    ,z-r/--report requires -f/--file)rJ   rK   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   rJ   rK   r   r"   r   r  __package__
__loader____spec__
__cached__r   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reportrE   errorr   r   missingr   r   anyr   r   	listfuncs
trackcallsr2  r   r   modulerunpy_get_module_detailsr   r5  r4   argvparentloaderr   rr   io	open_coder   r   r   rQ   exit
SystemExitr%  	no_report)rE  parsergrp_grpoptsr>  r   r   r;  r%  trZ  module_namemod_namemod_specr   globsr   rW   r<  r=  s                      @@r   mainrm  \  s   $$4$0F
I{K

#
#N68C T9\&  '
 T9\F  HT=E  F T>,7  8 
#
#K
0C++-DdJ|   
 	dM,G  H T8>  @T<2  3 T;|   T;|=  > T:l+  , 
#
#I-/C&x!  " ^HbG  H 
</  1

#.  0
8+=+=+  - D$$X. )),7# $(#5#5O#5a# ))+AM &#5OD !%N /19LA (*9L + /NDO {{{yyyLL9:!DIIF$$T\\4<<OO

DJJHII 4 	5 ~~~4:::OP|||DJJJJK}}JKdjj$**??t7I7Iii	5A;;;--K','@'@'M$H((:4>>:CHJD,,xhooHdE 77CH''//$--8CHHQKdmm,,rwwy$--@ - DMMJtd	E 	
ue$ iikG>>>dllDLL$--H ONX -,  HSXXa[[#FGG sI   ,0Y46YD	Y& &Y/Y& Y#	Y& &Z:13Z))Z:6Z:9Z:r   r   )__doc____all__r_  rv   r
   r4   rM  r   ry   r   r   r   rM   timer   r   r   r   r   r0   r>   r   r   r   r   ru   r   rm  r"   r'  r    r   <module>rq     s   8( %
& 	  	 
     	 
  # #0 0d 8q qf
.#T6 T6lPId ZF r    