ó
    àÅŸgÙP  ã                  ó   • % 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JrJrJrJr  SSK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#S0S jr$S1S jr%        S2S jr&S3S jr'S/r(S\ S'   / r)S\ S'   \S4S j5       r*\S5S j5       r*S6S jr*    S7         S8S jjr+S9S:S jjr,S;S<S jjr-S=S jr.S>S jr/S1r0S?S jr1S@S  jr2SAS! jr3SBS" jr4 " S# S$5      r5 " S% S&5      r6 " S' S(5      r7 " S) S*5      r8SCSDS+ jjr9  SE       SFS, jjr:SGS- jr;\Rx                  " 5       r=\Rx                  " 5       r>Sr?   SH       SIS. jjr@SJS/ jrAg)Kz'Control of and utilities for debugging.é    )ÚannotationsN)ÚoverloadÚAnyÚCallableÚIO)ÚIterableÚIteratorÚMapping)Ú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        ÚO/var/www/blue/EV-Temp_rev04/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__H   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.shouldK   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_callersQ   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: r3   ©ÚoutÚskip)r%   ÚwriteÚjoinÚ	tracebackÚformat_exceptionÚ__traceback__r   ÚinspectÚstackÚf_localsÚgetÚdump_stack_framesÚflush)r(   Úmsgr<   Úcaller_selfs       r)   rD   ÚDebugControl.write[   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)rV   Ústr©r5   rX   rV   Úbool)rV   zIterator[None]©rO   rX   r<   zBaseException | NonerV   rW   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úshow_repr_attrr*   r0   r   Ú
contextlibÚcontextmanagerr9   rD   Ú__static_attributes__© r,   r)   r   r   )   so   † Ù+à€Nð !%ð	.àð.ð ð.ð ð	.ð
 
õ.ô4Yô(ð ×Ñó(ó ð(ð >B÷ ò r,   r   c                  ó>   • \ rS rSrSrS	S jrS
S jrSS.SS jjrSrg)ÚNoDebuggingép   zBA replacement for DebugControl that will never try to do anything.c                ó   • g rR   re   r/   s    r)   r*   ÚNoDebugging.__init__r   s   € àr,   c                ó   • g)z'Should we write debug messages?  Never.Fre   r4   s     r)   r   ÚNoDebugging.shouldv   s   € àr,   Nr;   c               ó   • [        S5      e)zThis will never be called.z)NoDebugging.write should never be called.)ÚAssertionError)r(   rO   r<   s      r)   rD   ÚNoDebugging.writez   s   € äÐHÓIÐIr,   re   ©rV   rW   rY   r[   )	r\   r]   r^   r_   r`   r*   r   rD   rd   re   r,   r)   rg   rg   p   s!   † ÙLôôð >B÷ Jò Jr,   rg   c                ó0   • SR                  SU -   S-   5      $ )zMake a nice header string.z
--{:-<60s}Ú ©Úformat)Úlabels    r)   Úinfo_headerrv      s   € à×Ñ˜s 5™y¨™}Ó-Ð-r,   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[        5      (       a6  [	        [        [        U5      5      5      S:  a  STU[        U5      4-  v •  MX  [        U[         [        [        45      (       a   STU4-  nU H  nSTS-   X44-  v •  S	nM     M˜  S
TX4-  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  óB   >#   • U H  u  p[        U5      T:  v •  M     g 7frR   ©Úlen)Ú.0ÚlÚ_Ú	label_lens      €r)   Ú	<genexpr>Ú!info_formatter.<locals>.<genexpr>�   s   øé € Ð3©d¡d aŒs�1‹v˜	Ö!ªdùs   ƒz-none-z%*s: %rz%*s:z%*s %sr@   r?   z%*s: %s)r   ÚallÚ
isinstanceÚtupler{   ÚreprÚset)Úinforu   ÚdataÚprefixÚer   s        @r)   Úinfo_formatterr‹   „   sÛ   øé € ô �‹:€DÞØØ€IÜÔ3©dÓ3×3Ñ3Ð3Ð3Û‰ˆØ�2‹:ØˆDÜ�dœE×"Ñ"¤s¬4´°d³Ó+<Ó'=ÀÓ'Bà˜y¨%´°t³Ð=Ñ=Ô=Ü˜œt¤S¬%Ð0×1Ñ1Ø˜y¨%Ð0Ñ0ˆFÛ�Ø )¨A¡+¨vÐ!9Ñ9Ò9Ø’ó ð ˜y¨%Ð6Ñ6Ô6ò ù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.

rr   N)rv   r‹   )rD   Ú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rR   )Úrstrip)r|   r}   s     r)   r€   Úexc_one_line.<locals>.<genexpr>´   s   é € Ð.© 1—H‘H—J�Jªùó   ‚)rF   Úformat_exception_onlyÚtyperE   )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 rR   re   ©Úfilenames    r)   Úshort_filenamer    ¼   ó   € àr,   c                ó   • g rR   re   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   rz   )Ú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                ó¸  • / 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      $ rR   )r²   ÚsearchrŸ   )Úfir¶   s     r)   r§   Úshort_stack.<locals>.<lambda>ú   s   € ¤R§Y¢Y¨s·K±KÔ%@r,   z>30sz : z#xrr   Ú:r>   )rI   rJ   Ú	itertoolsÚ	dropwhileÚfunctionÚidÚframerŸ   r    Úlinenor   rE   )rC   ÚfullÚ	frame_idsÚshort_filenamesÚBORING_PRELUDErJ   r¶   r˜   Ú
frame_inforŽ   rŸ   s              r)   Úshort_stackrË   Ô   sÞ   € ò8€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`.r@   )rC   r>   N)rD   rË   rA   s     r)   rM   rM   
  s   € à‡I�IŒk˜t A™vÑ&¨Ñ-Õ.r,   c                óZ   • [         R                  " 5       nXl        UR                  U 5      $ )z(`repr(text)`, but limited to `numchars`.)ÚreprlibÚReprÚ	maxstringr…   )Ú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Ü     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Ú.z: )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)ra   TN)ÚgetattrrI   ÚismethodÚAUTO_REPR_IGNORE©r|   ÚkÚvs      r)   r€   Úauto_repr.<locals>.<genexpr>*  sM   é € ð Ù0‘4�1Ü�1Ð&¨×-ó 	ä× Ò  ×#ó 	ð Ô%Ñ%ó 	ˆ�Ò0ùs   ‚A�AºAÁ
Az<{klass} @{id:#x}{attrs}>r?   c              3  ó6   #   • U H  u  pS U SU< 3v •  M     g7f)rr   Ú=Nre   rê   s      r)   r€   rí   3  s   é € Ð;±
©¨˜˜!˜˜A˜a™U•m²
ùó   ‚)ÚklassrÃ   Úattrs)Ú__dict__Úitemsrt   Ú	__class__r\   rÃ   rE   )r(   Ú
show_attrss     r)   Ú	auto_reprr÷   (  s^   € ñØŸ=™=×.Ñ.Ô0ó€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  ó6   #   • U H  n[        U5      v •  M     g 7frR   )Úsimplify)r|   Úvvs     r)   r€   Úsimplify.<locals>.<genexpr><  s   é € Ð0©a¨”x —|�|ªaùrð   ró   rà   )	rƒ   Údictrô   rú   r   r„   r—   Úhasattrró   )rì   rë   rû   s      r)   rú   rú   7  sª   € ä�!”T×ÑØ,-¯G©G¬IÔ6©I¡5 1�”(˜2“,’©IÒ6Ð6Ü	�Aœœe�}×	%Ñ	%Ü�AŒwÑ0©aÓ0Ó0Ð0Ü	��J×	Ñ	Ü¨a¯j©j×.>Ñ.>Ô.@ÔAÑ.@¡d a˜˜Q™ šÑ.@ÒAÓBÐBàˆùó 7ùó Bs   ©CÂ*C
c                óB   • [         R                   " [        U 5      5        g)zEDebug helper to pretty-print data, including SimpleNamespace objects.N)Úpprintrú   )rì   s    r)   Úppr  C  s   € ô ‡M‚M”(˜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ÚextendrE   )rÑ   r   Ú
clean_textÚendingÚ	filter_fnr˜   rŽ   s          r)   Úfilter_textr  I  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 rR   ©Úcwdr/   s    r)   r*   ÚCwdTracker.__init__a  s	   € Ø#ˆ�r,   c                ón   • [         R                  " 5       nX R                  :w  a  SU< S3U-   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.filterd  s3   € ä�iŠi‹kˆØ—(‘(‹?Ø  ¡ rÐ*¨TÑ1ˆDØŒHØˆr,   r  Nrp   ©rÑ   rX   rV   rX   ©r\   r]   r^   r_   r`   r*   r   rd   re   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    im  z)Track process creation for debug logging.c                óF   • [         R                  " 5       U l        SU l        g )NF)r®   rã   r   Údid_welcomer/   s    r)   r*   ÚProcessTracker.__init__o  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   r  rç   r«   Ú
executableÚgetppid)r(   rÑ   Úwelcomer   r  s        r)   r   ÚProcessTracker.filters  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,   )r  r   Nrp   r  r  re   r,   r)   r    r    m  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 rR   ©Ú	test_namer/   s    r)   r*   ÚPytestTracker.__init__‹  s	   € Ø%)ˆ�r,   c                ón   • [         R                  " S5      nX R                  :w  a  SU S3U-   nX l        U$ )z+Add a message when the pytest test changes.ÚPYTEST_CURRENT_TESTzPytest context: r>   )r®   Úgetenvr   )r(   rÑ   r   s      r)   r   ÚPytestTracker.filterŽ  s8   € ä—I’IÐ3Ó4ˆ	ØŸ™Ó&Ø% i [°Ð3°dÑ:ˆDØ&ŒNØˆr,   r  Nrp   r  r  re   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r	\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 rR   )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®   r$  ÚFORCED_DEBUG_FILErç   r«   ÚatexitÚregisterÚcloser.  Ú_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_oneÚthe_one_and_is_interimc                ó¬   • [         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Ú
ModuleTypeÚSYS_MOD_NAMEÚsetattrÚSINGLETON_ATTRr«   Úmodules)r6  r9  r8  Úsingleton_modules       r)   r5  Ú#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«   rC  rL   r@  rç   rB  )r6  rD  s     r)   r/  Ú#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«   rC  )r6  s    r)   Ú_del_singleton_dataÚ#DebugOutputFile._del_singleton_dataæ  s-   € ð ×ÑœsŸ{™{Ó*Ü—‘˜C×,Ñ,Ñ-ð +r,   c                ó²   • U R                   c   eU R                   R                  [        XR                  5      5        U R                   R	                  5         g)z9Just like file.write, but filter through all our filters.N)r&   rD   r  r   rN   )r(   rÑ   s     r)   rD   ÚDebugOutputFile.writeì  s=   € à�|‰|Ñ'Ð'Ð'Ø�‰×Ñœ; t¯\©\Ó:Ô;Ø�‰×ÑÕr,   c                óV   • U R                   c   eU R                   R                  5         g)zFlush our file.N)r&   rN   r/   s    r)   rN   ÚDebugOutputFile.flushò  s"   € à�|‰|Ñ'Ð'Ð'Ø�‰×ÑÕr,   )r   r&   r   )r&   rT   r   úIterable[Callable[[str], str]])NNre   F)
r7  rT   r   rU   r   rO  r8  rZ   rV   r#   )r9  r#   r8  rZ   rV   rW   )rV   z#tuple[DebugOutputFile | None, bool]rp   )rÑ   rX   rV   rW   )r\   r]   r^   r_   r`   r*   Úclassmethodr$   r@  rB  r5  r/  rI  rD   rN   rd   re   r,   r)   r#   r#   —  sÁ   † ÙCðàðð 0ôð ð #'Ø $Ø24Øð,àð,ð ð,ð 0ð	,ð
 ð,ð 
ô,ó ð,ðf =€LØ-€Nàó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©r8  r>   r@   rA   N)r#   r$   rD   rM   )rO   rJ   rB   s      r)   ÚlogrS  ø  s7   € ä
×
!Ñ
!¨$Ð
!Ð
/€CØ‡I�Iˆc�$‰hÔÞÜ˜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~   )rI   Ú
getmembersÚ	isroutineró   Ú
startswithrA  )r6  ÚnameÚmethÚbutnotÚ	decoratorÚprivates      €€€r)   Ú
_decoratorÚ$decorate_methods.<locals>._decorator  sk   ø€ Ü!×,Ò,¨S´'×2CÑ2CÖD‰JˆDØŸ<™<Ó'ÙØ�zÓ!Þ 4§?¡?°3×#7Ñ#7ÙØ�v‹~ÙÜ�C™y¨›Ö/ñ Eð ˆ
r,   re   )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                 ón   >• SS K n[        R                  [        l        UR	                  5         T" U 0 UD6$ r¥   )Úpudbr«   Ú
__stdout__r-  Ú	set_trace)ÚargsÚkwargsrc  Úfuncs      €r)   Ú_wrapperÚbreak_in_pudb.<locals>._wrapper  s+   ø€ ãÜ—^‘^ŒŒ
Ø�‰ÔÙ�TÐ$˜VÑ$Ð$r,   )rf  r   rg  r   rV   r   ©Ú	functoolsÚwraps)rh  ri  s   ` r)   Úbreak_in_pudbrn    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Ú08drr   Ú04dr?   z, c              3  ó>   #   • U H  nS R                   " U6 v •  M     g7f)z{}={!r}Nrs   )r|   Úitems     r)   r€   ÚCshow_calls.<locals>._decorator.<locals>._wrapper.<locals>.<genexpr>3  s   é € Ð#WÉÀ I×$4Ò$4°dÕ$;Êùr•   Ú(Ú)z @ z; T)rÈ   r>   rR  z return )rç   ÚOBJ_ID_ATTRr®   rã   ÚnextÚOBJ_IDSrA  rE   Úmapr…   rô   rË   r  ÚCALLSr\   r#   r$   rD   )r(   rf  rg  ÚoidÚextraÚeargsÚekwargsÚcallidrO   Úretrh  Ú	show_argsÚshow_returnÚ
show_stacks             €€€€r)   ri  Ú0show_calls.<locals>._decorator.<locals>._wrapper*  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   rf  r   rg  r   rV   r   rk  )rh  ri  r„  r…  r†  s   ` €€€r)   r^  Úshow_calls.<locals>._decorator)  s*   ù€ Ü	�Š˜Ó	÷	ñ 	ó 
ð	ð4 ˆr,   ©rh  r   rV   r   re   )r„  r†  r…  r^  s   ``` r)   Ú
show_callsrŠ  #  s   ú€ ÷ñ ð: Ðr,   c                óT  ^• SS1n1 Skn1 Sk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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Ú	SIGNATUREFTc              3  ó*   >#   • U H	  oT;   v •  M     g 7frR   re   ©r|   ÚslugrY  s     €r)   r€   Ú/relevant_environment_display.<locals>.<genexpr>_  s   øé € Ð0©% $˜–ª%ùó   ƒc              3  ó*   >#   • U H	  oT;   v •  M     g 7frR   re   r˜  s     €r)   r€   rš  b  s   øé € Ð2©E D˜4–<ªEùr›  z\wÚ*)rô   Úanyr²   r³   r   r   )ÚenvÚslugsÚincludeÚcloakÚto_showÚvalÚkeeprY  s          @r)   Úrelevant_environment_displayr¦  I  s�   ø€ ð �DˆM€EÚ%€GÚB€Eà€GØ—Y‘Y–[‰	ˆˆcØˆØ�7‹?Ø‰DÜÔ0©%Ó0×0Ñ0ØˆDßˆ4ÜÔ2©EÓ2×2Ñ2Ü—f’f˜U C¨Ó-�Ø�N‰N˜D #˜;Ö'ñ !ô ˜gÓ&Ð&r,   )ru   rX   rV   rX   )r‡   úIterable[tuple[str, Any]]rV   zIterator[str])rD   zCallable[[str], None]r�   rX   r‡   r§  rV   rW   )r<   Ú	ExceptionrV   rX   )rŸ   rX   rV   rX   )rŸ   rW   rV   rW   )rŸ   rU   rV   rU   )r   FFF)
rC   ÚintrÆ   rZ   rÇ   rZ   rÈ   rZ   rV   rX   )r   )rB   r   rC   r©  rV   rW   )é2   )rÑ   rX   rÒ   r©  rV   rX   )rÙ   r©  rV   r©  r  )r(   r   rV   rX   )rì   r   rV   r   )rì   r   rV   rW   )rÑ   rX   r   rO  rV   rX   )F)rO   rX   rJ   rZ   rV   rW   )re   F)r\  úCallable[..., Any]r[  rS   r]  rZ   rV   r«  r‰  )TFF)r„  rZ   r†  rZ   r…  rZ   rV   r«  )rŸ  zMapping[str, str]rV   rš   )Br`   Ú
__future__r   r2  rb   rl  rI   rÀ   r®   r   r²   rÎ   r«   rF   r>  rá   Útypingr   r   r   r   Úcollections.abcr   r	   r
   Úcoverage.miscr   r   Úcoverage.typesr   r   r   Ú__annotations__r1  r   rg   rv   r‹   r�   r™   r›   rœ   r    rË   rM   rÔ   rÜ   r"   ré   r÷   rú   r  r  r   r    r!   r#   rS  r`  rn  Úcountr{  r}  ry  rŠ  r¦  re   r,   r)   Ú<module>r³     s=  ðò .å "ã Û Û Û Û Û 	Û Û 	Û Û 
Û Û Û ÷ó ÷ 8Ñ 7ç <ß 1á�BÓ€ð €ˆiÓ ØÐ ÷Dñ DôNJ�,ô Jô.ô
7ð6Ø ðàðð $ðð 
ô	ô$/ð Gð,Ð Ð(ó ð )+€Ð%Ó *à	ó	ó 
ð	ð 
ó	ó 
ð	ôð" ØØØ!ð	3Ø
ð3à
ð3ð ð3ð ð	3ð
 	õ3öl/ö
ôôð *Ð*Ð ôô	ôô÷,ñ ÷ñ ÷8ñ ÷^ñ ^öB+ð ØðØ!ðàðð ðð õ	ô(ð �/Š/Ó
€Ø�ŠÓ€Ø#€ð ØØð#Øð#àð#ð ð#ð õ	#õL'r,   