§
    0›jõ;  ã                  ó¶  — 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m	Z	 ddl
mZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZ ee         Zee         Zej          !                    d	¦  «        Z"ej         d
         Z#e"€&ej         d         Z$ej         d         Z%ej&        rdndZ'ndxZ$xZ%Z'e( )                    d¦  «        Z* G d„ de¦  «        Z+dS )z#Raw data collector for coverage.py.é    )ÚannotationsN)ÚCallable)Ú	FrameTypeÚ
ModuleType)ÚAnyÚcast)Úenv)
ÚTArcÚTFileDispositionÚTLineNoÚTracerÚTShouldStartContextFnÚTShouldTraceFnÚ
TTraceDataÚTTraceFileDataÚTTraceFnÚTWarnFnÚRESUMEÚRETURN_VALUEÚYIELD_VALUEÚ
YIELD_FROMé   éÿÿÿÿÚcoc                  ó|   — e Zd ZdZ ej        ¦   «         Zdd„Zdd„Zdd
„Z		 dd d„Z
d!d„Zdd„Zd"d„Zdd„Zd#d„ZdS )$ÚPyTracerz-Python implementation of the raw data tracer.ÚreturnÚNonec                ód  — t          | j        ¦  «        | _        |  d| _        |  |  d | _        d | _        |  |  |  d | _        d | _        d| _        d | _	        d | _
        d| _        g | _        d | _        d| _        d| _        d| _        t#          j        t&          | dd¦  «         | j        | _        d S )NFr   Ú	in_atexitT)ÚnextÚ
tracer_idsÚidÚ
trace_arcsÚshould_start_contextÚswitch_contextÚ	threadingÚcur_file_dataÚ	last_lineÚcur_file_nameÚcontextÚstarted_contextÚ
data_stackÚthreadÚstoppedÚ	_activityr    ÚatexitÚregisterÚsetattrÚ_traceÚ_cached_bound_method_trace©Úselfs    úP/home/lighthouse/health/venv/lib64/python3.11/site-packages/coverage/pytracer.pyÚ__init__zPyTracer.__init__M   sÎ   € å�t”Ñ'Ô'ˆŒð 	ÐØˆŒØÐ)ØÐCØBFˆÔ!ØCGˆÔØÐ*ØÐ,ØÐð -1ˆŒà48ˆÔØ"#ˆŒØ)-ˆÔØ#'ˆŒØ$ˆÔð Z\ˆŒØ/3ˆŒØˆŒØˆŒàˆŒåŒ�  {°DÑ9Ô9Ð9ð 59´KˆÔ'Ð'Ð'ó    Ústrc                ó¾   — t          d„ | j                             ¦   «         D ¦   «         ¦  «        }t          | j        ¦  «        }dt	          | ¦  «        d›d|› d|› d�S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S ©N)Úlen)Ú.0Úvs     r8   ú	<genexpr>z$PyTracer.__repr__.<locals>.<genexpr>{   s(   è è € Ð8Ð8 •S˜‘V”VÐ8Ð8Ð8Ð8Ð8Ð8r:   z<PyTracer at z#xz: z data points in z files>)ÚsumÚdataÚvaluesr?   r#   )r7   ÚpointsÚfiless      r8   Ú__repr__zPyTracer.__repr__z   sc   € ÝÐ8Ð8 T¤Y×%5Ò%5Ñ%7Ô%7Ð8Ñ8Ô8Ñ8Ô8ˆÝ�D”I‘”ˆØT�r $™xœxÐTÐTÐT¨fÐTÐTÀeÐTÐTÐTÐTr:   ÚmarkerÚargsr   c                ó�  — t          ddd¬¦  «        5 }|                     |› d| j        › dt          | j        ¦  «        › d�¦  «         	 |                     d
                     d 
                    t          t          |¦  «        ¦  «        ¦  «        ¦  «         	 |                     d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z3For hard-core logging of what this tracer is doing.z/tmp/debug_trace.txtÚazutf-8)Úencodingú ú[ú]r   z
.{:x}.{:x}z {}z | z / c              3  óZ   K  — | ]&\  }}}}|pd                       d¦  «        d         V — Œ'dS )z???ú/r   N)Ú
rpartition)r@   Ú_Úfnames      r8   rB   zPyTracer.log.<locals>.<genexpr>�   sR   è è € ð #ð #Ù=K¸QÀÀqÈ!�U�^˜e×/Ò/°Ñ4Ô4°RÔ8ð#ð #ð #ð #ð #ð #r:   ú
N)ÚopenÚwriter#   r?   r-   Úformatr.   Úidentr'   Úcurrent_threadÚjoinÚmapr;   )r7   rI   rJ   ÚfÚstacks        r8   ÚlogzPyTracer.log   sÿ   € åÐ(¨#¸Ð@Ñ@Ô@ð 	ÀAØ�GŠG�vÐAÐA ¤ÐAÐA­#¨d¬oÑ*>Ô*>ÐAÐAÐAÑBÔBÐBðð �GŠG�E—L’L §¢­#­c°4©.¬.Ñ!9Ô!9Ñ:Ô:Ñ;Ô;Ð;ðð �GŠG�D‰MŒMˆMð!	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   “BB;Â;B?ÃB?NÚframer   ÚeventÚargÚlinenoúTLineNo | NoneúTTraceFn | Nonec                ó†	  — t           |j        j        v rdS | j        r¨t	          j        ¦   «         | j        k    rŒ	 t	          j        d¦  «         	 | j                             ¦   «         \  | _        | _        | _        | _        nA# t&          $ r4 |                      d|j        j        |j        |j        j	        ¦  «         Y nw xY wdS |dk    �ró| j        rN| j        €G|                      |¦  «        }|�-|| _        d}| j        €J ‚|                      | j        ¦  «         nd}nd}|| _        d| _        | j                             | j        | j        | j        |f¦  «         |j        j        }|| j        k    s|rÙ|| _        | j                             |¦  «        }	|	€ |                      ||¦  «        }	|	| j        |<   d| _        |	j        r€|	j        }
|
€J ‚|                      ¦   «          	 |
| j        vrtA          ¦   «         | j        |
<   |  !                    ¦   «          n# |  !                    ¦   «          w xY w| j        |
         | _        nd|_"        n| j        sd|_"        tF          �!|j        j$        |j%        d	z            }|dk    }ntM          |d
d¦  «        dk     }|r|j        j'         | _        �n|j        | _        �ný|dk    r€| j        �w|j        }| j(        r5tS          tT          | j        ¦  «         +                    | j        |f¦  «         n-tS          tX          | j        ¦  «         +                    |¦  «         || _        �nw|dk    �rp| j(        �r
| j        �r|j        j$        }|j%        }tF          �At[          |¦  «        |dz   k    rd}nŒt\          j/        j0        r|dz  }||         tF          k    }nd||         tb          k    rd}nP||         td          k    rd}n<t[          |¦  «        |tf          z   k    rd}n||tf          z            th          k    rd}nd}|rA|j        j'        }tS          tT          | j        ¦  «         +                    | j        | f¦  «         | j                             ¦   «         \  | _        | _        | _        | _        | j        r%| j        €J ‚d| _        |                      d¦  «         | j        S )z*The trace function passed to sys.settrace.Nr   z---
Xú>zEmpty stack!ÚcallTFé   Úf_lastir   Úliner   r   )5Ú	THIS_FILEÚf_codeÚco_filenamer/   ÚsysÚgettracer5   r`   Úf_linenoÚco_nameÚf_traceÚf_backÚsettracer-   Úpopr(   r*   r)   r,   Ú
IndexErrorr%   r+   r&   r0   ÚappendÚshould_trace_cacheÚgetÚshould_traceÚtraceÚsource_filenameÚ	lock_datarD   ÚsetÚunlock_dataÚf_trace_linesr   Úco_coderk   ÚgetattrÚco_firstlinenor$   r   Úset_TArcÚaddÚset_TLineNor?   r	   Ú
PYBEHAVIORÚlasti_is_yieldr   r   ÚYIELD_FROM_OFFSETr   )r7   ra   rb   rc   rd   r^   Úcontext_mayber,   ÚfilenameÚdispÚ	tracenameÚopargÚ	real_callÚflinenoÚcodeÚlastiÚreal_returnÚfirsts                     r8   r4   zPyTracer._trace“   s   € õ ˜œÔ0Ð0Ð0Ø�4ð
 Œ<ð 	�CœL™NœN¨dÔ.MÒMÐMð!õ ŒL˜ÑÔÐð
à”O×'Ò'Ñ)Ô)ñ ]�Ô" DÔ$6¸¼ÈÔH\ÐH\øõ ð ð ð Ø—’Ø"Ø”LÔ,Ø”NØ”LÔ(ñ	ô ð ð ð ðøøøð �4ð
 �FŠ?‰?àÔ(ð 
(¨T¬\Ð-AØ $× 9Ò 9¸%Ñ @Ô @�Ø Ð,Ø#0�D”LØ&*�OØÔ.Ð:Ð:Ð:Ø×'Ò'¨¬Ñ5Ô5Ð5Ð5à&+�O�Oà"'�Ø#2ˆDÔ ð "ˆDŒNØŒO×"Ò"àÔ&ØÔ&Ø”NØ#ð	ñô ð ð ”|Ô/ˆHØ˜4Ô-Ò-Ð-°Ð-Ø%-�Ô"ØÔ.×2Ò2°8Ñ<Ô<�Ø�<Ø×,Ò,¨X°uÑ=Ô=�DØ8<�DÔ+¨HÑ5à%)�Ô"Ø”:ð 0Ø $Ô 4�IØ$Ð0Ð0Ð0Ø—N’NÑ$Ô$Ð$ð+Ø$¨D¬IÐ5Ð5Ý36±5´5˜DœI iÑ0à×(Ò(Ñ*Ô*Ð*Ð*ø˜×(Ò(Ñ*Ô*Ð*Ð*øøøØ)-¬°9Ô)=�DÔ&Ð&à*/�EÔ'Ð'ØÔ'ð ,Ø&+�Ô#õ Ð!ð œÔ,¨U¬]¸QÑ->Ô?�Ø" ašZ�	�	å$ U¨I°rÑ:Ô:¸QÒ>�	Øð 0Ø"'¤,Ô"=Ð!=�”‘à!&¤�”‘à�fŠ_ˆ_àÔ!Ð-Ø#(¤>�à”?ð GÝ� 4Ô#5Ñ6Ô6×:Ò:¸D¼NÈGÐ;TÑUÔUÐUÐUå� dÔ&8Ñ9Ô9×=Ò=¸gÑFÔFÐFØ!(�”ùà�hÒÑØŒñ U 4Ô#5ñ Uð ”|Ô+�Øœ�ÝÐ%Ý˜4‘y”y E¨A¡IÒ-Ð-à&*˜˜õ œ>Ô8ð 'Ø! Q™J˜EØ&*¨5¤kµVÒ&;˜˜à˜E”{¥lÒ2Ð2Ø&*˜˜Ø˜eœ­Ò3Ð3Ø&+˜˜Ý˜T™œ eÕ.?Ñ&?Ò?Ð?Ø&*˜˜Ø˜eÕ&7Ñ7Ô8½JÒFÐFØ&+˜˜à&*˜Øð UØ!œLÔ7�EÝ� 4Ô#5Ñ6Ô6×:Ò:¸D¼NÈUÈFÐ;SÑTÔTÐTð ”×#Ò#Ñ%Ô%ñ YˆDÔ Ô 2°D´NÀDÔDXð Ô#ð *ØÔ*Ð6Ð6Ð6Ø#�”Ø×#Ò# DÑ)Ô)Ð)àÔ.Ð.s   Á2B Â;C Â?C Ç(H ÈH2r   c                ó¨   — d| _         | j        r%| j        €| j                             ¦   «         | _        t	          j        | j        ¦  «         | j        S )zdStart this Tracer.

        Return a Python function suitable for use with sys.settrace().

        F)r/   r'   r.   r[   rp   rv   r5   r6   s    r8   ÚstartzPyTracer.start9  sN   € ð ˆŒØŒ>ð 	>ØŒ{Ð"Ø"œn×;Ò;Ñ=Ô=�”åŒ�TÔ4Ñ5Ô5Ð5ØÔ.Ð.r:   c                óx  — t          j        ¦   «         }d| _        | j        r7| j        €J ‚| j        j        | j                             ¦   «         j        k    rdS t          j        r| j	        r|du pt          j
        }| j        r3|s3|| j        k    r*|                      d|›d| j        ›�z   d¬¦  «         dS dS dS dS )zStop this Tracer.TNz.Trace function changed, data is likely wrong: z != ztrace-changed)Úslug)rp   rq   r/   r'   r.   rZ   r[   r	   ÚPYPYr    ÚMETACOVÚwarnr5   )r7   ÚtfÚsuppress_warnings      r8   ÚstopzPyTracer.stopG  sø   € õ Œ\‰^Œ^ˆð
 ˆŒàŒ>ð 	Ø”;Ð*Ð*Ð*ØŒ{Ô  D¤N×$AÒ$AÑ$CÔ$CÔ$IÒIÐIð
 �õ  œHÐF¨¬ÐF¸BÀ$¸JÐVÍ3Ì;ÐØŒ9ð 	Ð-ð 	Ø�TÔ4Ò4Ð4Ø—	’	ØDØÐFÐF 4Ô#BÐFÐFñGà(ð ñ ô ð ð ð ð	ð 	ð 	ð 	Ø4Ð4r:   Úboolc                ó   — | j         S )zHas there been any activity?©r0   r6   s    r8   ÚactivityzPyTracer.activityh  s
   € àŒ~Ðr:   c                ó   — d| _         dS )zReset the activity() flag.FNr£   r6   s    r8   Úreset_activityzPyTracer.reset_activityl  s   € àˆŒˆˆr:   údict[str, int] | Nonec                ó   — dS )z+Return a dictionary of statistics, or None.N© r6   s    r8   Ú	get_statszPyTracer.get_statsp  s   € àˆtr:   )r   r   )r   r;   )rI   r;   rJ   r   r   r   r>   )
ra   r   rb   r;   rc   r   rd   re   r   rf   )r   r   )r   r¡   )r   r§   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	itertoolsÚcountr"   r9   rH   r`   r4   r˜   r    r¤   r¦   rª   r©   r:   r8   r   r   8   sù   € € € € € Ø7Ð7ð$ !�”Ñ"Ô"€Jð+@ð +@ð +@ð +@ðZUð Uð Uð Uð
ð ð ð ð2 "&ðd/ð d/ð d/ð d/ð d/ðL/ð /ð /ð /ðð ð ð ðBð ð ð ðð ð ð ðð ð ð ð ð r:   r   ),r®   Ú
__future__r   r1   Údisr¯   rp   r'   Úcollections.abcr   Útypesr   r   Útypingr   r   Úcoverager	   Úcoverage.typesr
   r   r   r   r   r   r   r   r   r   r€   rˆ   r†   Úopmapr{   r   r   r   r   r›   r‹   Ú__file__Úrstriprm   r   r©   r:   r8   ú<module>r»      så  ðð *Ð )à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" �'Œl€ØˆtŒ9€ð
 
Œ�Š�xÑ	 Ô	 €ØŒy˜Ô(€Ø	€>Ø”)˜MÔ*€KØ”˜<Ô(€JØ œXÐ,˜˜¨1ÐÐà35Ð5€KÐ5�*Ð0ð
 �OŠO˜DÑ!Ô!€	ðzð zð zð zð zˆvñ zô zð zð zð zr:   