
    x8'h=                       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mZ ddlmZmZmZmZ ddlmZ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! d	Z" e#ed
d      Z$ere$J eZ%e"rF G d d      Z& e&e$d      Z$e$J  ejN                  eddd      Z e(       Z)de*d<   ddZ+ddZ,ddZ-nddZ+ddZ-e G d d             Z.ddZ/ G d de       Z0y) zBCallback functions and support for sys.monitoring data collection.    )annotationsN)	dataclass)CodeType	FrameType)AnyCallableTYPE_CHECKINGcast)short_filenameshort_stack)
AnyCallableTArcTFileDispositionTLineNoTShouldStartContextFnTShouldTraceFn
TTraceDataTTraceFileDataTracerTWarnFnF
monitoringc                       e Zd ZdZddZddZy)LoggingWrapperz*Wrap a namespace to log all its functions.c                     || _         || _        y N)wrapped	namespace)selfr   r   s      K/var/www/html/trade_iq/venv/lib/python3.12/site-packages/coverage/sysmon.py__init__zLoggingWrapper.__init__;   s    "DL&DN    c                     d fd}|S )Nc                 x    t        j                   d |  |         t        j                        | i |S )N.)logr   getattrr   )argskwargsnamer   s     r   _wrappedz,LoggingWrapper.__getattr__.<locals>._wrapped@   s@    t~~&avdVF8<=2wt||T2DCFCCr!   )r'   r   r(   r   returnr    )r   r)   r*   s   `` r   __getattr__zLoggingWrapper.__getattr__?   s    D Or!   N)r   r   r   strr+   None)r)   r.   r+   zCallable[..., Any])__name__
__module____qualname____doc__r    r-   r,   r!   r   r   r   8   s    8	'	r!   r   zsys.monitoringT)fullshort_filenames	frame_idszset[int]seen_threadsc           	        t        j                         }t        t        t	        j
                         j                        }||z  dz  d}|t        vr1t        j                  |       t        d| d| dt                       dD ]-  }t        |d      5 }t        | d| d	|  |d
       ddd       / y# 1 sw Y   :xY w)z1Write a message to our detailed debugging log(s).iw 07dzNew thread  z:
)z/tmp/foo.outa:: T)fileflushN)osgetpidr
   int	threadingcurrent_threadidentr7   addr%   r   openprint)msgpidtidtslugfilenamefs         r   r%   r%   N   s     iik3	002889#I*3/l"S!+cU!E7#km_=>
 	CH h$ CQugRu-ATBC C	CC Cs   B77C 	c                    t        | t              rGd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)args    r   arg_reprr[   c   sl    c8$"S'"&3;;-q)*>#//:=Qs?Q?Q>RRSTU
 Cyr!   c                      d fd}|S )z%Decorate a function to log its calls.c                H     t        j                         d fd       }|S )Nc           	     d   	 g }t        |      D ]'  \  }}|	|j                  | dt        |              ) t        t	        |       ddj
                   ddj                  |       d        | g| }|S # t        $ r}t        d|j                  j
                   d|        t        d	j                  t        j                  |                   	 t        J t        j                  t        j                  j                  d
        # t         $ r t        d       Y  w xY wd }~ww xY w)N=rP   r<   (z, )z!!r=    r   z/oops, shutting off events with disabled tool id)zipappendr[   r%   rU   r0   join	Exception	__class__	tracebackformat_exceptionsys_monitoring
set_eventssysr   COVERAGE_ID
ValueError)	r   r'   
args_reprsr)   rZ   retexcmethodnamess	          r   r*   z0panopticon.<locals>._decorator.<locals>._wrappedq   s0   !#J%(%5 E	c<$"))TF!HSM?*CDE 2d8B-q(9499Z;P:QQRST --CJ  	"S]]334Bse<=	 : :3 ?@AO-999&11#..2L2LaP  & OMNO	s=   A9A= =	D/AD*6DD*D'$D*&D''D**D/)r   r   r'   r   r+   r   )	functoolswraps)rr   r*   rs   s   ` r   
_decoratorzpanopticon.<locals>._decoratorp   s%    __V$ %. Or!   )rr   r   r+   r   r,   rs   rv   s   ` r   
panopticonrx   m   s    	6 r!   c                     y)zAWrite a message to our detailed debugging log(s), but not really.Nr,   )rI   s    r   r%   r%      s    r!   c                     dd}|S )z5Decorate a function to log its calls, but not really.c                    | S r   r,   )meths    r   rv   zpanopticon.<locals>._decorator   s    Kr!   )r|   r   r+   r   r,   rw   s     r   rx   rx      s    	 r!   c                  0    e Zd ZU dZded<   ded<   ded<   y)	CodeInfoz/The information we want about each code object.booltracingzTTraceFileData | None	file_datazdict[int, int] | Nonebyte_to_lineN)r0   r1   r2   r3   __annotations__r,   r!   r   r~   r~      s    9M$$''r!   r~   c                p    i }| j                         D ]   \  }}}|
t        ||d      D ]  }|||<   	 " |S )z6Make a dict mapping byte code offsets to line numbers.   )co_linesrange)codeb2lbstartbendlinenoboffsets         r   bytes_to_linesr      sQ    
C $ &f q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rdd
ZnddZ edd      dd       Z edd      	 	 	 	 	 	 dd       Z eddd      	 	 	 	 	 	 	 	 dd       Z eddd      	 	 	 	 	 	 	 	 dd       Z edd      d d       Z edd      d d       Zy)!
SysMonitorzHPython implementation of the raw data tracer for PEP669 implementations.c                    |  d| _         |  |  d | _        d | _        |  |  |  || _        i | _        g | _        i | _        i | _        d| _        t        j                         | _        ddi| _        d| _        d| _        y )NFstartsr   )
trace_arcsshould_start_contextswitch_contextmyid
code_infoscode_objects
last_lineslocal_event_codes	sysmon_onrC   Locklockstatsstopped	_activity)r   tool_ids     r   r    zSysMonitor.__init__   s     CG!CG	 02 -/0268NN$	 a

 r!   c                    t        d | j                  j                         D              }t        | j                        }dt	        |       dd| d| dS )Nc              3  2   K   | ]  }t        |        y wr   )len).0vs     r   	<genexpr>z&SysMonitor.__repr__.<locals>.<genexpr>   s     8SV8s   z<SysMonitor at rP   r=   z data points in z files>)sumdatavaluesr   rU   )r   pointsfiless      r   __repr__zSysMonitor.__repr__   sN    8TYY%5%5%788DII D"Rx7GwgVVr!   c                   d| _         t        J t        j                  | j                  d       t	        j
                  t        j                  | j                        }t        j                  }| j                  rt        j                  | j                  |j                  |j                  z          ||j                  | j                          ||j                  | j                          ||j                  | j                           ||j                  | j"                          ||j$                  | j&                         ndt        j                  | j                  |j                          ||j                  | j                          ||j$                  | j(                         t        j+                          d| _        y)zStart this Tracer.FNzcoverage.pyT)r   rj   use_tool_idr   rt   partialregister_callbackeventsr   rk   PY_START	PY_UNWINDsysmon_py_start	PY_RESUMEsysmon_py_resume_arcs	PY_RETURNsysmon_py_return_arcssysmon_py_unwind_arcsLINEsysmon_line_arcssysmon_line_linesrestart_eventsr   )r   registerr   s      r   startzSysMonitor.start   s?    )))""499m<$$^%E%EtyyQ&&??%%		&"2"22 V__d&:&:;V%%t'A'ABV%%t'A'ABV%%t'A'ABV[[$"7"78%%diiAV__d&:&:;V[[$"8"89%%'r!   c                   | j                   syt        J t        j                  | j                  d       | j                  5  d| _         | j
                  j                         D ]#  }t        j                  | j                  |d       % i | _        ddd       t        j                  | j                         y# 1 sw Y   )xY w)zStop this Tracer.Nr   F)	r   rj   rk   r   r   r   r   set_local_eventsfree_tool_id)r   r   s     r   stopzSysMonitor.stop   s     ~~ )))!!$))Q/YY 	("DN..557 D//		4CD%'D"		(
 	##DII.	( 	(s   AB99Cc                $    | j                          y)z+The process has forked, clean up as needed.N)r   r   s    r   	post_forkzSysMonitor.post_fork  s     			r!   c                    | j                   S )zHas there been any activity?r   r   s    r   activityzSysMonitor.activity  s    ~~r!   c                    d| _         y)zReset the activity() flag.FNr   r   s    r   reset_activityzSysMonitor.reset_activity  s	    r!   c                     y)z+Return a dictionary of statistics, or None.Nr,   r   s    r   	get_statszSysMonitor.get_stats  s    r!   c                f    t        j                         j                  j                  j                  S z2Get the frame of the Python code we're monitoring.inspectcurrentframef_backr   s    r   callers_framezSysMonitor.callers_frame  s'     $$&--44;;r!   c                R    t        j                         j                  j                  S r   r   r   s    r   r   zSysMonitor.callers_frame"  s    '')00777r!   r   @c                l   d| _         | j                  dxx   dz  cc<   | j                  j                  t	        |            }d}d}||j
                  }|j                  }||j                  }| j                  j                  |      }|Qt        j                         j                  }t        r|j                  }| j                  ||      }|| j                  |<   |j                  }|rq|j                  }	|	J | j!                          	 |	| j"                  vrt%               | j"                  |	<   | j'                          | j"                  |	   }t)        |      }
nd}d}
t+        |||
      | j                  t	        |      <   | j,                  j/                  |       |rt0        j2                  j4                  }| j6                  5  | j8                  ret:        J t:        j=                  | j>                  ||j@                  |jB                  z  |jD                  z         || jF                  t	        |      <   ddd       |r7| jH                  r+| jK                         }|jL                   | jN                  |<   yt0        j2                  jP                  S # | j'                          w xY w# 1 sw Y   qxY w)z-Handle sys.monitoring.events.PY_START events.Tr      N)r   r   r   ))r   r   r   getrU   r   r   rW   should_trace_cacher   r   r   LOGshould_tracetracesource_filename	lock_datar   setunlock_datar   r~   r   rd   rl   r   r   r   r   rj   r   r   r   r   r   r   r   r   rX   r   DISABLE)r   r   instruction_offset	code_infotracing_coder   rM   dispframe	tracenamer   r   s               r   r   zSysMonitor.sysmon_py_start&  sj    

8!OO''41	$(+/	 $,,L!++I''H**..x8D|,,.55!LLE((5948''1::L 00	 ,,, ' 		1/2u		),$$& IIi0	$T* 	(0$# )DOOBtH%
 $$T*..YY @~~-999&77 II ",,$../ %kk	*
 <@..r$x8@  DOO&&(E&*&9&9%9DOOE">>)))K $$& @ @s   %J A2J*J'*J3c                V    | j                         }|j                  | j                  |<   y)zBHandle sys.monitoring.events.PY_RESUME events for branch coverage.N)r   f_linenor   )r   r   r   r   s       r   r   z SysMonitor.sysmon_py_resume_arcso  s$    
 ""$!&r!   Nc                x   | j                         }| j                  j                  t        |            }|h|j                  \| j
                  j                  |      }|?||j                   f}t        t        t           |j                        j                  |       | j
                  j                  |d       y)zBHandle sys.monitoring.events.PY_RETURN events for branch coverage.N)r   r   r   rU   r   r   rX   r
   r   r   rF   pop)r   r   r   retvalr   r   	last_linearcs           r   r   z SysMonitor.sysmon_py_return_arcsw  s    
 ""$OO''41	 Y%8%8%D++E2I$ 4#6#6"67SY	 3 3488= 	E4(r!   rq   c                j   | j                         }| j                  j                  |d      }t        |t              ry| j
                  j                  t        |            }|P|j                  C|@||j                   f}t        t        t           |j                        j                  |       yyyy)zBHandle sys.monitoring.events.PY_UNWIND events for branch coverage.N)r   r   r   rT   GeneratorExitr   r   rU   r   rX   r
   r   r   rF   )r   r   r   	exceptionr   r   r   r   s           r   r   z SysMonitor.sysmon_py_unwind_arcs  s    
 ""$OO''t4	i/OO''41	 Y%8%8%D$ 4#6#6"67SY	 3 3488= % &E r!   linec                    | j                   t        |         }|j                  0t        t        t
           |j                        j                  |       t        j                  j                  S )z;Handle sys.monitoring.events.LINE events for line coverage.)
r   rU   r   r
   r   r   rF   rl   r   r   )r   r   line_numberr   s       r   r   zSysMonitor.sysmon_line_lines  sQ     OOBtH-	*Wy22377D~~%%%r!   c                2   | j                   t        |         }d}|j                  p| j                         }| j                  j                  |      }|4||f}t        t        t           |j                        j                  |       || j                  |<   |S )z=Handle sys.monitoring.events.LINE events for branch coverage.N)
r   rU   r   r   r   r   r
   r   r   rF   )r   r   r   r   rp   r   r   r   s           r   r   zSysMonitor.sysmon_line_arcs  s     OOBtH-	*&&(E++E2I$ +.SY	 3 3488=%0DOOE"
r!   )r   rB   r+   r/   )r+   r.   )r+   r/   )r+   r   )r+   zdict[str, int] | None)r+   r   )r   r   r   rB   r+   MonitorReturn)r   r   r   rB   r   objectr+   r   )r   r   r   rB   r   BaseExceptionr+   r   )r   r   r   rB   r+   r   )r0   r1   r2   r3   r    r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r!   r   r   r      sr   R!FW
 \ 2 \/ / \ 
 		8 F* F*P 00250	0 0 T"))25)?E)	) #)  U#>>25>BO>	> $>$ &  &   r!   r   )rI   r.   r+   r/   )rZ   r   r+   r.   )rs   z
str | Noner+   r   )r   r   r+   zdict[int, int])1r3   
__future__r   rt   r   r@   os.pathrl   rC   rh   dataclassesr   typesr   r   typingr   r   r	   r
   coverage.debugr   r   coverage.typesr   r   r   r   r   r   r   r   r   r   r   r&   rj   r   r   r   r   r7   r   r%   r[   rx   r~   r   r   r,   r!   r   <module>r     s   I "   	  
   ! %  7    lD1%%% M   $N4DEN%%%#)##$K !UL("C*DP ( ( (B Br!   