
    L-PhQ                       U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlmZmZmZmZmZ ddlmZmZmZ ddlmZmZ ddlmZmZ  ee          Zg Z de!d	<   dZ" G d
 d          Z# G d de#          Z$d`dZ%dadZ&dbdZ'dcdZ(dgZ)de!d <   g Z*de!d!<   eddd#            Z+eded$            Z+dfd&Z+	 	 	 	 dgdhd.Z,didjd1Z-dkdld5Z.dmd7Z/dnd8Z0d9hZ1dod<Z2dpd>Z3dqd?Z4drdBZ5 G dC dD          Z6 G dE dF          Z7 G dG dH          Z8 G dI dJ          Z9dsdtdMZ:	 	 dudvdTZ;dwdWZ< ej=                    Z> ej=                    Z?d9Z@	 	 	 dxdyd\ZAdzd_ZBdS ){z'Control of and utilities for debugging.    )annotationsN)overloadAnyCallableFinalIO)IterableIteratorMapping)human_sorted_itemsisolate_module)AnyCallable	TWritablez	list[str]FORCED_DEBUGc                  b    e Zd ZdZdZ	 dddZddZddZej	        dd            Z
ddddZdS )DebugControlz!Control and output for debugging.FNoptionsIterable[str]outputIO[str] | None	file_name
str | NonereturnNonec                L   t          |          t          z   | _        d| _        g }|                     d          rL|                    t                      j                   |                    t                      j                   |                     d          r&|                    t                      j                   |                     d          r|                    t                     t                              |||          | _        | j        j        | _        dS )z4Configure the options and output file for debugging.Fprocesspytestpid)r   filtersN)listr   r   suppress_callersshouldappend
CwdTrackerfilterProcessTrackerPytestTrackeradd_pid_and_tidDebugOutputFileget_oner   outfile
raw_output)selfr   r   r   r   s        N/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/debug.py__init__zDebugControl.__init__.   s     G}}|3 %;;y!! 	4NN:<<.///NN>++2333;;x   	3NN=??1222;;u 	,NN?+++%-- . 
 

 +-    strc                (    d| j         d| j        dS )Nz<DebugControl options=z raw_output=>)r   r,   r-   s    r.   __repr__zDebugControl.__repr__H   s    XXXDOXXXXr0   optionboolc                2    |dk    r	| j         rdS || j        v S )z@Decide whether to output debug information in category `option`.callersF)r!   r   r-   r6   s     r.   r"   zDebugControl.shouldK   s'    Y4#85$,&'r0   Iterator[None]c              #  V   K   | j         }d| _         	 dV  || _         dS # || _         w xY w)z;A context manager to prevent call stacks from being logged.TN)r!   )r-   olds     r.   without_callerszDebugControl.without_callersQ   sH       # $	(EEE$'D!!!CD!''''s    	(excmsgr@   BaseException | Nonec          	     0   | j                             |dz              |F| j                             d                    t          j        d||j                                       |                     d          rWt          j                    d         d         j	        
                    d          }|| j                             d|d           |                     d          rt          | j         d	           | j                                          dS )
zWrite a line of debug output.

        `msg` is the line to write. A newline will be appended.

        If `exc` is provided, a stack trace of the exception will be written
        after the message.

        
N r-      r   zself: r9   outskip)r   writejoin	tracebackformat_exception__traceback__r"   inspectstackf_localsgetdump_stack_framesflush)r-   rA   r@   caller_selfs       r.   rJ   zDebugControl.write[   s     	#*%%%?Kbggi&@sCL]&^&^__```;;v 	>!-//!,Q/8<<VDDK&!!"<;"<"<"<===;;y!! 	7$+A6666r0   N)r   r   r   r   r   r   r   r   )r   r1   r6   r1   r   r7   r   r;   rA   r1   r@   rB   r   r   )__name__
__module____qualname____doc__show_repr_attrr/   r5   r"   
contextlibcontextmanagerr>   rJ    r0   r.   r   r   )   s        ++N !%	. . . . .4Y Y Y Y( ( ( ( ( ( ( ( >B        r0   r   c                  R    e Zd ZdZddZddZej        dd
            ZddddZ	dS )NoDebuggingzBA replacement for DebugControl that will never try to do anything.r   r   c                    d S rV   ra   r4   s    r.   r/   zNoDebugging.__init__r   s    r0   r6   r1   r7   c                    dS )z'Should we write debug messages?  Never.Fra   r:   s     r.   r"   zNoDebugging.shouldv   s    ur0   r;   c              #     K   dV  dS )z+A dummy context manager to satisfy the api.Nra   r4   s    r.   r>   zNoDebugging.without_callersz   s       	r0   Nr?   rA   r@   rB   c                    t          d          )zThis will never be called.z)NoDebugging.write should never be called.)AssertionError)r-   rA   r@   s      r.   rJ   zNoDebugging.write   s    HIIIr0   r   r   rW   rX   rY   )
rZ   r[   r\   r]   r/   r"   r_   r`   r>   rJ   ra   r0   r.   rc   rc   p   s        LL           >B J J J J J J J Jr0   rc   labelr1   r   c                8    d                     d| z   dz             S )zMake a nice header string.z
--{:-<60s} format)rj   s    r.   info_headerro      s    s5y}---r0   infoIterable[tuple[str, Any]]Iterator[str]c              #    K   t          |           } | sdS dt          fd| D                       sJ | D ]\  }}|g k    rd}t          |t                    rEt	          t          t          |                              dk     rd|t          |          fz  V  gt          |t           t          t          f          rd|fz  }|D ]}ddz   ||fz  V  d	}d
||fz  V  dS )zProduce a sequence of formatted lines from info.

    `info` is a sequence of pairs (label, data).  The produced lines are
    nicely formatted, ready to print.

    N   c              3  D   K   | ]\  }}t          |          k     V  d S rV   len).0l_	label_lens      r.   	<genexpr>z!info_formatter.<locals>.<genexpr>   s2      33das1vv	!333333r0   z-none-z%*s: %rz%*s:z%*s %srF   rE   z%*s: %s)r    all
isinstancetuplerw   reprset)rp   rj   dataprefixer{   s        @r.   info_formatterr      sI      ::D I3333d33333333 7 7t2::DdE"" 		7s4d+<+<'='='B'By%t======tS%011 	7y%00F  )A+vq!99999 y%6666667 7r0   rJ   Callable[[str], None]headerr   c                v     | t          |                     t          |          D ]} | d|            dS )a,  Write a sequence of (label,data) pairs nicely.

    `write` is a function write(str) that accepts each line of output.
    `header` is a string to start the section.  `info` is a sequence of
    (label, data) pairs, where label is a str, and data can be a single
    value, or a list/set/tuple.

    rl   N)ro   r   )rJ   r   rp   lines       r.   write_formatted_infor      sV     
E+f

t$$  j$jj r0   r@   	Exceptionc                    t          j        t          |           |           }d                    d |D                       S )zIGet a one-line summary of an exception, including class name and message.|c              3  >   K   | ]}|                                 V  d S rV   )rstrip)rx   ry   s     r.   r|   zexc_one_line.<locals>.<genexpr>   s*      ..1AHHJJ......r0   )rL   format_exception_onlytyperK   )r@   liness     r.   exc_one_liner      s;    +DIIs;;E88........r0   )z5.*[/\\]pytest-of-.*[/\\]pytest-\d+([/\\]popen-gw\d+)?ztmp:list[tuple[str, str]]_FILENAME_REGEXES_FILENAME_SUBSfilenamec                    d S rV   ra   r   s    r.   short_filenamer          Dr0   c                    d S rV   ra   r   s    r.   r   r      r   r0   r   c                   t           st          j        D ]}t                               |df           ddl}t                               t
          j                            |j                  df           t                               d d           | Ft          D ]\  }}t          j        |||           } t           D ]\  }}|                     ||          } | S )zIShorten a file name. Directories are replaced by prefixes like 'syspath:'zsyspath:r   Nzcov:c                ,    t          | d                   S Nr   rv   )pairs    r.   <lambda>z short_filename.<locals>.<lambda>   s    c$q'll r0   T)keyreverse)r   syspathr#   coverageosdirname__file__sortr   resubreplace)r   pathdirr   patr   beforeafters          r.   r   r      s     Kx 	9 	9G!!7J"78888rwx/@AA6JKKK!:!:TJJJ) 	2 	2HCvc311HH+ 	7 	7MFE''66HHOr0   FrI   intfullr7   	frame_idsshort_filenamesc                   g d}t          j                    d| d         }|s|D ]}t          j        |fd|          }g }|D ]f}|j        dd}	|r|	t          |j                  ddz  }	|j        }
|rt          |
          }
|	|
 d	|j	         z  }	|
                    |	           gd
                    |          S )a^  Return a string summarizing the call stack.

    The string is multi-line, with one line per stack frame. Each line shows
    the function name, the file name, and the line number:

        ...
        start_import_stop : /Users/ned/coverage/trunk/tests/coveragetest.py:95
        import_local_file : /Users/ned/coverage/trunk/tests/coveragetest.py:81
        import_local_file : /Users/ned/coverage/trunk/coverage/backward.py:159
        ...

    `skip` is the number of closest immediate frames to skip, so that debugging
    functions can call this and not be included in the result.

    If `full` is true, then include all frames.  Otherwise, initial "boring"
    frames (ones in site-packages and earlier) are omitted.

    `short_filenames` will shorten filenames using `short_filename`, to reduce
    the amount of repetitive noise in stack traces.

    )z<string>z
\bigor.py$z\bsite-packages\bNc                6    t          j        || j                  S rV   )r   searchr   )fir   s     r.   r   zshort_stack.<locals>.<lambda>   s    RYsBK%@%@ r0   z>30sz : z#xrl   :rD   )rO   rP   	itertools	dropwhilefunctionidframer   r   linenor#   rK   )rI   r   r   r   BORING_PRELUDErP   r   r   
frame_infor   r   s              r.   short_stackr      s   8  N *1$r)BE ! 	 	C' #@@@ EE E  
%//// 	2r**++11111D& 	0%h//H811j/111T99Ur0   rH   r   c                X    |                      t          |dz             dz              dS )z&Print a summary of the stack to `out`.rF   )rI   rD   N)rJ   r   rG   s     r.   rS   rS     s.    IIktAv&&&-.....r0   2   textnumcharsc                `    t          j                    }||_        |                    |           S )z(`repr(text)`, but limited to `numchars`.)reprlibRepr	maxstringr   )r   r   rs      r.   clipped_reprr     s$    AAK66$<<r0   id64c                H    d}t          ddd          D ]
}|| |z	  z  }|dz  S )z-Given a 64-bit id, make a shorter 16-bit one.r   @      i  )range)r   id16offsets      r.   short_idr     s<    D2r""  &=r0   c                    t          t          j                              d}t          j                    dd| d|  } | S )z.A filter to add pid and tid to debug messages.04x5d.z: )r   _thread	get_identr   getpid)r   tids     r.   r(   r(   #  sI     g'))**
0
0Cikk,,,s,,d,,DKr0   z$coverage.object_idr-   r   c                    d | j                                         D             }d                    | j        j        t          |           d                    d |D                                 S )z<A function implementing an automatic __repr__ for debugging.c              3     K   | ]9\  }}t          |d d          r#t          j        |          s|t          v3||fV  :dS )r^   TN)getattrrO   ismethodAUTO_REPR_IGNORErx   kvs      r.   r|   zauto_repr.<locals>.<genexpr>/  sp        1a1&--  ## %%% 
A &%%%	 r0   z<{klass} @{id:#x}{attrs}>rE   c              3  ,   K   | ]\  }}d | d|V  dS )rl   =Nra   r   s      r.   r|   zauto_repr.<locals>.<genexpr>8  s2      ;;1m!mmamm;;;;;;r0   )klassr   attrs)__dict__itemsrn   	__class__rZ   r   rK   )r-   
show_attrss     r.   	auto_reprr   -  s|     =..00  J '--n%d88gg;;
;;;;; .   r0   r   c                h   t          | t                    rd |                                 D             S t          | t          t          f          r" t          |           d | D                       S t          | d          r0t          d | j                                        D                       S | S )z>Turn things which are nearly dict/list/etc into dict/list/etc.c                4    i | ]\  }}|t          |          S ra   simplify)rx   r   vvs      r.   
<dictcomp>zsimplify.<locals>.<dictcomp>?  s$    66651b(2,,666r0   c              3  4   K   | ]}t          |          V  d S rV   r   )rx   r   s     r.   r|   zsimplify.<locals>.<genexpr>A  s(      00x||000000r0   r   c                     i | ]\  }}d |z   |S )r   ra   r   s      r.   r   zsimplify.<locals>.<dictcomp>C  s"    AAAdaQAAAr0   )	r~   dictr   r    r   r   hasattrr   r   r   s    r.   r   r   <  s    !T 66AGGII6666	Ae}	%	% tAww00a000000	J		 AAaj.>.>.@.@AAABBBr0   c                H    t          j         t          |                      dS )zEDebug helper to pretty-print data, including SimpleNamespace objects.N)pprintr   r   s    r.   ppr   H  s      M(1++r0   r   Iterable[Callable[[str], str]]c                ,   |                                  }| t          |          d         }|} |D ]`}g }|                                 D ]2}|                     ||                                                     3d                    |          } a| |z   S )aQ  Run `text` through a series of filters.

    `filters` is a list of functions. Each takes a string and returns a
    string.  Each is run in turn. After each filter, the text is split into
    lines, and each line is passed through the next filter.

    Returns: the final string that results after all of the filters have
    run.

    NrD   )r   rw   
splitlinesextendrK   )r   r   
clean_textending	filter_fnr   r   s          r.   filter_textr  N  s     J#j//""#FD    	OO%% 	7 	7DLL433556666yy&=r0   c                  "    e Zd ZdZd	dZd
dZdS )r$   z*A class to add cwd info to debug messages.r   r   c                    d | _         d S rV   )cwdr4   s    r.   r/   zCwdTracker.__init__f  s    #r0   r   r1   c                `    t          j                    }|| j        k    rd|d| }|| _        |S )z#Add a cwd message for each new cwd.zcwd is now rD   )r   getcwdr  )r-   r   r  s      r.   r%   zCwdTracker.filteri  s9    ikk$(??000$00DDHr0   Nri   r   r1   r   r1   rZ   r[   r\   r]   r/   r%   ra   r0   r.   r$   r$   d  sB        44$ $ $ $     r0   r$   c                  "    e Zd ZdZd	dZd
dZdS )r&   z)Track process creation for debug logging.r   r   c                D    t          j                    | _        d| _        d S )NF)r   r   r   did_welcomer4   s    r.   r/   zProcessTracker.__init__t  s    	 r0   r   r1   c                ,   d}t          j                    }| j        |k    rd| j         d| d}|| _        nO| j        sHt	          t
          dd          }d|dt
          j        dd	|dz   d
t          j                    dz   }|rd| _        ||z   S |S )z1Add a message about how new processes came to be.rE   zNew process: forked z -> rD   argvNzNew process: pid=z, executable: zNew process: cmd: zNew process parent pid: T)r   r   r   r  r   r   
executablegetppid)r-   r   welcomer   r  s        r.   r%   zProcessTracker.filterx  s    ikk8s??BTXBB3BBBGDHH! 	3--DHHHCNHHH1t1112?RZ\\???@   	#DT>!Kr0   Nri   r  r  ra   r0   r.   r&   r&   r  sB        33! ! ! !     r0   r&   c                  "    e Zd ZdZd	dZd
dZdS )r'   z<Track the current pytest test name to add to debug messages.r   r   c                    d | _         d S rV   )	test_namer4   s    r.   r/   zPytestTracker.__init__  s    %)r0   r   r1   c                b    t          j        d          }|| j        k    rd| d| }|| _        |S )z+Add a message when the pytest test changes.PYTEST_CURRENT_TESTzPytest context: rD   )r   getenvr  )r-   r   r  s      r.   r%   zPytestTracker.filter  s@    I344	&&9i99499D&DNr0   Nri   r  r  ra   r0   r.   r'   r'     sB        FF* * * *     r0   r'   c                      e Zd ZU dZd dZe	 	 	 	 d!d"d            ZdZded<   dZ	ded<   ed#d            Z
ed$d            Zed%d            Zd&dZd%dZdS )'r)   z9A file-like object that includes pid and cwd information.r+   r   r   r   c                l    || _         t          |          | _        t          j                    | _        d S rV   )r+   r    r   r   r   r   )r-   r+   r   s      r.   r/   zDebugOutputFile.__init__  s)    
 G}}9;;r0   Nra   Ffileobjr   r   interimr7   r   c                   | | ||          S |                                  \  }}||r|t          |dd          }nnt          j        dt                    }|dv rt          t          |          }n:|r,t          |dd          }t          j        |j	                   nt          j
        } | ||          }|                     ||           |j        st          |          |_        |S )a  Get a DebugOutputFile.

        If `fileobj` is provided, then a new DebugOutputFile is made with it.

        If `fileobj` isn't provided, then a file is chosen (`file_name` if
        provided, or COVERAGE_DEBUG_FILE, or stderr), and a process-wide
        singleton DebugOutputFile is made.

        `filters` are the text filters to apply to the stream to annotate with
        pids, etc.

        If `interim` is true, then a future `get_one` can replace this one.

        Nazutf-8)encodingCOVERAGE_DEBUG_FILE)stdoutstderr)_get_singleton_dataopenr   r  FORCED_DEBUG_FILEr   r   atexitregistercloser$  _set_singleton_datar   r    )clsr  r   r   r  the_one
is_interims          r.   r*   zDebugOutputFile.get_one  s   , 3w(((!5577?j?$y#@@@ I&;=NOO	 444%c955GG )"9cGDDDGOGM2222!jGc'7++G##GW555 	,"7mmGOr0   z'$coverage.debug.DebugOutputFile.the_onez
Final[str]SYS_MOD_NAMEthe_one_and_is_interimSINGLETON_ATTRr-  r   c                    t          j        | j                  }t          || j        ||f           |t
          j        | j        <   dS )z-Set the one DebugOutputFile to rule them all.N)types
ModuleTyper/  setattrr1  r   modules)r,  r-  r  singleton_modules       r.   r+  z#DebugOutputFile._set_singleton_data  sH     !+C,<== #"4w6HIII(8C$%%%r0   #tuple[DebugOutputFile | None, bool]c                v    t           j                            | j                  }t	          || j        d          S )zGet the one DebugOutputFile.)NT)r   r6  rR   r/  r   r1  )r,  r7  s     r.   r%  z#DebugOutputFile._get_singleton_data  s1     ;??3+;<<');\JJJr0   c                T    | j         t          j        v rt          j        | j         = dS dS )z6Delete the one DebugOutputFile, just for tests to use.N)r/  r   r6  )r,  s    r.   _del_singleton_dataz#DebugOutputFile._del_singleton_data  s/     s{**C,--- +*r0   r   r1   c                    | j         J | j                             t          || j                             | j                                          dS )z9Just like file.write, but filter through all our filters.N)r+   rJ   r  r   rT   )r-   r   s     r.   rJ   zDebugOutputFile.write  sL    |''';tT\::;;;r0   c                J    | j         J | j                                          dS )zFlush our file.N)r+   rT   r4   s    r.   rT   zDebugOutputFile.flush  s*    |'''r0   )r+   r   r   r   )NNra   F)
r  r   r   r   r   r   r  r7   r   r)   )r-  r)   r  r7   r   r   )r   r8  ri   )r   r1   r   r   )rZ   r[   r\   r]   r/   classmethodr*   r/  __annotations__r1  r+  r%  r;  rJ   rT   ra   r0   r.   r)   r)     s        CC     #' $24, , , , [,f  ILHHHH!9N99999 9 9 [9 K K K [K
 . . . [.
        r0   r)   rA   rP   c                    t                               d          }|                    | dz              |rt          |d           dS dS )z.Write a log message as forcefully as possible.Tr  rD   rF   rG   N)r)   r*   rJ   rS   )rA   rP   rH   s      r.   logrB    sY    

!
!$
!
/
/CIIc$h +c******+ +r0   ra   	decoratorCallable[..., Any]butnotr   privatec                      fd}|S )z2A class decorator to apply a decorator to methods.c                    t          j        | t           j                  D ]L\  }}|| j        vr|dk    rs|                    d          r-|v r2t          | | |                     M| S )Nr/   rz   )rO   
getmembers	isroutiner   
startswithr5  )r,  namemethrE  rC  rF  s      r.   
_decoratorz$decorate_methods.<locals>._decorator  s    !,S'2CDD 	0 	0JD$3<''z!! 4??3#7#7 v~~Cyy////
r0   ra   )rC  rE  rF  rN  s   ``` r.   decorate_methodsrO    s0    
 
 
 
 
 
 
 r0   funcr   c                H     t          j                   d fd            }|S )z;A function decorator to stop in the debugger for each call.argsr   kwargsr   c                 p    dd l }t          j        t          _        |                                  | i |S r   )pudbr   
__stdout__r#  	set_trace)rR  rS  rU  rP  s      r.   _wrapperzbreak_in_pudb.<locals>._wrapper  s:    ^
tT$V$$$r0   )rR  r   rS  r   r   r   	functoolswraps)rP  rX  s   ` r.   break_in_pudbr\    s=    _T% % % % % %
 Or0   T	show_args
show_stackshow_returnc                     d fd}|S )z:A method decorator to debug-log each call to the function.rP  r   r   c                P     t          j                   d fd            }|S )Nr-   r   rR  rS  r   c                x   t          | t          d           }|Bt          j                    ddt	          t
                    d}t          | t          |           d}rvd                    t          t          |                    }d                    d |
                                D                       }|dz  }||z  }|r|r|dz  }||z  }|dz  }r=|d	z  }|d
                    t          d                                                    z  }t	          t                    }| d|dd
j         | d}t                              d                              |            
| g|R i |}	rB| d|dd
j         d|	d}t                              d                              |           |	S )N08drl   04drE   z, c              3  *   K   | ]} d j         | V  dS )z{}={!r}Nrm   )rx   items     r.   r|   zCshow_calls.<locals>._decorator.<locals>._wrapper.<locals>.<genexpr>8  s-      #W#W$4I$4d$;#W#W#W#W#W#Wr0   ()z @ z; T)r   rD   rA  z return )r   OBJ_ID_ATTRr   r   nextOBJ_IDSr5  rK   mapr   r   r   r   CALLSrZ   r)   r*   rJ   )r-   rR  rS  oidextraeargsekwargscallidrA   retrP  r]  r_  r^  s             r.   rX  z0show_calls.<locals>._decorator.<locals>._wrapper/  s   $T22C{>>>4==>>>k3///E 		#dD//22))#W#W#W#W#WWW "W "TME  S;t#D#D#D#O#O#Q#QRRR%[[F@@6@@@@u@@@C##D#1177<<<$t-d---f--C ALLvLLLDMLL3LLL'''55;;C@@@Jr0   )r-   r   rR  r   rS  r   r   r   rY  )rP  rX  r]  r_  r^  s   ` r.   rN  zshow_calls.<locals>._decorator.  sM    				 	 	 	 	 	 	 	 
		4 r0   rP  r   r   r   ra   )r]  r^  r_  rN  s   ``` r.   
show_callsru  (  s5           : r0   envMapping[str, str]c                R   ddh}h d}h d}g }|                                  D ]u\  }d}|v rd}nt          fd|D                       rd}|rHt          fd|D                       rt          j        d	d
|          }|                    |f           vt          |          S )aL  Filter environment variables for a debug display.

    Select variables to display (with COV or PY in the name, or HOME, TEMP, or
    TMP), and also cloak sensitive values with asterisks.

    Arguments:
        env: a dict of environment variable names and values.

    Returns:
        A list of pairs (name, value) to show.

    COVPY>   TMPHOMETEMP>   APIKEYPASSTOKENSECRET	SIGNATUREFTc              3      K   | ]}|v V  	d S rV   ra   rx   slugrL  s     r.   r|   z/relevant_environment_display.<locals>.<genexpr>d  s'      00$000000r0   c              3      K   | ]}|v V  	d S rV   ra   r  s     r.   r|   z/relevant_environment_display.<locals>.<genexpr>g  s'      22D44<222222r0   z\w*)r   anyr   r   r#   r   )rv  slugsincludecloakto_showvalkeeprL  s          @r.   relevant_environment_displayr  N  s     DME%%%GBBBEGYY[[ 	( 	(	c7??DD0000%00000 	D 	(2222E22222 .fUC--NND#;'''g&&&r0   )rj   r1   r   r1   )rp   rq   r   rr   )rJ   r   r   r1   rp   rq   r   r   )r@   r   r   r1   )r   r1   r   r1   )r   r   r   r   )r   r   r   r   )r   FFF)
rI   r   r   r7   r   r7   r   r7   r   r1   )r   )rH   r   rI   r   r   r   )r   )r   r1   r   r   r   r1   )r   r   r   r   r  )r-   r   r   r1   )r   r   r   r   )r   r   r   r   )r   r1   r   r   r   r1   )F)rA   r1   rP   r7   r   r   )ra   F)rC  rD  rE  r   rF  r7   r   rD  rt  )TFF)r]  r7   r^  r7   r_  r7   r   rD  )rv  rw  r   r   )Cr]   
__future__r   r(  r_   rZ  rO   r   r   r   r   r   r   rL   r3  r   typingr   r   r   r   r   collections.abcr	   r
   r   coverage.miscr   r   coverage.typesr   r   r   r?  r'  r   rc   ro   r   r   r   r   r   r   r   rS   r   r   r(   r   r   r   r   r  r$   r&   r'   r)   rB  rO  r\  countrk  rm  ri  ru  r  ra   r0   r.   <module>r     s   . - - " " " " " "               				  				  



                    8 7 7 7 7 7 7 7 7 7 < < < < < < < < 1 1 1 1 1 1 1 1^B      D D D D D D D DNJ J J J J, J J J(. . . .
7 7 7 76   $/ / / / G,      )+ * * * *		 	 	 
	 
	 	 	 
	   " !	3 3 3 3 3l/ / / / /
           **    	 	 	 	      ,              8       ^ ^ ^ ^ ^ ^ ^ ^B+ + + + +     (    )/

	# # # # # #L' ' ' ' ' 'r0   