
    L-Ph-<                       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	m
Z
 ddlmZ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)	FrameType
ModuleType)AnyCallablecast)env)
TArcTFileDispositionTLineNoTShouldStartContextFnTShouldTraceFn
TTraceDataTTraceFileDataTTraceFnTWarnFnTracer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    Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/pytracer.py__init__zPyTracer.__init__M   s    t'' 	)CBF!CG*, -148"#)-#'$ Z\/3{D999 59K'''    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VV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8TY%5%5%7%788888DITr$xxTTTfTTe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>   sU       # #&5!Q ^e//44R8# # # # # #r:   
N)openwriter#   r?   r-   formatr.   identr'   current_threadjoinmapr;   )r7   rI   rJ   fstacks        r8   logzPyTracer.log   s    (#@@@ 	AGGvAAAA#do*>*>AAABBB
 GGELL#c4..!9!9::;;; GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB;;B?B?Nframer   eventarglinenoTLineNo | NoneTTraceFn | Nonec                	   t           |j        j        v rdS | j        rt	          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}nt\          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
 L 	S\^^t/NNN! L
O'')) ]"D$6H\H\    "L,NL(	     4
 F??( 
(T\-A $ 9 9% @ @ ,#0DL&*O.:::''5555&+OO"'#2D  "DNO""&&N#	   |/H4----%-".228<<<,,Xu==D8<D+H5%)": 0 $ 4I$000NN$$$+$DI553655DIi0((****((****)-9)=D&&*/E''' ,&+# ! ,U]Q->?"aZ		$UIr::Q>	 0"',"=!=!&f__!-#(>? G4#566::DNG;TUUUUd&899==gFFF!(h U4#5 U |+%4yyEAI--&* >8 '!QJE'+E{f'<E{l22&*e33&+Te.?&???&*e&778JFF&+&* U!L7E4#566::DNUF;STTT ##%% YD 2DNDDX # **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.start8  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.stopF  s     \^^
 > 	;***{ DN$A$A$C$C$III
  X7$.7R4Z { 	 9 	- 	T444		DDD!@DDE(      	 	 	 	44r:   boolc                    | j         S )zHas there been any activity?r0   r6   s    r8   activityzPyTracer.activityj  s
    ~r:   c                    d| _         dS )zReset the activity() flag.FNr   r6   s    r8   reset_activityzPyTracer.reset_activityn  s    r:   dict[str, int] | Nonec                    dS )z+Return a dictionary of statistics, or None.N r6   s    r8   	get_statszPyTracer.get_statsr  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
   0 "&d/ d/ d/ d/ d/L/ / / /" " " "H           r:   r   )+r   
__future__r   r1   disr   rp   r'   typesr   r   typingr   r   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t9
 
x	 	 y(	>)M*K<(J X,1355K5*0
 OOD!!	| | | | |v | | | | |r:   