
    V.jg=                       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@                  jC                  d	      Z"ej@                  d
   Z#e"/ej@                  d   Z$ej@                  d   Z%ejL                  rdndZ'ndxZ$xZ%Z'e(jS                  d      Z* G d de      Z+y)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y)PyTracerz-Python implementation of the raw data tracer.c                n   t        | j                        | _        |  d| _        |  |  d | _        d | _        |  |  |  d | _        d | _        d| _        d | _	        d | _
        d| _        g | _        d | _        d| _        d| _        d| _        t#        j$                  t&        | dd       | j(                  | _        y )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    SC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\coverage/pytracer.py__init__zPyTracer.__init__M   s    t' 	BF!CG -148"#)-#'$ Z\/3{D9 59KK'    c                    t        d | j                  j                         D              }t        | j                        }dt	        |       dd| d| dS )Nc              3  2   K   | ]  }t        |        y wN)len).0vs     r6   	<genexpr>z$PyTracer.__repr__.<locals>.<genexpr>{   s     8%7SV%7s   z<PyTracer at z#xz: z data points in z files>)sumdatavaluesr<   r!   )r5   pointsfiless      r6   __repr__zPyTracer.__repr__z   sN    8TYY%5%5%788DIIr$xm2fX5EeWGTTr8   c                X   t        ddd      5 }|j                  | d| j                   dt        | j                         d       	 |j                  dj                  dj                  t        t        |                         	 |j                  d	       d
d
d
       y
# 1 sw Y   y
xY w)z3For hard-core logging of what this tracer is doing.z/tmp/debug_trace.txtazutf-8)encoding []z {}
N)openwriter!   r<   r+   formatr,   identr%   current_threadjoinmapstr)r5   markerargsfstacks        r6   logzPyTracer.log   s    (#@AGGvhay#doo*>)?qAB GGELL#c4.!9:; GGDM! A@@s   BB  B)Nc                
   t         |j                  j                  v ry| j                  rlt	        j
                         | j                  k(  rK	 t	        j                  d       	 | j                  j                         \  | _        | _        | _        | _        y|dk(  r<| j(                  rU| j*                  I| j)                  |      }|3|| _        d}| j,                  J | j-                  | j*                         nd}nd}|| _        d| _        | j                  j1                  | j                  | j                   | j"                  |f       |j                  j                  }|| j                   k7  s|r|| _        | j2                  j5                  |      }	|	!| j7                  ||      }	|	| j2                  |<   d| _        |	j8                  rk|	j:                  }
|
J | j=                          	 |
| j>                  vrtA               | j>                  |
<   | jC                          | j>                  |
   | _        nd|_"        n| j                  sd|_"        tF        ,|j                  jH                  |jJ                  dz      }|dk(  }ntM        |dd	      dk  }|r(|j                  jN                   | _        | j                  S |j                  | _        | j                  S |d
k(  r| j                  ~|j                  }| jP                  r6tS        tT        | j                        jW                  | j"                  |f       n)tS        tX        | j                        jW                  |       || _        | j                  S |dk(  r| jP                  r| j                  r|j                  jH                  }|jJ                  }tF        @t[        |      |dz   k(  rd}nzt\        j^                  j`                  r|dz  }||   tF        k7  }nN||   tb        k(  rd}n?||   td        k(  rd}n0t[        |      |tf        z   k  rd}n||tf        z      th        k(  rd}nd}|rL|j                  jN                  }tS        tT        | j                        jW                  | j"                  | f       | j                  j                         \  | _        | _        | _        | _        | j$                  r&| j,                  J d| _        | j-                  d       | j                  S # t&        $ rI | j                  d|j                  j                  |j                  |j                  j                         Y yw xY w# | jC                          w xY w)z*The trace function passed to sys.settrace.Nr   zEmpty stack!callTF   f_lastir   linereturnr   )5	THIS_FILEf_codeco_filenamer-   sysgettracer3   rY   f_linenoco_namef_tracef_backsettracer+   popr&   r(   r'   r*   
IndexErrorr#   r)   r$   r.   appendshould_trace_cachegetshould_tracetracesource_filename	lock_datarA   setunlock_dataf_trace_linesr   co_coder]   getattrco_firstlinenor"   r   set_TArcaddset_TLineNor<   r	   
PYBEHAVIORlasti_is_yieldr   r   YIELD_FROM_OFFSETr   )r5   frameeventarglinenorW   context_mayber*   filenamedisp	tracenameoparg	real_callflinenocodelastireal_returnfirsts                     r6   r2   zPyTracer._trace   s    000
 <<CLLNd.M.MM  LL
OO'') ]"D$6H\ 
 F?((T\\-A $ 9 9% @ ,#0DL&*O..:::''5&+O"'#2D  "DNOO""&&&&NN#	 ||//H4---%-"..228<<,,Xu=D8<D++H5%)":: $ 4 4I$000NN$+$DII5365DIIi0((*)-9)=D&*/E'''&+# ! ,,U]]Q->?"aZ	$UIr:Q>	"',,"="=!=n ...k "'j ...g f_!!-#(>>??4#5#56::DNNG;TUd&8&89==gF!(T ...Q h4#5#5 ||++%4yEAI-&* >>88!QJE&*5kV&;E{l2&*e3&+Te.?&??&*e&778JF&+&*!LL77E4#5#56::DNNUF;ST ##% YD 2DNDDX ##**666###D)...O  "LL,,NNLL((	 z ((*s   "3T *%U AUUU/c                    d| _         | j                  r+| j                  | j                  j                         | _        t	        j
                  | j                         | j                  S )zdStart this Tracer.

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

        F)r-   r%   r,   rQ   rc   ri   r3   r4   s    r6   startzPyTracer.start9  sN     >>{{""nn;;=T445...r8   c                   t        j                         }d| _        | j                  rJ| j                  J | j                  j
                  | j                  j                         j
                  k7  ryt        j                  xr | j                  xr |du xs t        j                  }| j                  r9|s6|| j                  k7  r&| j                  d|d| j                  z   d       yyyy)zStop this Tracer.TNz.Trace function changed, data is likely wrong: z != ztrace-changed)slug)rc   rd   r-   r%   r,   rP   rQ   r	   PYPYr   METACOVwarnr3   )r5   tfsuppress_warnings      r6   stopzPyTracer.stopG  s     \\^
 >>;;***{{  DNN$A$A$C$I$II
   HHFFB$JV3;;99-T444		Dd4#B#B"EFG(   5 .9r8   c                    | j                   S )zHas there been any activity?r.   r4   s    r6   activityzPyTracer.activityh  s    ~~r8   c                    d| _         y)zReset the activity() flag.FNr   r4   s    r6   reset_activityzPyTracer.reset_activityl  s	    r8   c                     y)z+Return a dictionary of statistics, or None.N r4   s    r6   	get_statszPyTracer.get_statsp  s    r8   )r_   None)r_   rT   )rU   rT   rV   r   r_   r   r;   )
r   r   r   rT   r   r   r   zTLineNo | Noner_   zTTraceFn | None)r_   r   )r_   bool)r_   zdict[str, int] | None)__name__
__module____qualname____doc__	itertoolscountr    r7   rE   rY   r2   r   r   r   r   r   r   r8   r6   r   r   8   s    7$ !"J+@ZU
2 "&d/d/ d/ 	d/
 d/ 
d/L/Br8   r   ),r   
__future__r   r/   disr   rc   r%   collections.abcr   typesr   r   typingr   r   coverager	   coverage.typesr
   r   r   r   r   r   r   r   r   r   rs   r{   ry   opmaprn   r   r   r   r   r   r~   __file__rstripr`   r   r   r8   r6   <module>r      s    * "  
  
  $ '    " 'lt9
 
x	 yy(	>))M*K<(J XX1355K5*0
 OOD!	zv zr8   