§
    0›jU  ã                  ó  — 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        úM/home/lighthouse/health/venv/lib64/python3.11/site-packages/coverage/debug.pyÚ__init__zDebugControl.__init__+   sõ   € õ ˜G‘}”}¥|Ñ3ˆŒØ %ˆÔàˆØ�;Š;�yÑ!Ô!ð 	4Ø�NŠN�:™<œ<Ô.Ñ/Ô/Ð/Ø�NŠN�>Ñ+Ô+Ô2Ñ3Ô3Ð3Ø�;Š;�xÑ Ô ð 	3Ø�NŠN�=™?œ?Ô1Ñ2Ô2Ð2Ø�;Š;�uÑÔð 	,Ø�NŠN�?Ñ+Ô+Ð+å%×-Ò-ØØØð .ñ 
ô 
ˆŒð
 œ+Ô-ˆŒˆˆó    Ú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ÐXÀDÄOÐ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   è è € ð Ô#ˆØ $ˆÔð	(ØˆEˆEˆEà$'ˆDÔ!Ð!Ð!ø CˆDÔ!Ð'Ð'Ð'Ð'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 )
zÑWrite 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×Ò˜bŸgšg¥iÔ&@ÀÀsÈCÔL]Ñ&^Ô&^Ñ_Ô_Ñ`Ô`Ð`Ø�;Š;�vÑÔð 	>Ý!œ-™/œ/¨!Ô,¨QÔ/Ô8×<Ò<¸VÑDÔDˆKØÐ&Ø”×!Ò!Ð"<¨;Ð"<Ð"<Ð"<Ñ=Ô=Ð=Ø�;Š;�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   € à×Ò˜s U™{¨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 )
z¦Produce 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Ð3¡d a¨�s�1‰vŒv˜	Ò!Ð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Ð3¨dÐ3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Øð (ð (‰ˆˆtØ�2Š:ˆ:ØˆDØÐ*˜IÐ*Ð*Ð*Ð*Ð*ˆØØ•����‘�C¥ D¡	¤	™NœN¨RÒ/Ð/Ð/ØÐ' Ð'Ð'Ð'Ð'Ð'Ð'ð à•����‘��˜6�4˜6˜6˜6˜6™6˜6˜6 E¥C E E E E¡E E E E E EØð 3ð 3�AØ#˜. Q˜.˜.Ð(Ð(Ð(Ø  I°¡MÑ2�F�Fð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�$ˆjˆjÑÔÐÐðð 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*   è è € Ð.Ð. 1�A—H’H‘J”JÐ.Ð.Ð.Ð.Ð.Ð.r0   )rL   Úformat_exception_onlyÚtyperK   )r@   Úliness     r.   Úexc_one_liner–   »   s;   € åÔ+­D°©I¬I°sÑ;Ô;€EØ�8Š8Ð.Ð.¨Ð.Ñ.Ô.Ñ.Ô.Ð.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           sŠt          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´'©l¬l€ 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ð 	9ˆGÝ×!Ò! 7¨JÐ"7Ñ8Ô8Ð8Ð8Øˆˆˆå×Ò�rœwŸš¨xÔ/@ÑAÔAÀ6ÐJÑKÔKÐKÝ×ÒÐ!:Ð!:ÀTÐÑJÔJÐJØÐÝ)ð 	2ð 	2‰HˆC�Ý”v˜c 3¨Ñ1Ô1ˆHˆHÝ+ð 	7ð 	7‰MˆF�EØ×'Ò'¨°Ñ6Ô6ˆHˆHØ€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ÝŒG�HÑÔˆõ Ô×-Ò-¨a¬jÑ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\bNéÿÿÿÿc                ó6   — t          j        || j        ¦  «        S rV   )r­   Úsearchrš   )Úfir±   s     r.   r£   zshort_stack.<locals>.<lambda>  s   € ¥R¤Y¨s°B´KÑ%@Ô%@€ 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¸Ô)B€EØð Ø!ð 	ð 	ˆCÝÔ'Ø #Ð@Ð@Ð@Øñô ˆEˆEð €EØð ð ˆ
ØÔ%Ð/Ð/Ð/Ð/ˆØð 	2Ø•r˜*Ô*Ñ+Ô+Ð1Ð1Ð1Ð1Ñ1ˆDØÔ&ˆØð 	0Ý% hÑ/Ô/ˆHØ�8Ð1Ð1˜jÔ/Ð1Ð1Ñ1ˆØ�Š�TÑÔÐÐØ�9Š9�UÑÔÐ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.   € à‡I‚I�k˜t a™xÐ(Ñ(Ô(¨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Ø€A„KØ�6Š6�$‰<Œ<Ð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Ý˜˜2˜rÑ"Ô"ð ð ˆØ�˜‘ÑˆˆØ�&‰=Ð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Ð
0€CÝŒi‰kŒkÐ,Ð,Ð,˜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   è è € ð ð áˆAˆqÝ�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   è è € Ð;Ð;©¨¨1�m˜!�m�m˜a�m�mÐ;Ð;Ð;Ð;Ð;Ð;r0   )ÚklassrÌ   Úattrs)Ú__dict__Úitemsrr   Ú	__class__rZ   rÌ   rK   )r-   Ú
show_attrss     r.   Ú	auto_reprrý   G  s|   € ðð à”M×'Ò'Ñ)Ô)ðñ ô €Jð '×-Ò-ØŒnÔ%Ýˆd‰8Œ8Ø�gŠgÐ;Ð;°
Ð;Ñ;Ô;Ñ;Ô;ð .ñ ô ð 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Ð7¡E A r�•8˜B‘<”<Ð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Ð7¨Q¯WªW©Y¬YÐ7Ñ7Ô7Ð7Ý	�A��e�}Ñ	%Ô	%ð Ø�t�A‰wŒwÐ0Ð0¨aÐ0Ñ0Ô0Ñ0Ô0Ð0Ý	��JÑ	Ô	ð ÝÐCÐC°´
×0@Ò0@Ñ0BÔ0BÐ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Øð  ð  ˆ	ØˆØ—O’OÑ%Ô%ð 	7ð 	7ˆDØ�LŠL˜˜ 4™œ×3Ò3Ñ5Ô5Ñ6Ô6Ð6Ð6Ø�yŠy˜ÑÔˆˆØ�&‰=Ð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   € åŒi‰kŒkˆØ�$”(Š?ˆ?Ø0 Ð0Ð0¨$Ð0Ð0ˆDØˆDŒHØˆ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Ç   € àˆÝŒi‰kŒkˆØŒ8�sŠ?ˆ?ØB¨T¬XÐBÐB¸3ÐBÐBÐBˆGØˆDŒHˆHØÔ!ð 	Ý�3 ¨Ñ-Ô-ˆDàH ÐHÐHµC´NÐHÐHÐHØ1 tÐ1Ð1Ð1ñ2à?­R¬Z©\¬\Ð?Ð?Ð?ñ@ð ð ð 	Ø#ˆ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©   Úgetenvr1  )r-   rÔ   r1  s      r.   r%   zPytestTracker.filterµ  s@   € å”IÐ3Ñ4Ô4ˆ	Ø˜œÒ&Ð&Ø9 iÐ9Ð9°4Ð9Ð9ˆDØ&ˆDŒNØˆ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©   r4  ÚFORCED_DEBUG_FILErï   r¦   ÚatexitÚregisterÚcloser>  Ú_set_singleton_datar   r    )Úclsr7  r   r   r8  Úthe_oneÚ
is_interims          r.   r*   zDebugOutputFile.get_oneÊ  s  € ð, Ðà�3�w Ñ(Ô(Ð(à!×5Ò5Ñ7Ô7Ñˆ�Øˆ?˜jˆ?ØÐ$Ý˜y¨#¸Ð@Ñ@Ô@��õ œIÐ&;Õ=NÑOÔO�	ØÐ 4Ð4Ð4Ý%¥c¨9Ñ5Ô5�G�GØð )Ý" 9¨c¸GÐDÑDÔD�GÝ”O G¤MÑ2Ô2Ð2Ð2å!œj�GØ�c˜' 7Ñ+Ô+ˆGØ×#Ò# G¨WÑ5Ô5Ð5à”ð 	,Ý" 7™mœmˆGŒOØˆr0   z'$coverage.debug.DebugOutputFile.the_onez
Final[str]ÚSYS_MOD_NAMEÚthe_one_and_is_interimÚSINGLETON_ATTRrG  r   c                ó�   — t          j        | j        ¦  «        }t          || j        ||f¦  «         |t
          j        | j        <   dS )z-Set the one DebugOutputFile to rule them all.N)ÚtypesÚ
ModuleTyperI  ÚsetattrrK  r¦   Úmodules)rF  rG  r8  Úsingleton_modules       r.   rE  z#DebugOutputFile._set_singleton_data  sH   € õ !Ô+¨CÔ,<Ñ=Ô=ÐÝÐ  #Ô"4°wÀÐ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¦   rP  rR   rI  rï   rK  )rF  rQ  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)rI  r¦   rP  )rF  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+   rW  rT   r4   s    r.   rT   zDebugOutputFile.flush  sA   € àŒ|Ð'Ð'Ð'ØŒ|Ô"ð 	!ØŒL×ÒÑ Ô Ð Ð Ð ð	!ð 	!r0   )r+   r   r   r  )NNra   F)
r7  r   r   r   r   r  r8  r7   r   r)   )rG  r)   r8  r7   r   r   )r   rR  rj   )rÔ   r1   r   r   )rZ   r[   r\   r]   r/   Úclassmethodr*   rI  Ú__annotations__rK  rE  r?  rU  rJ   rT   ra   r0   r.   r)   r)   ¾  s  € € € € € € ØCÐCðð ð ð ð ð #'Ø $Ø24Øð,ð ,ð ,ð ,ñ „[ð,ðf  I€LÐHÐHÐHÑHØ!9€NÐ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©r8  rD   rF   rG   N)r)   r*   rJ   rS   )rA   rP   rH   s      r.   Úlogr]  "  sY   € å
×
!Ò
!¨$Ð
!Ñ
/Ô
/€CØ‡I‚Iˆc�D‰jÑÔÐØð +Ý˜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ù   Ú
startswithrO  )rF  ÚnameÚmethr`  r^  ra  s      €€€r.   Ú
_decoratorz$decorate_methods.<locals>._decorator1  s�   ø€ Ý!Ô,¨Sµ'Ô2CÑDÔDð 	0ð 	0‰JˆD�$Ø˜3œ<Ð'Ð'ØØ�zÒ!Ð!Øð  4§?¢?°3Ñ#7Ô#7ð ØØ�vˆ~ˆ~ØÝ�C˜˜y˜y¨™œÑ/Ô/Ð/Ð/Øˆ
r0   ra   )r^  r`  ra  ri  s   ``` r.   Údecorate_methodsrj  *  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                 ó\   •— t           j        t           _        t          ¦   «           ‰| i |¤ŽS rV   )r¦   Ú
__stdout__r=  Ú
breakpoint)rm  rn  rk  s     €r.   Ú_wrapperz#break_in_debugger.<locals>._wrapperC  s*   ø€ å”^�Œ
Ý‰ŒˆØˆt�TÐ$˜VÐ$Ð$Ð$r0   )rm  r	   rn  r	   r   r	   ©Ú	functoolsÚwraps)rk  rr  s   ` r.   Úbreak_in_debuggerrv  @  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.rk  r   r   c                óP   •‡ — t          j        ‰ ¦  «        dˆ ˆˆˆfd„¦   «         }|S )Nr-   r	   rm  rn  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>b  s-   è è € Ð#WÐ#WÀÐ$4 IÔ$4°dÐ$;Ð#WÐ#WÐ#WÐ#WÐ#WÐ#Wr0   ú(ú)z @ z; T)rÂ   rD   r\  z return )rï   ÚOBJ_ID_ATTRr©   rë   ÚnextÚOBJ_IDSrO  rK   ÚmaprÚ   rú   rÑ   r  ÚCALLSrZ   r)   r*   rJ   )r-   rm  rn  ÚoidÚextraÚeargsÚekwargsÚcallidrA   Úretrk  rw  ry  rx  s             €€€€r.   rr  z0show_calls.<locals>._decorator.<locals>._wrapperY  sï  ø€ å˜$¥¨TÑ2Ô2ˆCØˆ{Ýœ™œÐ>Ð>Ð>­4µ©=¬=Ð>Ð>Ð>�Ý˜�k¨3Ñ/Ô/Ð/ØˆEØð ØŸ	š	¥#¥d¨D¡/¤/Ñ2Ô2�ØŸ)š)Ð#WÐ#WÈÏÊÉÌÐ#WÑ#WÔ#WÑWÔW�Ø˜‘�Ø˜‘�Øð "˜Wð "Ø˜T‘M�EØ˜Ñ �Ø˜‘�Øð 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ÐL˜vÐLÐLÐL¨D¬MÐLÐLÀ3ÐLÐLÐL�Ý×'Ò'°Ð'Ñ5Ô5×;Ò;¸CÑ@Ô@Ð@ØˆJr0   )r-   r	   rm  r	   rn  r	   r   r	   rs  )rk  rr  rw  ry  rx  s   ` €€€r.   ri  zshow_calls.<locals>._decoratorX  sM   øø€ Ý	Œ˜Ñ	Ô	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 
Ô	ð	ð6 ˆr0   ©rk  r   r   r   ra   )rw  rx  ry  ri  s   ``` r.   Ú
show_callsr�  Q  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{   Úslugrg  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Ð2 D�4˜4�<Ð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Úshowrg  s
            @r.   Úrelevant_environment_displayr¯  z  s+  ø€ ð �DˆM€EØ%Ð%Ð%€GØBÐBÐB€EØ)Ð*€HØ€Là€GØ—Y’Y‘[”[ð (ð (‰	ˆˆcØˆØ�7ˆ?ˆ?ØˆDˆDÝÐ0Ð0Ð0Ð0¨%Ð0Ñ0Ô0Ñ0Ô0ð 	ØˆDØð 	(ÝÐ2Ð2Ð2Ð2¨EÐ2Ñ2Ô2Ñ2Ô2ð .Ý”f˜U C¨Ñ-Ô-�Ø�xÐÐÝ�s‘8”8˜lÒ*Ð*ØÐ0 ¨qÑ 0Ð0Ô1°EÑ9�CØ�NŠN˜D #˜;Ñ'Ô'Ð'øÝ˜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_  r`  r   ra  r7   r   r_  rŽ  )TFF)rw  r7   rx  r7   ry  r7   r   r_  )r�  r‘  r   r—   )Gr]   Ú
__future__r   ré   rB  r_   r¶   rt  rO   rÉ   r©   r  r­   r×   r¦   rL   rM  Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   Úcoverage.miscr   r   Úcoverage.typesr   r   r   rZ  rA  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]  rj  rv  Ú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   