L iMUdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZddlmZmZmZmZmZddlmZddlmZmZmZdd lmZmZdd lmZm Z dd l!m"Z"dd l#m$Z$dd l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/e"eZe0e1ejdddZ3e0e1ejdddZ4e5eddZ6ede7Z8ee8Z9ee9e5e6ddZ:e3rFGddZ;e;e6dZ6e6JejxedddZe=Z>de?d<d'dZ@d(dZAd)dZBnd'dZ@d)dZBe Gdd ZCd*d!ZDGd"d#e*ZEejd$%d+d&ZGy),zBCallback functions and support for sys.monitoring data collection.) annotationsN) dataclass)CodeType)AnyCallableNewTypeOptionalcast)env) TBranchTrails always_jumps branch_trails)short_filename short_stack)NoSource NotPython)isolate_module) PythonParser) AnyCallableTFileDispositionTLineNoTOffsetTracerTShouldStartContextFnTShouldTraceFn TTraceDataTTraceFileDataTWarnFnCOVERAGE_SYSMON_LOGCOVERAGE_SYSMON_STATS monitoring DISABLE_TYPEDISABLEc eZdZdZddZddZy)LoggingWrapperz*Wrap a namespace to log all its functions.c ||_||_yN)wrapped namespace)selfr(r)s U/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/coverage/sysmon.py__init__zLoggingWrapper.__init__Bs"DL&DNcdfd }|S)Ncxtjd||tj|i|S)N.)logr)getattrr()argskwargsnamer*s r+_wrappedz,LoggingWrapper.__getattr__.._wrappedGs@t~~&avdVF8<=2wt||T2DCFCCr-)r3rr4rreturnr)r*r5r6s`` r+ __getattr__zLoggingWrapper.__getattr__Fs DOr-N)r(rr)strr7None)r5r:r7zCallable[..., Any])__name__ __module__ __qualname____doc__r,r9r8r-r+r%r%?s8 ' r-r%zsys.monitoringT)fullshort_filenames frame_idszset[int] seen_threadsc tj}ttt j j }||zdzd}|tvr1tj|td|d|dtdD]0}t|dd 5} t|d |d ||d ddd2y#t$r"t|d |d t||d Y5wxYw#1swYkxYw)z1Write a message to our detailed debugging log(s).iw07dz New thread  z: )z /tmp/foo.outazutf-8)encoding:: T)fileflushN)osgetpidr int threadingcurrent_threadidentrCaddr1ropenprint UnicodeErrorascii)msgpidtidtslugfilenamefs r+r1r1Xs iik3 002889#I*3/ l "   S ! +cU!E7#km_= > NH hg6 N!NSE5'C51F N N N$NSE5'E#J<8qMN N Ns*C(B::(C%"C($C%%C((C1 ct|trGdt|dd|jdzdt |j d|j dzSt|S)z)Make a customized repr for logged values.z) isinstanceridco_namer co_filenameco_firstlinenorepr)args r+arg_reprrjpsl c8 $"S'"&3;;-q)*>#//:=Qs?Q?Q>RRSTU  Cyr-cdfd }|S)z%Decorate a function to log its calls.cHtjdfd }|S)Nc f g}t|D]'\}}| |j|dt|)tt |ddj ddj |d|g|}|S#t$r}td|jj d| td j tj| tJtjtjjd #t $rtd YwxYwd}~wwxYw) N=r_rI(z, )z!!rJrz/oops, shutting off events with disabled tool id)zipappendrjr1rdr<join Exception __class__ tracebackformat_exceptionsys_monitoring set_eventssysr! COVERAGE_ID ValueError) r*r3 args_reprsr5riretexcmethodnamess r+r6z0panopticon.._decorator.._wrapped~s3!#J%(%5E c<$"))TF!HSM?*CDE2d8B-q(9499Z;P:QQRST --CJ "S]]334Bse<=BGGI$>$>s$CDEO-999&11#..2L2LaP&OMNO s=A9A== D0AD+6DD+D(%D+'D((D++D0)r*rr3rr7r) functoolswraps)rr6rs` r+ _decoratorzpanopticon.._decorator}s% __V $ % 0Or-)rrr7rr8rrs` r+ panopticonrzs 8r-cy)zAWrite a message to our detailed debugging log(s), but not really.Nr8)rXs r+r1r1sr-cdd}|S)z5Decorate a function to log its calls, but not really.c|Sr'r8)meths r+rzpanopticon.._decoratorsKr-)rrr7rr8rs r+rrs r-cDeZdZUdZded<ded<ded<ded <d ed <y ) CodeInfoz/The information we want about each code object.booltracingzTTraceFileData | None file_datazdict[TOffset, TLineNo] | None byte_to_liner rzdict[TOffset, TOffset]r N)r<r=r>r?__annotations__r8r-r+rrs&9 M$$//! )(r-rcpi}|jD] \}}}| t||dD]}|||< "|S)z6Make a dict mapping byte code offsets to line numbers.)co_linesrange)codeb2lbstartbendlinenoboffsets r+bytes_to_linesrsQ C $ &f   q1 &%G  && Jr-cPeZdZdZddZddZeddZeddZeddZ ddZ ddZ dd Z ed d dd Z ed d d  ddZed dddZed dddZed d d  ddZy ) SysMonitorzHPython implementation of the raw data tracer for PEP669 implementations.cf|d|_||d|_d|_|||||_i|_g|_t jt|_ d|_ tj|_ d|_tr)t j#dj%d|_d|_y)NFzHstarts start_tracing returns line_lines line_arcs branches branch_trailsr) trace_arcsshould_start_contextswitch_contextmyid code_infos code_objects collections defaultdictsetfilename_code_ids sysmon_onrPLocklockstats COLLECT_STATSdictfromkeyssplit _activity)r*tool_ids r+r,zSysMonitor.__init__s   CG!CG    02-/7B6M6Mc6RNN$ ,0 Z``bDJ r-ctd|jjD}t|j}dt |dd|d|dS)Nc32K|]}t|ywr'len).0vs r+ z&SysMonitor.__repr__..s8SV8sz)sumdatavaluesrrd)r*pointsfiless r+__repr__zSysMonitor.__repr__sN8TYY%5%5%788DII D" Rx7GwgVVr-cZ|j5tJtj|jdt j tj |j}tjj}tj|j|j||j|j|jr||j|j||j |j"t$j&j(rX||j*|j,||j.|j,n||j |j0tj3d|_dddy#1swYyxYw)zStart this Tracer.Nz coverage.pyT)rry use_tool_idrrpartialregister_callbackr{r!eventsrzPY_STARTsysmon_py_startr PY_RETURNsysmon_py_returnLINEsysmon_line_arcsr PYBEHAVIORbranch_right_left BRANCH_RIGHTsysmon_branch_either BRANCH_LEFTsysmon_line_linesrestart_eventsr)r*registerrs r+startzSysMonitor.starts4YY "!- --  & &tyy- @ (()I)I499UH^^**F  % %dii A V__d&:&: ;))4+@+@Ad&;&;<>>33++11**11 d&<&<=  ) ) +!DN/ " " "s F F!!F*cP|j5|js dddytJtj|jdd|_tj |jdddt rt|jjdd}td|D}|t|z }|rFtd|d |d |D].\}}t|d kDstt|d d |0ytdyy#1swYxYw)zStop this Tracer.NrFct|dS)Nr)items r+z!SysMonitor.stop..$sT!Wr-T)keyreversec38K|]\}}t|ywr'r)r_code_idss r+rz"SysMonitor.stop..'sCkaCMCsz==== Duplicate code objects: z duplicates, z totalrz>5z objects: z!==== Duplicate code objects: none) rrryrzr free_tool_idLOGsortedritemsrrr1)r*r code_objsdupesr\rs r+stopzSysMonitor.stops YY 3>>  3 3 "- --  % %dii 3"DN  ' ' 2 3 &&,,.-E CUCCIE *E3E7- {RXYZ*/G&Hh8}q(s8}R0 8*EFG78  3 3sDADD%c$|jy)z+The process has forked, clean up as needed.N)rr*s r+ post_forkzSysMonitor.post_fork1s  r-c|jS)zHas there been any activity?rrs r+activityzSysMonitor.activity6s ~~r-cd|_y)zReset the activity() flag.FNrrs r+reset_activityzSysMonitor.reset_activity:s r-c|jS)z+Return a dictionary of statistics, or None.)rrs r+ get_statszSysMonitor.get_stats>s zzr-r@cd|_|j|jdxxdz cc<|jjt |}d}d}||j }|j }||j}|jj|}|gtj}|0tjj}tr |j}|j||}||j|<|j}|rq|j} | J|j! | |j"vrt%|j"| <|j'|j"| }t)|} nd}d} t+||| ii}||jt |<|j,j/||rK|j|jdxxdz cc<t0j2j4} |j65|j8rt:J| j<| j>z| j@z} |jBr8tDjFjHsJ| | jJ| jLzz} t:jO|jP|| trN|jdvr@|jR|jd|jTjWt |dddtXStXS#|j'wxYw#1swYtXSxYw) z-Handle sys.monitoring.events.PY_START events.TNstartsr)rrrrr start_tracing>rI)-rrrgetrdrrrfshould_trace_cacheinspect currentframef_backr should_tracetracesource_filename lock_datarr unlock_datarrrrsr{r!rrrryr PY_RESUMErrr rrrrset_local_eventsrrrerSr#) r*rinstruction_offset code_info tracing_coderr\dispframe tracenamerr local_eventss r+rzSysMonitor.sysmon_py_startBs :: ! JJx A % OO''41 $( +/  $,,L!++I  ''H**..x8D|,,.$#00299E % ((5948''1::L 00  ,,, '  1/2u ),$$& IIi0 $T*  $#   I)2DOOBtH %    $ $T *::)JJ/14/..YY"~~-999'-'7'7&:J:J'JV[['X ??#&>>#C#CC#C( & 3 3"("4"4!5L'77 4V#//|C $ 6 6$:J:J9K1T\\N7[ \ ` `$&tH!""$wO$$&*"$s/%LC4L/L,/L=Nc*|j|jdxxdz cc<|jjt|}|jj|}|*||j f}|j j|tS)zBHandle sys.monitoring.events.PY_RETURN events for branch coverage.returnsr) rrrrdrrgrrSr#)r*rrretvalr last_linearcs r+rzSysMonitor.sysmon_py_returns :: ! JJy !Q & !OO''41 **../AB  t2223C    # #C (r-linec|j|jdxxdz cc<|jjt|}|'|j|jj |t S)z;Handle sys.monitoring.events.LINE events for line coverage. line_linesr)rrrrdrrSr#)r*r line_numberrs r+rzSysMonitor.sysmon_line_linessf :: ! JJ| $ ) $OO''41   Y%8%8%D    # #K 0r-c|j|jdxxdz cc<|jt|}||f}|jj |t S)z=Handle sys.monitoring.events.LINE events for branch coverage. line_arcsr)rrrdrrSr#)r*rrrr s r+rzSysMonitor.sysmon_line_arcssY :: ! JJ{ #q ( #OOBtH- K($r-c|j|jdxxdz cc<|jt|}|jsZ|j|jdxxdz cc<t |j }t|||_t ||_d}|jj|}|h}|j j|x} 1| }|j||j j|x} 1|?|jD],\} } |  || zs|jj| d}n|sl|jJ|jj|} | A|jj|} | $| | k7r| | f} |jj| tS)z+Handle BRANCH_RIGHT and BRANCH_LEFT events.branchesrr) multiline_mapFT) rrrdrget_multiline_maprfr rrSrrrr#)r*rrdestination_offsetrr added_arc dest_infodestsdestr offsetsl1l2s r+rzSysMonitor.sysmon_branch_eithers :: ! JJz "a ' "OOBtH- &&zz% ?+q0+-d.>.>?M&3D &VI #%1$%7I " ++//0BC $$ --112DEEtR!%  II( )!--112DEEtR  ) 1  W;7?''++C0 $I ))5 55''++,>?B~++//0BC>bBhr(C''++C0r-)rrOr7r;)r7r:)r7r;)r7r)r7zdict[str, int] | None)rrrrr7 MonitorReturn)rrrrr objectr7r )rrrrr7r )rrrrrrr7r )r<r=r>r?r,rrrrrrrrrrrrrr8r-r+rrs6R$LW \""6\998\KKZT"$   #&      S!//29/OV/ /"/r-r)maxsizec t|}|j|jS#t$ricYSt$ricYSwxYw)z2Get a PythonParser for the given filename, cached.)r\)r parse_sourcerrr)r\parsers r+rrsP x0       s* A AA)rXr:r7r;)rirr7r:)rz str | Noner7r)rrr7zdict[TOffset, TLineNo])r\r:r7zdict[TLineNo, TLineNo])Hr? __future__rrrrrMos.pathr{rPrw dataclassesrtypesrtypingrrrr r coverager coverage.bytecoder r rcoverage.debugrrcoverage.exceptionsrr coverage.miscrcoverage.parserrcoverage.typesrrrrrrrrrrrrOgetenvrrr2ryr!r"r r#r%rrrCrr1rjrrrr lru_cacherr8r-r+r5sI"  !99HH63((    B  3yryy.2 34S#:A>?@ lD1~v. & }gniF G  $N4DEN  %% %#)##  K !UL("N0FP )) )(ggT Q   r-