
    L-PhB                       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
mZ ddlmZ ddlmZmZmZmZm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* ej+        dd                              Z, e) e* ej+        dd                              Z- e.edd          Z/ ede0          Z1ee1         Z2 ee2 e.e/dd                    Z3e,rM G d d          Z4 e4e/d          Z/e/J  ej5        eddd          Z e6            Z7de8d<   d.dZ9d/dZ:d0d#Z;nd.d$Z9d0d%Z;e G d& d'                      Z<d1d+Z= G d, d-e'          Z>dS )2zBCallback functions and support for sys.monitoring data collection.    )annotationsN)	dataclass)CodeType)AnyCallableNewTypeOptionalcast)env)TBranchTrailsbranch_trails)short_filenameshort_stack)isolate_module)
AnyCallableTFileDispositionTLineNoTOffsetTShouldStartContextFnTShouldTraceFn
TTraceDataTTraceFileDataTracerTWarnFnCOVERAGE_SYSMON_LOGCOVERAGE_SYSMON_STATS
monitoringDISABLE_TYPEDISABLEc                  "    e Zd ZdZddZddZdS )LoggingWrapperz*Wrap a namespace to log all its functions.wrappedr   	namespacestrreturnNonec                "    || _         || _        d S N)r"   r#   )selfr"   r#   s      O/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/sysmon.py__init__zLoggingWrapper.__init__C   s    "DL&DNNN    nameCallable[..., Any]c                     d fd}|S )Nargsr   kwargsr%   c                 t    t          j         d |  |             t          j                  | i |S )N.)logr#   getattrr"   )r0   r1   r-   r)   s     r*   _wrappedz,LoggingWrapper.__getattr__.<locals>._wrappedH   sL    t~<<<d<F<<===2wt|T22DCFCCCr,   )r0   r   r1   r   r%   r    )r)   r-   r6   s   `` r*   __getattr__zLoggingWrapper.__getattr__G   s5    D D D D D D D Or,   N)r"   r   r#   r$   r%   r&   )r-   r$   r%   r.   )__name__
__module____qualname____doc__r+   r8   r7   r,   r*   r!   r!   @   sB        88	' 	' 	' 	'	 	 	 	 	 	r,   r!   zsys.monitoringT)fullshort_filenames	frame_idszset[int]seen_threadsmsgr$   r%   r&   c                (   t          j                    }t          t          t	          j                    j                  }||z  dz  d}|t          vr>t                              |           t          d| d| dt                                  dD ]}t          |dd	          5 }	 t          | d
| d|  |d           n7# t          $ r* t          | d
| dt          |            |d           Y nw xY wddd           n# 1 swxY w Y   dS )z1Write a message to our detailed debugging log(s).iw 07dzNew thread  z:
)z/tmp/foo.outazutf-8)encoding:: T)fileflushN)osgetpidr
   int	threadingcurrent_threadidentr@   addr4   r   openprintUnicodeErrorascii)rA   pidtidtslugfilenamefs         r*   r4   r4   Y   s    ikk3	022899#I*00l""S!!!=c==E==kmm==>>>
 
	N 
	NH hg666 N!NS11511C11FFFFF# N N NS88588E#JJ88qMMMMMMNN N N N N N N N N N N N N N N
	N 
	Ns6   &D(CD1C74D6C77DD
	D
	argr   c                    t          | t                    r@dt          |           dd| j         dz   dt	          | j                  d| j         dz   S t          |           S )z)Make a customized repr for logged values.z<code @#xz name=,z file=#>)
isinstancer   idco_namer   co_filenameco_firstlinenorepr)r[   s    r*   arg_reprrg   q   sy    c8$$ 	&"S''&&&)3;)))*T>#/::TTs?QTTTU
 Cyyr,   names
str | Noner   c                      d fd}|S )z%Decorate a function to log its calls.methodr   r%   c                L     t          j                   d fd            }|S )Nr)   r   r0   r%   c           	        	 g }t          |          D ]/\  }}||                    | dt          |                      0t          t	          |           ddj         dd                    |           d            | g|R  }|S # t          $ r}t          d|j        j         d|            	 t          d
                    t          j
        |                               	 t          J t                              t          j        j        d           n# t           $ r t          d           Y nw xY w d }~ww xY w)N=r]   rG   (z, )z!!rH       r   z/oops, shutting off events with disabled tool id)zipappendrg   r4   rb   r9   join	Exception	__class__	tracebackformat_exceptionsys_monitoring
set_eventssysr   COVERAGE_ID
ValueError)	r)   r0   
args_reprsr-   r[   retexcrk   rh   s	          r*   r6   z0panopticon.<locals>._decorator.<locals>._wrapped   s   !#J%(%5%5 E E	c<$"))T*C*CHSMM*C*CDDDD2d88SSSSS499Z;P;PSSSTTT &----CJ    <S]3<<s<<===FBGGI$>s$C$CDDEEEO-999&11#.2LaPPPP% O O OMNNNNNO s=   B
B 
EAE-3D! E!D=:E<D==EE)r)   r   r0   r   r%   r   )	functoolswraps)rk   r6   rh   s   ` r*   
_decoratorzpanopticon.<locals>._decorator~   sC    _V$$      %$2 Or,   )rk   r   r%   r   r7   rh   r   s   ` r*   
panopticonr   {   s)    	 	 	 	 	 	: r,   c                    dS )zAWrite a message to our detailed debugging log(s), but not really.Nr7   )rA   s    r*   r4   r4      s      r,   c                     dd}|S )z5Decorate a function to log its calls, but not really.methr   r%   c                    | S r(   r7   )r   s    r*   r   zpanopticon.<locals>._decorator   s    Kr,   )r   r   r%   r   r7   r   s     r*   r   r      s    	 	 	 	 r,   c                  <    e Zd ZU dZded<   ded<   ded<   ded	<   d
S )CodeInfoz/The information we want about each code object.booltracingzTTraceFileData | None	file_datazdict[TOffset, TLineNo] | Nonebyte_to_liner   r   N)r9   r:   r;   r<   __annotations__r7   r,   r*   r   r      sG         99MMM$$$$//// !     r,   r   coder   dict[TOffset, TLineNo]c                v    i }|                                  D ]!\  }}}|t          ||d          D ]}|||<   "|S )z6Make a dict mapping byte code offsets to line numbers.N   )co_linesrange)r   b2lbstartbendlinenoboffsets         r*   bytes_to_linesr      sW    
C $ & &f q11 & &%GJr,   c                     e Zd ZdZd#dZd$dZ e            d%d	            Z e            d%d
            Z e            d%d            Z	d&dZ
d%dZd'dZ edd          d(d            Z eddd          d)d            Z edd          d*d            Z edd          d*d             Z eddd          d+d"            ZdS ),
SysMonitorzHPython implementation of the raw data tracer for PEP669 implementations.tool_idrM   r%   r&   c                >   |  d| _         |  |  d | _        d | _        |  |  |  || _        i | _        g | _        d| _        t          j                    | _	        d | _
        t          r2t                              d                                d          | _
        d| _        d S )NFzHstarts start_tracing returns line_lines line_arcs branches branch_trailsr   )
trace_arcsshould_start_contextswitch_contextmyid
code_infoscode_objects	sysmon_onrN   LocklockstatsCOLLECT_STATSdictfromkeyssplit	_activity)r)   r   s     r*   r+   zSysMonitor.__init__   s    )C CG!CG*,	 02 -/N$$	,0
 	Z``bb DJ
 r,   r$   c                    t          d | j                                        D                       }t          | j                  }dt	          |           dd| d| dS )Nc              3  4   K   | ]}t          |          V  d S r(   )len).0vs     r*   	<genexpr>z&SysMonitor.__repr__.<locals>.<genexpr>   s(      88SVV888888r,   z<SysMonitor at r]   rH   z data points in z files>)sumdatavaluesr   rb   )r)   pointsfiless      r*   __repr__zSysMonitor.__repr__   sc    88TY%5%5%7%788888DIVDVVVVVVVVVr,   c                   | j         5  t          J t                              | j        d           t	          j        t          j        | j                  }t          j        j	        }t          
                    | j        |j                    ||j        | j                   | j        rj ||j        | j                    ||j        | j                   t$          j        j        r, ||j        | j                    ||j        | j                   n ||j        | j                   t                                           d| _        ddd           dS # 1 swxY w Y   dS )zStart this Tracer.Nzcoverage.pyT)r   rz   use_tool_idr   r   partialregister_callbackr|   r   eventsr{   PY_STARTsysmon_py_startr   	PY_RETURNsysmon_py_returnLINEsysmon_line_arcsr   
PYBEHAVIORbranch_right_leftBRANCH_RIGHTsysmon_branch_eitherBRANCH_LEFTsysmon_line_linesrestart_eventsr   )r)   registerr   s      r*   startzSysMonitor.start   s    Y 	" 	"!---&&ty-@@@ ()I49UUH^*F%%diAAAHV_d&:;;; >)4+@AAAd&;<<<>3 H+1   H*1  
 d&<===))+++!DN/	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   EEEEc                   | j         5  | j        s	 ddd           dS t          J t                              | j        d           d| _        t                              | j                   ddd           dS # 1 swxY w Y   dS )zStop this Tracer.Nr   F)r   r   rz   r{   r   free_tool_idr)   s    r*   stopzSysMonitor.stop  s     Y 	3 	3>  		3 	3 	3 	3 	3 	3 	3 	3
 "---%%di333"DN''	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   	A:AA::A>A>c                .    |                                   dS )z+The process has forked, clean up as needed.N)r   r   s    r*   	post_forkzSysMonitor.post_fork  s     			r,   r   c                    | j         S )zHas there been any activity?r   r   s    r*   activityzSysMonitor.activity!  s
    ~r,   c                    d| _         dS )zReset the activity() flag.FNr   r   s    r*   reset_activityzSysMonitor.reset_activity%  s    r,   dict[str, int] | Nonec                    | j         S )z+Return a dictionary of statistics, or None.)r   r   s    r*   	get_statszSysMonitor.get_stats)  s
    zr,   r   @r   instruction_offsetr   MonitorReturnc                   d| _         | j        | j        dxx         dz  cc<   | j                            t	          |                    }d}d}||j        }|j        }||j        }| j                            |          }|Ft          j
                    j        }t          r|j        }|                     ||          }|| j        |<   |j        }|r|j        }	|	J |                                  	 |	| j        vrt%                      | j        |	<   |                                  n# |                                  w xY w| j        |	         }t)          |          }
nd}d}
t+          |||
i           }|| j        t	          |          <   | j                            |           |r| j        | j        dxx         dz  cc<   t0          j        j        }| j        5  | j        rmt:          J |j        |j        z  |j         z  }| j!        r%tD          j#        j$        sJ ||j%        |j&        z  z  }t:          '                    | j(        ||           ddd           n# 1 swxY w Y   tR          S )z-Handle sys.monitoring.events.PY_START events.TNstartsrq   )r   r   r   r   start_tracing)*r   r   r   getrb   r   r   rd   should_trace_cacheinspectcurrentframef_backLOGshould_tracetracesource_filename	lock_datar   setunlock_datar   r   r   rt   r|   r   r   r   r   rz   r   	PY_RESUMEr   r   r   r   r   r   r   set_local_eventsr   r   )r)   r   r   	code_infotracing_coder   rY   dispframe	tracenamer   r   local_eventss                r*   r   zSysMonitor.sysmon_py_start-  s    :!Jx   A%   O''411	$(+/	 $,L!+I'H*..x88D|,..5 )!LE((59948'1:L  0	 ,,,   ' 	11/2uu	),$$&&&&D$$&&&& Ii0	$T** 	 $#  	  I )2DOBtHH%$$T*** W:)J///14///.Y 
W 
W~ 	W-999'-'7&:J'JV['X? #&>#CCCC( & 3"("4!5L '77	4VVV
W 
W 
W 
W 
W 
W 
W 
W 
W 
W 
W 
W 
W 
W 
W s   4D( (D>A5II!$I!Nretvalobjectc                    | j         | j         dxx         dz  cc<   | j                            t          |                    }|j        |         }|$||j         f}|j                            |           t          S )zBHandle sys.monitoring.events.PY_RETURN events for branch coverage.Nreturnsrq   )	r   r   r   rb   r   re   r   rQ   r   )r)   r   r   r   r   	last_linearcs          r*   r   zSysMonitor.sysmon_py_returnt  s     :!Jy!!!Q&!!!O''411	 *+=>	 t223C##C(((r,   lineline_numberr   c                    | j         | j         dxx         dz  cc<   | j                            t          |                    }|!|j        |j                            |           t          S )z;Handle sys.monitoring.events.LINE events for line coverage.N
line_linesrq   )r   r   r   rb   r   rQ   r   )r)   r   r   r   s       r*   r   zSysMonitor.sysmon_line_lines  sq     :!J|$$$)$$$O''411	  Y%8%D##K000r,   c                    | j         | j         dxx         dz  cc<   | j        t          |                   }||f}|j                            |           t
          S )z=Handle sys.monitoring.events.LINE events for branch coverage.N	line_arcsrq   )r   r   rb   r   rQ   r   )r)   r   r   r   r   s        r*   r   zSysMonitor.sysmon_line_arcs  sd     :!J{###q(###OBtHH-	 K($$$r,   destination_offsetc                   | j         | j         dxx         dz  cc<   | j        t          |                   }|j        s0| j         | j         dxx         dz  cc<   t          |          |_        d}|j                            |          }|-|D ]*\  }}|||v r|j                            |           d} n+|sG|j        J |j        |         }	|j        |         }
|	|
k    r|	|
f}|j                            |           t          S )z+Handle BRANCH_RIGHT and BRANCH_LEFT events.Nbranchesrq   r   FT)	r   r   rb   r   r   r   rQ   r   r   )r)   r   r   r  r   	added_arc	dest_infooffsetsr   l1l2s              r*   r   zSysMonitor.sysmon_branch_either  sR   
 :!Jz"""a'"""OBtHH-	 & 	:z%
?+++q0+++&3D&9&9I#	+//0BCC	  )  ;%00'++C000 $IE	 1  	-)555'(:;B'(:;BRxx2h#'',,, r,   )r   rM   r%   r&   )r%   r$   )r%   r&   )r%   r   )r%   r   )r   r   r   r   r%   r   )r   r   r   r   r   r   r%   r   )r   r   r   r   r%   r   )r   r   r   r   r  r   r%   r   )r9   r:   r;   r<   r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r,   r*   r   r      s       RR       DW W W W
 Z\\" " " \"6 Z\\
3 
3 
3 \
3 Z\\   \          ZD D D DL ZT""   #"& Z     Z
 
 
  
 ZS!!% % % "!% % %r,   r   )rA   r$   r%   r&   )r[   r   r%   r$   )rh   ri   r%   r   )r   r   r%   r   )?r<   
__future__r   r   r   rK   os.pathr|   rN   rx   dataclassesr   typesr   typingr   r   r   r	   r
   coverager   coverage.bytecoder   r   coverage.debugr   r   coverage.miscr   coverage.typesr   r   r   r   r   r   r   r   r   r   r   rM   getenvr   r   r5   rz   r   r   r   r   r!   r   r   r@   r   r4   rg   r   r   r   r   r7   r,   r*   <module>r     s   I H H " " " " " "      				  



         ! ! ! ! ! !                          : : : : : : : : 6 6 6 6 6 6 6 6 ( ( ( ( ( (                        ^B
 d33yry.223344 SS#:A>>??@@ lD11w~v..&
$}ggniFF
G
G  j        $^N4DEEN%%%#)#	  K !SUUL""""N N N N0            HP P P P    ! ! ! ! ! ! ! !"   B B B B B B B B B Br,   