
    V.jM                       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
Z
ddlmZ ddlmZ ddlmZ ddlmZmZmZmZ ddl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" ddl#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/m0Z0m1Z1  e$e      Z e2 e3 ejh                  dd                  Z5 e2 e3 ejh                  dd                  Z6 e7edd      Z8 ede9      Z:ee:   Z; ee; e7e8dd            Z<e5rF G d d      Z= e=e8d      Z8e8J  ej|                  eddd      Z e?       Z@deAd<   d'dZBd(dZCd)dZDnd'dZBd)dZDe G d  d!             ZE G d" d#e,      ZF ej                  d$%      d*d&       ZHy)+zBCallback functions and support for sys.monitoring data collection.    )annotationsN)Callable)	dataclass)CodeType)AnyNewTypeOptionalcast)env)TBranchTrailsalways_jumpsbranch_trailsbytes_to_lines)short_filenameshort_stack)NoSource	NotPython)isolate_module)PythonParser)
AnyCallableTFileDispositionTLineNoTOffsetTracerTShouldStartContextFnTShouldTraceFn
TTraceDataTTraceFileDataTWarnFnCOVERAGE_SYSMON_LOGCOVERAGE_SYSMON_STATS
monitoringDISABLE_TYPEDISABLEc                       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      QC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\coverage/sysmon.py__init__zLoggingWrapper.__init__C   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>._wrappedH   s@    t~~&avdVF8<=2wt||T2DCFCCr.   )r4   r   r5   r   returnr    )r+   r6   r7   s   `` r,   __getattr__zLoggingWrapper.__getattr__G   s    D Or.   N)r)   r   r*   strr8   None)r6   r;   r8   zCallable[..., Any])__name__
__module____qualname____doc__r-   r:   r9   r.   r,   r&   r&   @   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 ]0  }t        |dd	      5 }	 t        | d
| d|  |d       ddd       2 y# t        $ r" t        | d
| dt        |        |d       Y 5w xY w# 1 sw Y   kxY w)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identrD   addr2   r   openprintUnicodeErrorascii)msgpidtidtslugfilenamefs         r,   r2   r2   Y   s     iik3	002889#I*3/l"S!+cU!E7#km_=>
H hg6!NSE5'C51F 76
 $ NSE5'E#J<8qMN 76s*   C(B::(C%"C($C%%C((C1	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_reprrk   q   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           	     f   	 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=r`   rJ   (z, )z!!rK    r   z/oops, shutting off events with disabled tool id)zipappendrk   r2   re   r=   join	Exception	__class__	tracebackformat_exceptionsys_monitoring
set_eventssysr"   COVERAGE_ID
ValueError)	r+   r4   
args_reprsr6   rj   retexcmethodnamess	          r,   r7   z0panopticon.<locals>._decorator.<locals>._wrapped   s,   !#J%(%5	c<$"))TF!HSM?*CD &6 2d8B-q(9499Z;P:QQRST --CJ  
"S]]334Bse<=BGGI$>$>s$CDEO-999&11#..2L2LaP  & OMNO
s=   A9A= =	D0AD+6DD+D(%D+'D((D++D0)r+   r   r4   r   r8   r   )	functoolswraps)r   r7   r   s   ` r,   
_decoratorzpanopticon.<locals>._decorator~   s%    __V$ %0 Or.   )r   r   r8   r   r9   r   r   s   ` r,   
panopticonr   {   s    	8 r.   c                     y)zAWrite a message to our detailed debugging log(s), but not really.Nr9   )rY   s    r,   r2   r2      s    r.   c                     dd}|S )z5Decorate a function to log its calls, but not really.c                    | S r(   r9   )meths    r,   r   zpanopticon.<locals>._decorator   s    Kr.   )r   r   r8   r   r9   r   s     r,   r   r      s    	 r.   c                  D    e Zd ZU dZded<   ded<   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[TOffset, TLineNo] | Nonebyte_to_liner   r   zdict[TOffset, TOffset]r   N)r=   r>   r?   r@   __annotations__r9   r.   r,   r   r      s&    9M$$// !  )(r.   r   c                  P   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y)
SysMonitorzHPython implementation of the raw data tracer for PEP669 implementations.c                f   |  d| _         |  |  d | _        d | _        |  |  |  || _        i | _        g | _        t        j                  t              | _	        d| _
        t        j                         | _        d | _        t        r)t         j#                  dj%                         d      | _        d| _        y )NFzHstarts start_tracing returns line_lines line_arcs branches branch_trailsr   )
trace_arcsshould_start_contextswitch_contextmyid
code_infoscode_objectscollectionsdefaultdictsetfilename_code_ids	sysmon_onrQ   LocklockstatsCOLLECT_STATSdictfromkeyssplit	_activity)r+   tool_ids     r,   r-   zSysMonitor.__init__   s     CG!CG	 02 -/ 7B6M6Mc6RNN$	,0
Z``bDJ
 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%7SV%7s   z<SysMonitor at r`   rK   z data points in z files>)sumdatavaluesr   re   )r+   pointsfiless      r,   __repr__zSysMonitor.__repr__   sN    8TYY%5%5%788DII D"Rx7GwgVVr.   c                Z   | j                   5  t        J t        j                  | j                  d       t	        j
                  t        j                  | j                        }t        j                  j                  }t        j                  | j                  |j                          ||j                  | j                         | j                  r ||j                  | j                          ||j                   | j"                         t$        j&                  j(                  rX ||j*                  | j,                          ||j.                  | j,                         n ||j                   | j0                         t        j3                          d| _        ddd       y# 1 sw Y   yxY w)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    YY!---&&tyy-@ (()I)I499UH^^**F%%diiAV__d&:&:;))4+@+@Ad&;&;<>>33V00$2K2KLV//1J1JKd&<&<=))+!DN# YYs   FF!!F*c                P   | j                   5  | j                  s
	 ddd       yt        J t        j                  | j                  d       d| _        t        j                  | j                         ddd       t        rt        | j                  j                         d d      }t        d |D              }|t        |      z
  }|rFt        d| d	| d
       |D ].  \  }}t        |      dkD  st        t        |      dd|        0 yt        d       yy# 1 sw Y   xY w)zStop this Tracer.Nr   Fc                    t        | d         S )N   r   )items    r,   <lambda>z!SysMonitor.stop.<locals>.<lambda>  s    T!Wr.   T)keyreversec              3  8   K   | ]  \  }}t        |        y wr(   r   )r   _code_idss      r,   r   z"SysMonitor.stop.<locals>.<genexpr>  s     CUkaCMUs   z==== Duplicate code objects: z duplicates, z totalr   z>5z
 objects: z!==== Duplicate code objects: none)r   r   rz   r{   r   free_tool_idLOGsortedr   itemsr   r   r2   )r+   r   	code_objsdupesr]   r   s         r,   stopzSysMonitor.stop  s    YY>> 	 Y
 "---%%dii3"DN''		2  &&,,.-E
 CUCCIE
*E3E7-	{RXYZ*/&Hh8}q(s8}R0
8*EF +0 78  Ys   DADD%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                    | j                   S )z+Return a dictionary of statistics, or None.)r   r   s    r,   	get_statszSysMonitor.get_stats/  s    zzr.   code@c                   d| _         | j                  | j                  dxx   dz  cc<   |j                  dk(  rt        S | j                  j                  t        |            }d}d}||j                  }|j                  }||j                  }| j                  j                  |      }|gt        j                         }|0t        j                         j                  }t        r|j                  }| j                  ||      }|| j                  |<   |j                   }|rq|j"                  }	|	J | j%                          	 |	| j&                  vrt)               | j&                  |	<   | j+                          | j&                  |	   }t-        |      }
nd}d}
t/        |||
i i       }|| j                  t        |      <   | j0                  j3                  |       |rK| j                  | j                  dxx   dz  cc<   t4        j6                  j8                  }| j:                  5  | j<                  rt>        J |j@                  |jB                  z  |jD                  z  }| jF                  r8tH        jJ                  jL                  sJ ||jN                  |jP                  z  z  }t>        jS                  | jT                  ||       t        rN|j                  dvr@| jV                  |j                   d	|j                      jY                  t        |             ddd       t        S t        S # | j+                          w xY w# 1 sw Y   t        S xY w)
z-Handle sys.monitoring.events.PY_START events.TNstartsr   __annotate__)r   r   r   r   r   start_tracing>   <string>rJ   )-r   r   rf   r$   r   getre   r   r   rg   should_trace_cacheinspectcurrentframef_backr   should_tracetracesource_filename	lock_datar   r   unlock_datar   r   r   rt   r|   r"   r   r   r   rz   r   	PY_RESUMEr   r   r   r   r   r   r   set_local_eventsr   r   rT   )r+   r   instruction_offset	code_infotracing_coder   r]   dispframe	tracenameb2lr   local_eventss                r,   r   zSysMonitor.sysmon_py_start3  s    ::!JJx A% <<>)N OO''41	$(+/	 $,,L!++I''H**..x8D|,,.$#00299E %((5948''1::L 00	 ,,, ' 		1/2u		),$$& IIi0	$T* 	 $#  I )2DOOBtH%$$T*::)JJ/14/..YY~~-999'-'7'7&:J:J'JV[['X??#&>>#C#CC#C(F,?,?&BTBT,TTL&77		4V#//|C $ 6 6$:J:J9K1T\\N7[ \ ` `$&tH!"  wI $$&*  s   %L/ 'C4M/MMNc                *   | j                   | j                   dxx   dz  cc<   | j                  j                  t        |            }|j                  j                  |      }|*||j
                   f}|j                  j                  |       t        S )zBHandle sys.monitoring.events.PY_RETURN events for branch coverage.returnsr   )	r   r   r   re   r   rh   r   rT   r$   )r+   r   r   retvalr   	last_linearcs          r,   r   zSysMonitor.sysmon_py_return  s     ::!JJy!Q&!OO''41	 **../AB	 t2223C##C(r.   linec                    | j                   | j                   dxx   dz  cc<   | j                  j                  t        |            }|'|j                  |j                  j                  |       t        S )z;Handle sys.monitoring.events.LINE events for line coverage.
line_linesr   )r   r   r   re   r   rT   r$   )r+   r   line_numberr   s       r,   r   zSysMonitor.sysmon_line_lines  sf     ::!JJ|$)$OO''41	  Y%8%8%D##K0r.   c                    | j                   | j                   dxx   dz  cc<   | j                  t        |         }||f}|j                  j	                  |       t
        S )z=Handle sys.monitoring.events.LINE events for branch coverage.	line_arcsr   )r   r   re   r   rT   r$   )r+   r   r
  r   r  s        r,   r   zSysMonitor.sysmon_line_arcs  sY     ::!JJ{#q(#OOBtH-	 K($r.   c                   | j                   | j                   dxx   dz  cc<   | j                  t        |         }|j                  sZ| j                   | j                   dxx   dz  cc<   t	        |j
                        }t        ||      |_        t        |      |_        d}|j                  j                  |      }|h}|j                  j                  |      x}	1|	}|j                  |       |j                  j                  |      x}	1|?|j                         D ],  \  }
}|
	||z  s|j                  j                  |
       d} n |sl|j                  J |j                  j                  |      }|A|j                  j                  |      }|$||k7  r||f}
|j                  j                  |
       t        S )z+Handle BRANCH_RIGHT and BRANCH_LEFT events.branchesr   r   )multiline_mapFT)r   r   re   r   get_multiline_maprg   r   r   rT   r   r   r   r$   )r+   r   r   destination_offsetr   r  	added_arc	dest_infodestsdestr  offsetsl1l2s                 r,   r   zSysMonitor.sysmon_branch_either  s   
 ::!JJz"a'"OOBtH-	 &&zz%

?+q0+-d.>.>?M&3D&VI#%1$%7I"	++//0BC	 $$ --112DEEtR!%II() !--112DEEtR
   ) 1W;7?''++C0 $I !2 ))555''++,>?B~++//0BC>bBhr(C''++C0 r.   )r   rP   r8   r<   )r8   r;   )r8   r<   )r8   r   )r8   zdict[str, int] | None)r   r   r   r   r8   MonitorReturn)r   r   r   r   r  objectr8   r  )r   r   r
  r   r8   r  )r   r   r   r   r  r   r8   r  )r=   r>   r?   r@   r-   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r.   r,   r   r      s6   R$LW
 \" "* \9 98 \  L L\ T" $ 	
 
 #&    
  
 S!//29/OV/	/ "/r.   r      )maxsizec                    	 t        |       }|j                          |j                  S # t        $ r i cY S t        $ r i cY S w xY w)z2Get a PythonParser for the given filename, cached.)r]   )r   parse_sourcer   r   r  )r]   parsers     r,   r  r    sP    x0   
 	 	s   * A
AA)rY   r;   r8   r<   )rj   r   r8   r;   )r   z
str | Noner8   r   )r]   r;   r8   zdict[TLineNo, TLineNo])Ir@   
__future__r   r   r   r   rN   os.pathr|   rQ   rx   collections.abcr   dataclassesr   typesr   typingr   r   r	   r
   coverager   coverage.bytecoder   r   r   r   coverage.debugr   r   coverage.exceptionsr   r   coverage.miscr   coverage.parserr   coverage.typesr   r   r   r   r   r   r   r   r   r   r   rP   getenvr   r   r3   rz   r  r#   r  r$   r&   r   r   rD   r   r2   rk   r   r   r   	lru_cacher  r9   r.   r,   <module>r/     s   I "    	  
   $ !  / /  X X 6 3 ( (    B
 3yryy.234 S#:A>?@ lD1~v.&
}gniF
G   $N4DEN%%%#)##	K !UL("N0FP ) ) )(b bJ	 R   ! r.   