ó
    Ð]jU  ã                  óV  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKJrJrJrJr  SSKJrJrJrJr  SSKJrJr  SSKJrJ r   \" \
5      r
/ r!S\"S	'   Sr# " S
 S5      r$ " S S\$5      r% " S S\%5      r&S4S jr'S5S jr(        S6S jr)S7S jr*S/r+S\"S'   / r,S\"S'   \S8S j5       r-\S9S j5       r-S:S jr-S8S jr.    S;         S<S jjr/S=S>S jjr0S?S@S jjr1SAS jr2SBS  jr3S!1r4SCS" jr5SDS# jr6SES$ jr7SFS% jr8SGS& jr9 " S' S(5      r: " S) S*5      r; " S+ S,5      r< " S- S.5      r=SHSIS/ jjr>  SJ       SKS0 jjr?SLS1 jr@\	R‚                  " 5       rB\	R‚                  " 5       rCS!rD   SM       SNS2 jjrESOS3 jrFg)Pz'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                  óˆ   • \ rS rSrSrSr S       SS jjrSS jrSS jr\	R                  SS j5       rSS	.SS
 jjrSrg)ÚDebugControlé&   z!Control and output for debugging.FNc                ó.  • [        U5      [        -   U l        SU l        / nU R	                  S5      (       aF  UR                  [        5       R                  5        UR                  [        5       R                  5        U R	                  S5      (       a#  UR                  [        5       R                  5        U R	                  S5      (       a  UR                  [        5        [        R                  UUUS9U l        U R                  R                  U l        g)z4Configure the options and output file for debugging.FÚprocessÚpytestÚpid)Ú	file_nameÚfiltersN)Úlistr   ÚoptionsÚsuppress_callersÚshouldÚappendÚ
CwdTrackerÚfilterÚProcessTrackerÚPytestTrackerÚadd_pid_and_tidÚDebugOutputFileÚget_oneÚoutputÚoutfileÚ
raw_output)Úselfr   r&   r   r   s        ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/coverage/debug.pyÚ__init__ÚDebugControl.__init__+   sÊ   € ô ˜G“}¤|Ñ3ˆŒØ %ˆÔàˆØ�;‰;�y×!Ñ!Ø�N‰Nœ:›<×.Ñ.Ô/Ø�N‰Nœ>Ó+×2Ñ2Ô3Ø�;‰;�x× Ñ Ø�N‰Nœ=›?×1Ñ1Ô2Ø�;‰;�u×ÑØ�N‰Nœ?Ô+ä%×-Ñ-ØØØð .ð 
ˆŒð
 Ÿ+™+×-Ñ-ˆ�ó    c                ó@   • SU R                   < SU R                  < S3$ )Nz<DebugControl options=z raw_output=Ú>)r   r(   ©r)   s    r*   Ú__repr__ÚDebugControl.__repr__E   s"   € Ø'¨¯©Ñ'7°|ÀDÇOÁOÑCVÐVWÐXÐXr-   c                óN   • US:X  a  U R                   (       a  gXR                  ;   $ )z@Decide whether to output debug information in category `option`.ÚcallersF)r   r   ©r)   Úoptions     r*   r   ÚDebugControl.shouldH   s"   € à�YÓ 4×#8×#8ØØŸ™Ñ%Ð%r-   c              #  ó^   #   • U R                   nSU l          Sv •  Xl         g! Xl         f = f7f)z;A context manager to prevent call stacks from being logged.TN)r   )r)   Úolds     r*   Úwithout_callersÚDebugControl.without_callersN   s.   é € ð ×#Ñ#ˆØ $ˆÔð	(Ûà$'Õ!ø CÕ!üs   ‚-—" ›-¢*ª-©Úexcc          	     ó:  • U R                   R                  US-   5        UbI  U R                   R                  SR                  [        R                  " SX"R
                  5      5      5        U R                  S5      (       aW  [        R                  " 5       S   S   R                  R                  S5      nUb   U R                   R                  SU< S35        U R                  S5      (       a  [        U R                   SS	9  U R                   R                  5         g)
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: r4   ©ÚoutÚskip)r&   ÚwriteÚjoinÚ	tracebackÚformat_exceptionÚ__traceback__r   ÚinspectÚstackÚf_localsÚgetÚdump_stack_framesÚflush)r)   Úmsgr=   Úcaller_selfs       r*   rE   ÚDebugControl.writeX   sÐ   € ð 	�‰×Ñ˜# ™*Ô%Ø‰?Ø�K‰K×Ñ˜bŸg™g¤i×&@Ò&@ÀÀs×L]ÑL]Ó&^Ó_Ô`Ø�;‰;�v×ÑÜ!Ÿ-š-›/¨!Ñ,¨QÑ/×8Ñ8×<Ñ<¸VÓDˆKØÑ&Ø—‘×!Ñ! F¨;©/¸Ð"<Ô=Ø�;‰;�y×!Ñ!Ü $§+¡+°AÒ6Ø�‰×ÑÕr-   )r   r&   r(   r   ©N)r   úIterable[str]r&   úIO[str] | Noner   ú
str | NoneÚreturnÚNone)rW   Ústr©r6   rY   rW   Úbool©rW   zIterator[None]©rP   rY   r=   zBaseException | NonerW   rX   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úshow_repr_attrr+   r1   r   Ú
contextlibÚcontextmanagerr:   rE   Ú__static_attributes__© r-   r*   r   r   &   so   † Ù+à€Nð !%ð	.àð.ð ð.ð ð	.ð
 
õ.ô4Yô&ð ×Ñó(ó ð(ð >B÷ ò r-   r   c                  óf   • \ rS rSrSrS
S jrSS jr\R                  SS j5       r	SS.SS jjr
S	rg)ÚNoDebuggingém   zBA replacement for DebugControl that will never try to do anything.c                ó   • g rS   rg   r0   s    r*   r+   ÚNoDebugging.__init__p   s   € àr-   c                ó   • g)z'Should we write debug messages?  Never.Frg   r5   s     r*   r   ÚNoDebugging.shouldt   s   € àr-   c              #  ó   #   • Sv •  g7f)z+A dummy context manager to satisfy the api.Nrg   r0   s    r*   r:   ÚNoDebugging.without_callersx   s
   é € ô 	ùs   ‚Nr<   c               ó   • [        S5      e)zThis will never be called.z)NoDebugging.write should never be called.)ÚAssertionError©r)   rP   r=   s      r*   rE   ÚNoDebugging.write}   s   € äÐHÓIÐIr-   rg   ©rW   rX   rZ   r\   r]   )r^   r_   r`   ra   rb   r+   r   rd   re   r:   rE   rf   rg   r-   r*   ri   ri   m   s;   † ÙLôôð ×Ñóó ðð >B÷ Jò Jr-   ri   c                  ó*   • \ rS rSrSrSS.SS jjrSrg)ÚDevNullDebugé‚   z)A DebugControl that won't write anywhere.Nr<   c               ó   • g rS   rg   rs   s      r*   rE   ÚDevNullDebug.write…   s   € Ør-   rg   r]   )r^   r_   r`   ra   rb   rE   rf   rg   r-   r*   rw   rw   ‚   s   † Ù3à=A÷ ò r-   rw   c                ó0   • SR                  SU -   S-   5      $ )zMake a nice header string.z
--{:-<60s}Ú ©Úformat)Úlabels    r*   Úinfo_headerr€   ‰   s   € à×Ñ˜s U™{¨SÑ0Ó1Ð1r-   c              #  ó´  ^#   • [        U 5      n U (       d  gSm[        U4S jU  5       5      (       d   eU  Hœ  u  pU/ :X  a  SnUST 3 S3nU=[        S` =b%  u   [        [	        U5      5      S:  a    U U 3v •  MG    =[        S` =b  u   O!  =[         S` =b  u   O  =[
        S` =b  u   O    O  U H  nU U 3v •  STS	-   -  nM     M“   U U 3v •  Mž     g7f)
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   >#   • U  H  u  p[        U5      T:  v •  M     g 7frS   ©Úlen)Ú.0ÚlÚ_Ú	LABEL_LENs      €r*   Ú	<genexpr>Ú!info_formatter.<locals>.<genexpr>™   s   øé € Ð3ªd¡d aŒs�1‹v˜	Ö!ªdùs   ƒ z-none-r/   ú: rg   r|   é   )r   ÚallÚtupler…   rY   Úset)Úinfor   ÚdataÚprefixÚer‰   s        @r*   Úinfo_formatterr•   Ž   så   øé € ô �‹:€DÞØØ€IÜÔ3©dÓ3×3Ñ3Ð3Ð3Û‰ˆØ�2‹:ØˆDØ˜!˜I˜;˜Ð' rÐ*ˆØØ”–œC¤ D£	›N¨RÓ/�Ø˜  Ð'Ô'ð à”—�˜6œ4Ÿ6˜6 E¤C§E EÒ)Û�AØ#˜H Q C˜.Ò(Ø  I°¡MÑ2’Fó ð Ø˜  Ð'Ô'ò ùs   ƒCCc                ó`   • U " [        U5      5        [        U5       H  nU " SU 35        M     g)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.

r|   N)r€   r•   )rE   Úheaderr‘   Úlines       r*   Úwrite_formatted_infor™   ©   s.   € ñ 
Œ+�fÓ
ÔÜ˜tÖ$ˆÙ��$�ˆjÖò %r-   c                ór   • [         R                  " [        U 5      U 5      nSR                  S U 5       5      $ )zIGet a one-line summary of an exception, including class name and message.Ú|c              3  ó@   #   • U  H  oR                  5       v •  M     g 7frS   )Úrstrip)r†   r‡   s     r*   rŠ   Úexc_one_line.<locals>.<genexpr>¾   s   é € Ð.ª 1—H‘H—J�Jªùó   ‚)rG   Úformat_exception_onlyÚtyperF   )r=   Úliness     r*   Úexc_one_liner£   »   s-   € ä×+Ò+¬D°«I°sÓ;€EØ�8‰8Ñ.©Ó.Ó.Ð.r-   )z5.*[/\\]pytest-of-.*[/\\]pytest-\d+([/\\]popen-gw\d+)?ztmp:úlist[tuple[str, str]]Ú_FILENAME_REGEXESÚ_FILENAME_SUBSc                ó   • g rS   rg   ©Úfilenames    r*   Úshort_filenamerª   Ç   ó   € àr-   c                ó   • g rS   rg   r¨   s    r*   rª   rª   Ì   r«   r-   c                ó¸  • [         (       d…  [        R                   H  n[         R                  US45        M     SSKn[         R                  [
        R                  R                  UR                  5      S45        [         R                  S SS9  U bF  [         H  u  p4[        R                  " X4U 5      n M     [          H  u  pVU R                  XV5      n M     U $ )zIShorten a file name. Directories are replaced by prefixes like 'syspath:'zsyspath:r   Nzcov:c                ó   • [        U S   5      $ )Nr   r„   )Úpairs    r*   Ú<lambda>Ú short_filename.<locals>.<lambda>Ù   s   € ¬c°$°q±'¬lr-   T)ÚkeyÚreverse)r¦   ÚsysÚpathr   ÚcoverageÚosÚdirnameÚ__file__Úsortr¥   ÚreÚsubÚreplace)r©   Úpathdirr¶   Úpatr¼   ÚbeforeÚafters          r*   rª   rª   Ñ   s¨   € çŠ>Ü—x”xˆGÜ×!Ñ! 7¨JÐ"7Ö8ñ  ãä×ÑœrŸw™wŸ™¨x×/@Ñ/@ÓAÀ6ÐJÔKÜ×ÑÑ!:ÀTÐÑJØÑß)‰HˆCÜ—v’v˜c¨Ó1ŠHñ *ç+‰MˆFØ×'Ñ'¨Ó6ŠHñ ,à€Or-   c                óþ   •  [         R                  " U 5      n[        R                  R                  UR                  5      nUR
                   SU 3nU$ ! [         a    Sn U$ [         a  nSU 3n SnAU$ SnAff = f)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ÚFileNotFoundErrorÚ	Exception)r©   ÚsÚmodÚsummaryr”   s        r*   Úfile_summaryrÍ   â   s…   € ð7Ü�GŠG�HÓˆô ×Ñ×-Ñ-¨a¯j©jÓ9ˆØ—Y‘Y�KÐ0°°Ð6ˆØ€Nøô ó #Ø"‰ð €Nô ó  Ø˜A˜3�-Œð €Nûð ús   ‚A ÁA<Á#	A<Á,A7Á7A<c                ó¸  • / SQn[         R                  " 5       SU S2   nU(       d$  U H  n[        R                  " U4S jU5      nM      / nU Hx  nUR                  S S3n	U(       a  U	[        UR                  5      S S3-  n	UR                  n
U(       a  [        U
5      n
Xš S	UR                   3-  n	UR                  U	5        Mz     S
R                  U5      $ )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                óB   • [         R                  " XR                  5      $ rS   )r»   Úsearchr©   )Úfir¿   s     r*   r°   Úshort_stack.<locals>.<lambda>  s   € ¤R§Y¢Y¨s·K±KÔ%@r-   z>30sz : z#xr|   Ú:r?   )rJ   rK   Ú	itertoolsÚ	dropwhileÚfunctionÚidÚframer©   rª   Úlinenor   rF   )rD   ÚfullÚ	frame_idsÚshort_filenamesÚBORING_PRELUDErK   r¿   r¢   Ú
frame_infor˜   r©   s              r*   Úshort_stackrà   ð   sÞ   € ò:€Nô *1¯ª«¸¸$¸r¸Ñ)B€EÞÛ!ˆCÜ×'Ò'Ø #Ó@ØóŠEñ "ð
 €EÛˆ
Ø×%Ñ% dÐ+¨3Ð/ˆÞØ”r˜*×*Ñ*Ó+¨BÐ/¨qÐ1Ñ1ˆDØ×&Ñ&ˆÞÜ% hÓ/ˆHØ�*˜A˜j×/Ñ/Ð0Ð1Ñ1ˆØ�‰�TÖñ ð �9‰9�UÓÐr-   c                ó@   • U R                  [        US-   S9S-   5        g)z&Print a summary of the stack to `out`.rA   )rD   r?   N)rE   rà   rB   s     r*   rN   rN   (  s   € à‡I�IŒk˜t a™xÑ(¨4Ñ/Õ0r-   c                óZ   • [         R                  " 5       nXl        UR                  U 5      $ )z(`repr(text)`, but limited to `numchars`.)ÚreprlibÚReprÚ	maxstringÚrepr)ÚtextÚnumcharsÚrs      r*   Úclipped_reprrê   -  s    € ä�Š‹€AØ„KØ�6‰6�$‹<Ðr-   c                óF   • Sn[        SSS5       H
  nXU-	  -  nM     US-  $ )z-Given a 64-bit id, make a shorter 16-bit one.r   é@   é   iÿÿ  )Úrange)Úid64Úid16Úoffsets      r*   Úshort_idrò   4  s0   € à€DÜ˜˜2˜rÖ"ˆØ˜‘ÑŠñ #à�&‰=Ðr-   c                ó‚   • [        [        R                  " 5       5      S n[        R                  " 5       S SU SU  3n U $ )z.A filter to add pid and tid to debug messages.Ú04xÚ5dÚ.rŒ   )rò   Ú_threadÚ	get_identr·   Úgetpid)rç   Útids     r*   r#   r#   <  s@   € ô ”g×'Ò'Ó)Ó*¨3Ð/€CÜ�iŠi‹k˜"Ð˜Q˜s˜e 2 d VÐ,€DØ€Kr-   z$coverage.object_idc                óÌ   • S U R                   R                  5        5       nSR                  U R                  R                  [        U 5      SR                  S U 5       5      S9$ )z<A function implementing an automatic __repr__ for debugging.c              3  ó¦   #   • U  HG  u  p[        US S5      (       d  M  [        R                  " U5      (       a  M6  U[        ;  d  MB  X4v •  MI     g7f)rc   TN)ÚgetattrrJ   ÚismethodÚAUTO_REPR_IGNORE©r†   ÚkÚvs      r*   rŠ   Úauto_repr.<locals>.<genexpr>I  sO   é € ð â)‰DˆAÜ�1Ð&¨×-ó 	ô × Ò  ×#ó 	ð Ô%Ñ%ó	 	ˆ�Ú)ùs   ‚AžA»AÁ
Az<{klass} @{id:#x}{attrs}>r@   c              3  ó8   #   • U  H  u  pS U SU< 3v •  M     g7f)r|   Ú=Nrg   r   s      r*   rŠ   r  S  s   é € Ð;²
©¨˜˜!˜˜A˜a™U•m²
ùó   ‚)ÚklassrØ   Úattrs)Ú__dict__Úitemsr~   Ú	__class__r^   rØ   rF   )r)   Ú
show_attrss     r*   Ú	auto_reprr  G  s^   € ñà—M‘M×'Ñ'Ô)ó€Jð '×-Ñ-Ø�n‰n×%Ñ%Üˆd‹8Ø�g‰gÑ;±
Ó;Ó;ð .ð ð r-   c                ó¦  • [        U [        5      (       a/  U R                  5        VVs0 s H  u  pU[        U5      _M     snn$ [        U [        [
        45      (       a  [        U 5      " S U  5       5      $ [        U S5      (       a<  [        U R                  R                  5        VV s0 s H  u  pSU-   U _M     sn n5      $ U $ s  snnf s  sn nf )z>Turn things which are nearly dict/list/etc into dict/list/etc.c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frS   )Úsimplify)r†   Úvvs     r*   rŠ   Úsimplify.<locals>.<genexpr>\  s   é € Ð0ªa¨”x —|�|ªaùr  r	  rö   )	Ú
isinstanceÚdictr
  r  r   r�   r¡   Úhasattrr	  )r  r  r  s      r*   r  r  W  sª   € ä�!”T×ÑØ-.¯W©W¬YÔ7ªY¡E A�”8˜B“<’©YÒ7Ð7Ü	�Aœœe�}×	%Ñ	%Ü�AŒwÑ0©aÓ0Ó0Ð0Ü	��J×	Ñ	Ü°·
±
×0@Ñ0@Ô0BÔCÒ0B©¨˜˜q™ !šÑ0BÒCÓDÐDàˆùó 8ùó Ds   ©CÂ+C
c                óD   • [         R                  " [        U 5      SSSSS9$ )ú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ÐZr-   c                ó,   • [        [        U 5      5        g)r  N)Úprintr!  r   s    r*   Úppr$  h  s   € ä	Œ(�1‹+Õr-   c                óú   • U R                  5       nU [        U5      S nUn U HR  n/ nU R                  5        H(  nUR                  U" U5      R                  5       5        M*     SR	                  U5      n MT     X-   $ )a9  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.

Nr?   )r�   r…   Ú
splitlinesÚextendrF   )rç   r   Ú
clean_textÚendingÚ	filter_fnr¢   r˜   s          r*   Úfilter_textr+  m  sv   € ð —‘“€JØ”#�j“/Ð#Ð$€FØ€DÛˆ	ØˆØ—O‘OÖ%ˆDØ�L‰L™ 4›×3Ñ3Ó5Ö6ñ &à�y‰y˜ÓŠñ	 ð
 ‰=Ðr-   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	r   iƒ  z*A class to add cwd info to debug messages.c                ó   • S U l         g rS   ©Úcwdr0   s    r*   r+   ÚCwdTracker.__init__†  s	   € Ø#ˆ�r-   c                ól   • [         R                  " 5       nX R                  :w  a  SU< SU 3nX l        U$ )z#Add a cwd message for each new cwd.zcwd is now r?   )r·   Úgetcwdr/  )r)   rç   r/  s      r*   r    ÚCwdTracker.filter‰  s2   € ä�iŠi‹kˆØ—(‘(‹?Ø  ¡ r¨$¨Ð0ˆDØŒHØˆr-   r.  Nru   ©rç   rY   rW   rY   ©r^   r_   r`   ra   rb   r+   r    rf   rg   r-   r*   r   r   ƒ  s   † Ù4ô$÷r-   r   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	r!   i’  z)Track process creation for debug logging.c                óF   • [         R                  " 5       U l        SU l        g )NF)r·   rù   r   Údid_welcomer0   s    r*   r+   ÚProcessTracker.__init__•  s   € ÜŸ	š	›ˆŒØ ˆÕr-   c                óh  • Sn[         R                  " 5       nU R                  U:w  a  SU R                   SU S3nX0l        O^U R                  (       dM  [	        [
        SS5      nSU< S[
        R                  < S3S	U< S3-   S
[         R                  " 5       < S3-   nU(       a  SU l        X!-   $ U$ )z1Add a message about how new processes came to be.r@   zNew process: forked z -> r?   ÚargvNzNew process: pid=z, executable: zNew process: cmd: zNew process parent pid: T)r·   rù   r   r8  rý   r´   Ú
executableÚgetppid)r)   rç   Úwelcomer   r;  s        r*   r    ÚProcessTracker.filter™  s±   € àˆÜ�iŠi‹kˆØ�8‰8�s‹?Ø,¨T¯X©X¨J°d¸3¸%¸rÐBˆGØ�HØ×!×!Üœ3 ¨Ó-ˆDà$ ™v ^´C·N±NÑ3EÀRÐHØ& t¡h¨bÐ1ñ2à,¬R¯ZªZ«\Ñ,<¸BÐ?ñ@ð ö Ø#ˆDÔØ‘>Ð!àˆKr-   )r8  r   Nru   r4  r5  rg   r-   r*   r!   r!   ’  s   † Ù3ô!÷r-   r!   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	r"   i¯  z<Track the current pytest test name to add to debug messages.c                ó   • S U l         g rS   ©Ú	test_namer0   s    r*   r+   ÚPytestTracker.__init__²  s	   € Ø%)ˆ�r-   c                ól   • [         R                  " S5      nX R                  :w  a  SU SU 3nX l        U$ )z+Add a message when the pytest test changes.ÚPYTEST_CURRENT_TESTzPytest context: r?   )r·   ÚgetenvrC  )r)   rç   rC  s      r*   r    ÚPytestTracker.filterµ  s7   € ä—I’IÐ3Ó4ˆ	ØŸ™Ó&Ø% i [°°4°&Ð9ˆDØ&ŒNØˆr-   rB  Nru   r4  r5  rg   r-   r*   r"   r"   ¯  s   † ÙFô*÷r-   r"   c                  óÊ   • \ rS rSr% Sr    SS jr\    S         SS jj5       rSrS\	S'   S	r
S\	S
'   \SS j5       r\SS j5       r\SS j5       rSS jrSS jrSrg)r$   i¾  z9A file-like object that includes pid and cwd information.c                ód   • Xl         [        U5      U l        [        R                  " 5       U l        g rS   )r'   r   r   r·   rù   r   )r)   r'   r   s      r*   r+   ÚDebugOutputFile.__init__Á  s!   € ð
 ŒÜ˜G“}ˆŒÜ—9’9“;ˆ�r-   Nc                óÐ  • Ub  U " X5      $ U R                  5       u  pVUb  U(       a�  Ub  [        USSS9nOu[        R                  " S[        5      nUS;   a  [        [        U5      nOCU(       a,  [        USSS9n[        R                  " UR                  5        O[        R                  nU " X5      nU R                  XT5        UR                  (       d  [        U5      Ul        U$ )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.

Úazutf-8)ÚencodingÚCOVERAGE_DEBUG_FILE)ÚstdoutÚstderr)Ú_get_singleton_dataÚopenr·   rG  ÚFORCED_DEBUG_FILErý   r´   ÚatexitÚregisterÚcloserQ  Ú_set_singleton_datar   r   )ÚclsÚfileobjr   r   ÚinterimÚthe_oneÚ
is_interims          r*   r%   ÚDebugOutputFile.get_oneÊ  sÃ   € ð, Ñá�wÓ(Ð(à!×5Ñ5Ó7ÑˆØ‰?žjØÑ$Ü˜y¨#¸Ñ@‘ô ŸIšIÐ&;Ô=NÓO�	ØÐ 4Ó4Ü%¤c¨9Ó5‘GÞÜ" 9¨c¸GÑD�GÜ—O’O G§M¡MÕ2ä!Ÿj™j�GÙ˜'Ó+ˆGØ×#Ñ# GÔ5à——Ü" 7›mˆGŒOØˆr-   z'$coverage.debug.DebugOutputFile.the_onez
Final[str]ÚSYS_MOD_NAMEÚthe_one_and_is_interimÚSINGLETON_ATTRc                ó¬   • [         R                  " U R                  5      n[        X0R                  X45        U[
        R                  U R                  '   g)z-Set the one DebugOutputFile to rule them all.N)ÚtypesÚ
ModuleTyper_  Úsetattrra  r´   Úmodules)rY  r\  r[  Úsingleton_modules       r*   rX  Ú#DebugOutputFile._set_singleton_data  sC   € ô !×+Ò+¨C×,<Ñ,<Ó=ÐÜÐ ×"4Ñ"4°wÐ6HÔIØ(8Œ�‰�C×$Ñ$Ò%r-   c                ó€   • [         R                  R                  U R                  5      n[	        XR
                  S5      $ )zGet the one DebugOutputFile.)NT)r´   rf  rM   r_  rý   ra  )rY  rg  s     r*   rR  Ú#DebugOutputFile._get_singleton_data  s1   € ô Ÿ;™;Ÿ?™?¨3×+;Ñ+;Ó<ÐÜÐ'×);Ñ);¸\ÓJÐJr-   c                óx   • U R                   [        R                  ;   a  [        R                  U R                   	 gg)z6Delete the one DebugOutputFile, just for tests to use.N)r_  r´   rf  )rY  s    r*   Ú_del_singleton_dataÚ#DebugOutputFile._del_singleton_data  s-   € ð ×ÑœsŸ{™{Ó*Ü—‘˜C×,Ñ,Ñ-ð +r-   c                óê   • U R                   c   eU R                   R                  (       dI  U R                   R                  [        XR                  5      5        U R                   R                  5         gg)z9Just like file.write, but filter through all our filters.N)r'   ÚclosedrE   r+  r   rO   )r)   rç   s     r*   rE   ÚDebugOutputFile.write  sO   € à�|‰|Ñ'Ð'Ð'Ø�|‰|×"×"Ø�L‰L×Ñœ{¨4·±Ó>Ô?Ø�L‰L×ÑÕ ð #r-   c                óŽ   • U R                   c   eU R                   R                  (       d  U R                   R                  5         gg)zFlush our file.N)r'   ro  rO   r0   s    r*   rO   ÚDebugOutputFile.flush  s4   € à�|‰|Ñ'Ð'Ð'Ø�|‰|×"×"Ø�L‰L×ÑÕ ð #r-   )r   r'   r   )r'   rU   r   úIterable[Callable[[str], str]])NNrg   F)
rZ  rU   r   rV   r   rs  r[  r[   rW   r$   )r\  r$   r[  r[   rW   rX   )rW   z#tuple[DebugOutputFile | None, bool]ru   )rç   rY   rW   rX   )r^   r_   r`   ra   rb   r+   Úclassmethodr%   r_  Ú__annotations__ra  rX  rR  rl  rE   rO   rf   rg   r-   r*   r$   r$   ¾  sÌ   ‡ ÙCðàðð 0ôð ð #'Ø $Ø24Øð,àð,ð ð,ð 0ð	,ð
 ð,ð 
ô,ó ð,ðf  I€L�*ÓHØ!9€N�JÓ9àó9ó ð9ð óKó ðKð
 ó.ó ð.ô
!÷!r-   r$   c                óv   • [         R                  SS9nUR                  U S-   5        U(       a  [        USS9  gg)z.Write a log message as forcefully as possible.T©r[  r?   rA   rB   N)r$   r%   rE   rN   )rP   rK   rC   s      r*   Úlogrx  "  s7   € ä
×
!Ñ
!¨$Ð
!Ð
/€CØ‡I�Iˆc�D‰jÔÞÜ˜c¨Ó*ð r-   c                ó   ^ ^^• UU U4S jnU$ )z2A class decorator to apply a decorator to methods.c                ó  >• [         R                  " U [         R                  5       HU  u  pXR                  ;  a  M  US:w  a  T(       d  UR	                  S5      (       a  M;  UT;   a  MC  [        XT" U5      5        MW     U $ )Nr+   rˆ   )rJ   Ú
getmembersÚ	isroutiner	  Ú
startswithre  )rY  ÚnameÚmethÚbutnotÚ	decoratorÚprivates      €€€r*   Ú
_decoratorÚ$decorate_methods.<locals>._decorator1  sk   ø€ Ü!×,Ò,¨S´'×2CÑ2CÖD‰JˆDØŸ<™<Ó'ÙØ�zÓ!Þ 4§?¡?°3×#7Ñ#7ÙØ�v‹~ÙÜ�C™y¨›Ö/ñ Eð ˆ
r-   rg   )r�  r€  r‚  rƒ  s   ``` r*   Údecorate_methodsr…  *  s   ú€ ÷
ð Ðr-   c                óJ   ^ • [         R                  " T 5      SU 4S jj5       nU$ )z;A function decorator to stop in the debugger for each call.c                 óZ   >• [         R                  [         l        [        5         T" U 0 UD6$ rS   )r´   Ú
__stdout__rP  Ú
breakpoint)ÚargsÚkwargsÚfuncs     €r*   Ú_wrapperÚ#break_in_debugger.<locals>._wrapperC  s#   ø€ ä—^‘^ŒŒ
ÜŒÙ�TÐ$˜VÑ$Ð$r-   )rŠ  r	   r‹  r	   rW   r	   ©Ú	functoolsÚwraps)rŒ  r�  s   ` r*   Úbreak_in_debuggerr’  @  s'   ø€ ô ‡_‚_�TÓö%ó ð%ð
 €Or-   c                ó    ^ ^^• SU UU4S jjnU$ )z:A method decorator to debug-log each call to the function.c                óR   >^ • [         R                  " T 5      SU UUU4S jj5       nU$ )Nc                ó$  >• [        U [        S 5      nUc:  [        R                  " 5       S S[	        [
        5      S 3n[        U [        U5        SnT(       aj  SR                  [        [        U5      5      nSR                  S UR                  5        5       5      nUS-  nXE-  nU(       a  U(       a  US-  nXF-  nUS-  nT(       a.  US	-  nUS
R                  [        SS9R                  5       5      -  n[	        [        5      nU SUS ST
R                   U S3n[        R!                  SS9R#                  U5        T
" U /UQ70 UD6n	T(       a<  U SUS ST
R                   SU	< S3n[        R!                  SS9R#                  U5        U	$ )NÚ08dr|   Ú04dr@   z, c              3  ó@   #   • U  H  nS R                   " U6 v •  M     g7f)z{}={!r}Nr}   )r†   Úitems     r*   rŠ   ÚCshow_calls.<locals>._decorator.<locals>._wrapper.<locals>.<genexpr>b  s   é € Ð#WÊÀ I×$4Ò$4°dÕ$;ÊùrŸ   Ú(Ú)z @ z; T)rÝ   r?   rw  z return )rý   ÚOBJ_ID_ATTRr·   rù   ÚnextÚOBJ_IDSre  rF   Úmapræ   r
  rà   r&  ÚCALLSr^   r$   r%   rE   )r)   rŠ  r‹  ÚoidÚextraÚeargsÚekwargsÚcallidrP   ÚretrŒ  Ú	show_argsÚshow_returnÚ
show_stacks             €€€€r*   r�  Ú0show_calls.<locals>._decorator.<locals>._wrapperY  sw  ø€ ä˜$¤¨TÓ2ˆCØ‰{ÜŸš› SÐ)¨¬4´«=¸Ð*=Ð>�Ü˜œk¨3Ô/ØˆEÞØŸ	™	¤#¤d¨D£/Ó2�ØŸ)™)Ñ#WÈÏÉÌÓ#WÓW�Ø˜‘�Ø‘�ÞžWØ˜T‘M�EØÑ �Ø˜‘�ÞØ˜‘�Ø˜Ÿ™¤;¸tÑ#D×#OÑ#OÓ#QÓRÑR�Üœ%“[ˆFØ�E˜˜6 #˜, a¨¯© °u°g¸RÐ@ˆCÜ×#Ñ#¨DÐ#Ð1×7Ñ7¸Ô<Ù�tÐ-˜dÒ- fÑ-ˆCÞØ˜˜Q˜v c˜l¨!¨D¯M©M¨?¸(À3Á'ÈÐL�Ü×'Ñ'°Ð'Ð5×;Ñ;¸CÔ@ØˆJr-   )r)   r	   rŠ  r	   r‹  r	   rW   r	   r�  )rŒ  r�  r¨  r©  rª  s   ` €€€r*   rƒ  Úshow_calls.<locals>._decoratorX  s*   ù€ Ü	�Š˜Ó	÷	ñ 	ó 
ð	ð6 ˆr-   ©rŒ  r   rW   r   rg   )r¨  rª  r©  rƒ  s   ``` r*   Ú
show_callsr®  Q  s   ú€ ÷ñ ð> Ðr-   c                óž  ^	• SS1n1 Skn1 SknS1nSn/ nU R                  5        H›  u  m	nSnT	U;   a  SnO[        U	4S	 jU 5       5      (       a  SnU(       d  M6  [        U	4S
 jU 5       5      (       a  [        R                  " SSU5      nT	U;   a  [	        U5      U:”  a  USUS-
   S-   nUR                  T	U45        M�     [        U5      $ )a0  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  ó,   >#   • U  H	  oT;   v •  M     g 7frS   rg   ©r†   Úslugr~  s     €r*   rŠ   Ú/relevant_environment_display.<locals>.<genexpr>’  s   øé € Ð0ª% $˜–ª%ùó   ƒc              3  ó,   >#   • U  H	  oT;   v •  M     g 7frS   rg   r¾  s     €r*   rŠ   rÀ  •  s   øé € Ð2ªE D˜4–<ªEùrÁ  z\wÚ*Né   z...)r
  Úanyr»   r¼   r…   r   r   )
ÚenvÚSLUGSÚINCLUDEÚCLOAKÚTRUNCATEÚTRUNCATE_LENÚto_showÚvalÚshowr~  s
            @r*   Úrelevant_environment_displayrÏ  z  sÕ   ø€ ð �DˆM€EÚ%€GÚB€EØ)Ð*€HØ€Là€GØ—Y‘Y–[‰	ˆˆcØˆØ�7‹?Ø‰DÜÔ0©%Ó0×0Ñ0ØˆDßˆ4ÜÔ2©EÓ2×2Ñ2Ü—f’f˜U C¨Ó-�Ø�xÓÜ�s“8˜lÓ*ØÐ0 ¨qÑ 0Ð1°EÑ9�CØ�N‰N˜D #˜;Ö'ñ !ô ˜gÓ&Ð&r-   )r   rY   rW   rY   )r‘   úIterable[tuple[str, Any]]rW   rT   )rE   zCallable[[str], None]r—   rY   r‘   rÐ  rW   rX   )r=   rÉ   rW   rY   )r©   rY   rW   rY   )r©   rX   rW   rX   )r©   rV   rW   rV   )r   FFF)
rD   ÚintrÛ   r[   rÜ   r[   rÝ   r[   rW   rY   )r   )rC   r   rD   rÑ  rW   rX   )é2   )rç   rY   rè   rÑ  rW   rY   )rï   rÑ  rW   rÑ  r4  )r)   r	   rW   rY   )r  r	   rW   r	   )r  r	   rW   rY   )r  r	   rW   rX   )rç   rY   r   rs  rW   rY   )F)rP   rY   rK   r[   rW   rX   )rg   F)r�  úCallable[..., Any]r€  rT   r‚  r[   rW   rÓ  r­  )TFF)r¨  r[   rª  r[   r©  r[   rW   rÓ  )rÆ  zMapping[str, str]rW   r¤   )Grb   Ú
__future__r   r÷   rU  rd   rÄ   r�  rJ   rÕ   r·   r  r»   rã   r´   rG   rc  Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   Úcoverage.miscr   r   Úcoverage.typesr   r   r   ru  rT  r   ri   rw   r€   r•   r™   r£   r¥   r¦   rª   rÍ   rà   rN   rê   rò   r#   rÿ   r  r  r!  r$  r+  r   r!   r"   r$   rx  r…  r’  ÚcountrŸ  r¡  r�  r®  rÏ  rg   r-   r*   Ú<module>rÚ     sS  ðò .å "ã Û Û Û Û Û Û Û 	Û Û 	Û Û 
Û Û ß AÓ Aß +Ó +ç <ß 1á�BÓ€ð €ˆiÓ ØÐ ÷Dñ DôNJ�,ô Jô*�;ô ô2ô
(ð6Ø ðàðð $ðð 
ô	ô$/ð Gð,Ð Ð(ó ð )+€Ð%Ó *ð 
ó	ó 
ð	ð 
ó	ó 
ð	ôô"ð ØØØ!ð	5Ø
ð5à
ð5ð ð5ð ð	5ð
 	õ5öp1ö
ôôð *Ð*Ð ôô 	ô[ô
ô
÷,ñ ÷ñ ÷:ñ ÷a!ñ a!öH+ð ØðØ!ðàðð ðð õ	ô,	ð �/Š/Ó
€Ø�ŠÓ€Ø#€ð ØØð&Øð&àð&ð ð&ð õ	&õR!'r-   