
    ziT                       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ZddlmZmZmZmZ ddlmZ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% G d de%          Z&dcdZ'dddZ(dedZ)dfdZ*d gZ+d!e"d"<   g Z,d!e"d#<   edgd%            Z-edhd&            Z-did(Z-dgd)Z.	 	 	 	 djdkd1Z/dldmd4Z0dndod8Z1dpd:Z2dqd;Z3d<hZ4drd?Z5dsdAZ6dtdBZ7dudCZ8dvdFZ9 G dG dH          Z: G dI dJ          Z; G dK dL          Z< G dM dN          Z=dwdxdQZ>	 	 dydzdWZ?d{dZZ@ e	jA                    ZB e	jA                    ZCd<ZD	 	 	 d|d}d_ZEd~dbZFdS )z'Control of and utilities for debugging.    )annotationsN)CallableIterableIteratorMapping)IOAnyFinaloverload)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        Y/var/www/tmov.alphamb/tmov_inventario/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__E   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.shouldH   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_callersN   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.writeX   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__p   s    r0   r6   r1   r7   c                    dS )z'Should we write debug messages?  Never.Fra   r:   s     r.   r"   zNoDebugging.shouldt   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_callersx   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   m   s        LL           >B J J J J J J J Jr0   rc   c                       e Zd ZdZdddd
ZdS )DevNullDebugz)A DebugControl that won't write anywhere.Nr?   rA   r1   r@   rB   r   r   c                   d S rV   ra   ri   s      r.   rJ   zDevNullDebug.write   s    r0   rY   )rZ   r[   r\   r]   rJ   ra   r0   r.   rl   rl      s;        33=A        r0   rl   labelr1   r   c                8    d                     d| z   dz             S )zMake a nice header string.z
--{:-<60s} format)rn   s    r.   info_headerrs      s    sU{S0111r0   infoIterable[tuple[str, Any]]r   c              #    K   t          |           } | sdS dt          fd| D                       sJ | D ]\  }}|g k    rd}|d d}|xt          d x,\   t          t	          |                    dk     r | | V  N xt          d x\   n! xt           d x\   n xt
          d x\   n  n |D ]}| | V  dd	z   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-r3   : ra   rp      )r    alltuplerz   r1   set)rt   rn   dataprefixer~   s        @r.   info_formatterr      sq      ::D I3333d33333333 ( (t2::D*I*****CD		NNR///''''''' 646666666ECEEEEEEEEEE 3 3A#.Q..((( IM2FF3 '''''''( (r0   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.

    rp   N)rs   r   )rJ   r   rt   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)r{   r|   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   ry   )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   c                    	 t          j        |           }t          j                            |j                  }|j         d| }n)# t          $ r d}Y nt          $ r}d| }Y d}~nd}~ww xY w|S )z/A one-line summary of a file, for log messages.z bytes, modified zdoes not existzerror: N)r   statdatetimefromtimestampst_mtimest_sizeFileNotFoundErrorr   )r   smodsummaryr   s        r.   file_summaryr      s    7GH --aj99Y6666  # # #"      A-- 
 Ns   A A-	A-A((A-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#xrp   :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   :  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.    IIktax(((4/00000r0   2   textnumcharsc                `    t          j                    }||_        |                    |           S )z(`repr(text)`, but limited to `numchars`.)reprlibRepr	maxstringrepr)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   4  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.r   )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r{   kvs      r.   r   zauto_repr.<locals>.<genexpr>I  sp        Aq1&--  ##	
 %%%	 
A &%%% r0   z<{klass} @{id:#x}{attrs}>rE   c              3  ,   K   | ]\  }}d | d|V  dS )rp   =Nra   r   s      r.   r   zauto_repr.<locals>.<genexpr>S  s2      ;;1m!mmamm;;;;;;r0   )klassr   attrs)__dict__itemsrr   	__class__rZ   r   rK   )r-   
show_attrss     r.   	auto_reprr   G  s|     M''))  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)r{   r   vvs      r.   
<dictcomp>zsimplify.<locals>.<dictcomp>Z  s$    777EAr8B<<777r0   c              3  4   K   | ]}t          |          V  d S rV   r  )r{   r  s     r.   r   zsimplify.<locals>.<genexpr>\  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>^  s"    CCC1q!CCCr0   )	
isinstancedictr   r    r   r   hasattrr  r   r   s    r.   r  r  W  s    !T 77QWWYY7777	Ae}	%	% tAww00a000000	J		 CC
0@0@0B0BCCCDDDr0   c                N    t          j        t          |           dddd          S )EDebug helper to pretty-print data, including SimpleNamespace objects.   T   )indentcompact
sort_dictswidth)pprintpformatr  r
  s    r.   ppformatr  c  s$    >(1++a$VYZZZZr0   c                >    t          t          |                      dS )r  N)printr  r
  s    r.   ppr  h  s    	(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   rz   
splitlinesextendrK   )r   r   
clean_textending	filter_fnr   r   s          r.   filter_textr   m  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__  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.filter  s9    ikk$(??000$00DDHr0   Nrj   r   r1   r   r1   rZ   r[   r\   r]   r/   r%   ra   r0   r.   r$   r$     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__  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.filter  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   Nrj   r&  r'  ra   r0   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   getenvr2  )r-   r   r2  s      r.   r%   zPytestTracker.filter  s@    I344	&&9i99499D&DNr0   Nrj   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   r5  FORCED_DEBUG_FILEr   r   atexitregistercloser?  _set_singleton_datar   r    )clsr8  r   r   r9  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_ATTRrH  r   c                    t          j        | j                  }t          || j        ||f           |t
          j        | j        <   dS )z-Set the one DebugOutputFile to rule them all.N)types
ModuleTyperJ  setattrrL  r   modules)rG  rH  r9  singleton_modules       r.   rF  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   rQ  rR   rJ  r   rL  )rG  rR  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)rJ  r   rQ  )rG  s    r.   _del_singleton_dataz#DebugOutputFile._del_singleton_data  s/     s{**C,--- +*r0   r   r1   c                    | j         J | j         j        sH| j                             t          || j                             | j                                          dS dS )z9Just like file.write, but filter through all our filters.N)r+   closedrJ   r   r   rT   )r-   r   s     r.   rJ   zDebugOutputFile.write  sc    |'''|" 	!L{4>>???L     	! 	!r0   c                f    | j         J | j         j        s| j                                          dS dS )zFlush our file.N)r+   rX  rT   r4   s    r.   rT   zDebugOutputFile.flush  sA    |'''|" 	!L     	! 	!r0   )r+   r   r   r  )NNra   F)
r8  r   r   r   r   r  r9  r7   r   r)   )rH  r)   r9  r7   r   r   )r   rS  rj   )r   r1   r   r   )rZ   r[   r\   r]   r/   classmethodr*   rJ  __annotations__rL  rF  r@  rV  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r9  rD   rF   rG   N)r)   r*   rJ   rS   )rA   rP   rH   s      r.   logr^  "  sY    

!
!$
!
/
/CIIcDj +c******+ +r0   ra   	decoratorCallable[..., Any]butnot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/   r}   )rO   
getmembers	isroutiner   
startswithrP  )rG  namemethra  r_  rb  s      r.   
_decoratorz$decorate_methods.<locals>._decorator1  s    !,S'2CDD 	0 	0JD$3<''z!! 4??3#7#7 v~~Cyy////
r0   ra   )r_  ra  rb  rj  s   ``` r.   decorate_methodsrk  *  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)rn  ro  rq  rl  s      r.   _wrapperzbreak_in_pudb.<locals>._wrapperC  s:    ^
tT$V$$$r0   )rn  r	   ro  r	   r   r	   	functoolswraps)rl  rt  s   ` r.   break_in_pudbrx  @  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.rl  r   r   c                P     t          j                   d fd            }|S )Nr-   r	   rn  ro  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08drp   04drE   z, c              3  *   K   | ]} d j         | V  dS )z{}={!r}Nrq   )r{   items     r.   r   zCshow_calls.<locals>._decorator.<locals>._wrapper.<locals>.<genexpr>d  s-      #W#W$4I$4d$;#W#W#W#W#W#Wr0   ()z @ z; T)r   rD   r]  z return )r   OBJ_ID_ATTRr   r   nextOBJ_IDSrP  rK   mapr   r   r   r  CALLSrZ   r)   r*   rJ   )r-   rn  ro  oidextraeargsekwargscallidrA   retrl  ry  r{  rz  s             r.   rt  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	   rn  r	   ro  r	   r   r	   ru  )rl  rt  ry  r{  rz  s   ` r.   rj  zshow_calls.<locals>._decoratorZ  sM    				 	 	 	 	 	 	 	 
		6 r0   rl  r   r   r   ra   )ry  rz  r{  rj  s   ``` r.   
show_callsr  S  s5           > r0   envMapping[str, str]c                  	 ddh}h d}h d}dh}d}g }|                                  D ]\  	}d}	|v rd}nt          	fd	|D                       rd}|rot          	fd
|D                       rt          j        dd|          }	|v r#t	          |          |k    r|d|dz
           dz   }|                    	|f           t          |          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	SIGNATURECOVERAGE_PROCESS_CONFIG<   FTc              3      K   | ]}|v V  	d S rV   ra   r{   slugrh  s     r.   r   z/relevant_environment_display.<locals>.<genexpr>  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>  s'      22D44<222222r0   z\w*N   z...)r   anyr   r   rz   r#   r   )
r  SLUGSINCLUDECLOAKTRUNCATETRUNCATE_LENto_showvalshowrh  s
            @r.   relevant_environment_displayr  |  s+    DME%%%GBBBE)*HL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--xs88l**0q 001E9CNND#;'''g&&&r0   )rn   r1   r   r1   )rt   ru   r   r   )rJ   r   r   r1   rt   ru   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   r1   )r   r	   r   r   )r   r1   r   r  r   r1   )F)rA   r1   rP   r7   r   r   )ra   F)r_  r`  ra  r   rb  r7   r   r`  r  )TFF)ry  r7   rz  r7   r{  r7   r   r`  )r  r  r   r   )Gr]   
__future__r   r   rC  r_   r   rv  rO   r   r   r  r   r   r   rL   rN  collections.abcr   r   r   r   typingr   r	   r
   r   coverage.miscr   r   coverage.typesr   r   r   r[  rB  r   rc   rl   rs   r   r   r   r   r   r   r   r   rS   r   r   r(   r   r   r  r  r  r   r$   r&   r'   r)   r^  rk  rx  countr  r  r  r  r  ra   r0   r.   <module>r     s   . - - " " " " " "                 				  				  



      A A A A A A A A A A A A + + + + + + + + + + + + < < < < < < < < 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*    ;   2 2 2 2
( ( ( (6   $/ / / / G,      )+ * * * * 
	 	 	 
	 
	 	 	 
	   "    !	5 5 5 5 5p1 1 1 1 1
           **     	 	 	 	[ [ [ [
   
   ,              :       a! a! a! a! a! a! a! a!H+ + + + +     ,    )/

	# & & & & &R!' !' !' !' !' !'r0   