o ?OgF@sddlmZmZddlmZddlZddlZddlZddl Z ddl Tddl m Z m Z ddZ Gdd d ZGd d d Zd d ZeGdddZeGdddeZddZGdddZGdddeZddZGdddZGdddeZGdddeZGd d!d!Zd"d#ZdS)$)SequenceIterable)total_orderingN)*)_get_object_traceback _get_tracescCsdD]>}t|dkr |dkr |rd||fSd||fSt|dks*|dkr<|r4d||fSd ||fS|d }qdS) N)BZKiBZMiBZGiBTiBdrz%+.1f %sz%.1f %si(r z%+.0f %sz%.0f %si)abs)sizeZsignZunitr 2/opt/alt/python310/lib64/python3.10/tracemalloc.py _format_size s rc@BeZdZ dZddZddZddZdd Zd d Zd d Z dS) Statistic tracebackr countcCs||_||_||_dSNr)selfrr rr r r__init__%s zStatistic.__init__cCst|j|j|jfSr)hashrr rrr r r__hash__*zStatistic.__hash__cCs2t|tstS|j|jko|j|jko|j|jkSr) isinstancerNotImplementedrr rrotherr r r__eq__-s    zStatistic.__eq__cCsBd|jt|jd|jf}|jr|j|j}|dt|d7}|S)Nz%s: size=%s, count=%iF , average=%s)rrr rrtextZaverager r r__str__4s  zStatistic.__str__cCsd|j|j|jfS)Nz)rrr r r__repr__>szStatistic.__repr__cCs|j|j|jfSr)r rrrr r r _sort_keyBzStatistic._sort_keyN __name__ __module__ __qualname__ __slots__rrr r$r%r&r r r rrs rc@r) StatisticDiffrr size_diffr count_diffcCs"||_||_||_||_||_dSrr.)rrr r/rr0r r rrMs  zStatisticDiff.__init__cCst|j|j|j|j|jfSr)rrr r/rr0rr r rrTszStatisticDiff.__hash__cCsJt|tstS|j|jko$|j|jko$|j|jko$|j|jko$|j|jkSr)rr-rrr r/rr0rr r rr Xs      zStatisticDiff.__eq__cCsPd|jt|jdt|jd|j|jf}|jr&|j|j}|dt|d7}|S)Nz %s: size=%s (%s), count=%i (%+i)FTr!)rrr r/rr0r"r r rr$as   zStatisticDiff.__str__cCsd|j|j|j|j|jfS)Nz9r.rr r rr%ms  zStatisticDiff.__repr__cCs t|j|jt|j|j|jfSr)r r/r r0rrrr r rr&rs  zStatisticDiff._sort_keyNr(r r r rr-Fs  r-cCsg}|D]2\}}||d}|dur't||j|j|j|j|j|j}n t||j|j|j|j}||q|D]\}}t|d|j d|j }||q=|SNr)itemspopr-r rappend) old_group new_group statisticsrstatZpreviousr r r_compare_grouped_statsxs"   r9c@sZeZdZ dZddZeddZeddZdd Zd d Z d d Z ddZ ddZ dS)Frame_framecC ||_dSrr;rframer r rr zFrame.__init__cC |jdSr1r;rr r rfilenamer@zFrame.filenamecCrANr;rr r rlinenor@z Frame.linenocCt|tstS|j|jkSrrr:rr<rr r rr   z Frame.__eq__cCt|tstS|j|jkSrrGrr r r__lt__rHz Frame.__lt__cC t|jSr)rr<rr r rr zFrame.__hash__cCd|j|jfS)Nz%s:%srBrErr r rr$r'z Frame.__str__cCrM)NzrNrr r rr%r'zFrame.__repr__N) r)r*r+r,rpropertyrBrEr rJrr$r%r r r rr:s   r:c@sreZdZ dZdddZeddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZdddZdS) Traceback)_frames _total_nframeNcCs"t|tt||_||_dSr)rrtuplereversedrQrR)rframes total_nframer r rrs  zTraceback.__init__cC|jSr)rRrr r rrVzTraceback.total_nframecCrKr)lenrQrr r r__len__rLzTraceback.__len__cC0t|trtdd|j|DSt|j|S)Ncs|]}t|VqdSr)r:.0tracer r r z(Traceback.__getitem__..)rslicerSrQr:rindexr r r __getitem__ zTraceback.__getitem__cC |j|jvSr)r<rQr>r r r __contains__ zTraceback.__contains__cCrKr)rrQrr r rrrLzTraceback.__hash__cCrFrrrPrrQrr r rr rHzTraceback.__eq__cCrIrrjrr r rrJrHzTraceback.__lt__cCs t|dSr1)strrr r rr$rizTraceback.__str__cCs:dt|}|jdur|d7}|S|d|jd7}|S)Nz z total_nframe=)rSrRrV)rsr r rr%s  zTraceback.__repr__FcCsg}|dur|dkr|| d}n |d|}n|}|r!t|}|D] }|d|j|jft|j|j}|rC|d|q#|S)Nrz File "%s", line %sz %s)rTr4rBrE linecachegetlinestrip)rlimitZmost_recent_firstlinesZ frame_slicer?liner r rformats" zTraceback.formatr)NF)r)r*r+r,rrOrVrZrerhrr rJr$r%rtr r r rrPs  rPcCs t|}|dur t|SdSr)rrP)objrUr r rget_object_tracebacks rvc@s^eZdZ dZddZeddZeddZedd Zd d Z d d Z ddZ ddZ dS)Trace_tracecCr=rrxrr_r r rrs zTrace.__init__cCrAr1rxrr r rdomainr@z Trace.domaincCrArCrxrr r rr r@z Trace.sizecCst|jddS)N)rPryrr r rr#szTrace.tracebackcCrFr)rrwrryrr r rr 'rHz Trace.__eq__cCrKr)rryrr r rr,rLzTrace.__hash__cCsd|jt|jdfS)Nz%s: %sF)rrr rr r rr$/sz Trace.__str__cCsd|jt|jd|jfS)Nz'F)r{rr rrr r rr%2szTrace.__repr__N) r)r*r+r,rrOr{r rr rr$r%r r r rrws    rwc@s<eZdZddZddZddZddZd d Zd d Zd S)_TracescCst|||_dSr)rr_traces)rtracesr r rr8s  z_Traces.__init__cCrKr)rYr~rr r rrZ=rLz_Traces.__len__cCr[)Ncsr\r)rwr]r r rr`Braz&_Traces.__getitem__..)rrbrSr~rwrcr r rre@rfz_Traces.__getitem__cCrgr)ryr~rzr r rrhFriz_Traces.__contains__cCrFr)rr}rr~rr r rr IrHz_Traces.__eq__cCs dt|S)Nz)rYrr r rr%Nriz_Traces.__repr__N) r)r*r+rrZrerhr r%r r r rr}7s r}cCs&tj|}|dr|dd}|S)Nz.pyc)ospathnormcaseendswith)rBr r r_normalize_filenameRs   rc@seZdZddZddZdS) BaseFiltercCr=r) inclusive)rrr r rrZrLzBaseFilter.__init__cCstr)NotImplementedErrorrzr r r_match]szBaseFilter._matchN)r)r*r+rrr r r rrYs rcsLeZdZ dfdd ZeddZddZd d Zd d Zd dZ Z S)FilterNFcs2t|||_t||_||_||_||_dSr)superrrr_filename_patternrE all_framesr{)rrfilename_patternrErr{ __class__r rrbs   zFilter.__init__cCrWr)rrr r rrkrXzFilter.filename_patterncCs2t|}t||js dS|jdurdS||jkS)NFT)rfnmatchrrErrBrEr r r_match_frame_implos   zFilter._match_frame_implcCs||||j ASr)rrrr r r _match_framexrzFilter._match_framecsBjrtfdd|DrjSj S|d\}}||S)Nc3s |] \}}||VqdSr)r)r^rBrErr rr`}sz*Filter._match_traceback..r)ranyrr)rrrBrEr rr_match_traceback{s   zFilter._match_tracebackcCsF|\}}}}||}|jdur!|jr|o||jkS|p ||jkS|Sr)rr{r)rr_r{r rrVresr r rrs   z Filter._match)NFN) r)r*r+rrOrrrrr __classcell__r r rrras   rcs0eZdZfddZeddZddZZS) DomainFiltercst|||_dSr)rr_domain)rrr{rr rrs  zDomainFilter.__init__cCrWr)rrr r rr{rXzDomainFilter.domaincCs|\}}}}||jk|j ASr)r{r)rr_r{r rrVr r rrs zDomainFilter._match)r)r*r+rrOr{rrr r rrrs   rc@sVeZdZ ddZddZeddZddZd d Zd d Z dddZ dddZ dS)SnapshotcCst||_||_dSr)r}rtraceback_limit)rrrr r rrs  zSnapshot.__init__cCsB t|d}t||tjWddS1swYdS)Nwb)openpickledumpZHIGHEST_PROTOCOL)rrBfpr r rrs "z Snapshot.dumpcCs: t|d }t|WdS1swYdS)Nrb)rrload)rBrr r rrs $z Snapshot.loadcs@|rtfdd|DsdS|rtfdd|DrdSdS)Nc3s|]}|VqdSrrr^ trace_filterr_r rr`sz)Snapshot._filter_trace..Fc3s|] }| VqdSrrrrr rr`sT)r)rinclude_filtersexclude_filtersr_r rr _filter_traces  zSnapshot._filter_tracecs t|tstdt|j|r6gg|D]}|jr"|q|qfddjjD}njj }t |j S)Nz)filters must be a list of filters, not %scsg|] }|r|qSr )rr]rrrr r s  z*Snapshot.filter_traces..) rr TypeErrortyper)rr4rr~copyrr)rfiltersrZ new_tracesr rr filter_tracess     zSnapshot.filter_tracesc Cs|dvr td|f|r|dvrtd|i}i}|s|jjD]`}|\}}}} z||} Wn,ty[|dkr=|} n|dkrH|dd} n |dddff} t| } | ||<Ynwz|| } | j|7_| jd7_Wq!tyt| |d|| <Yq!w|S|jjD]Y}|\}}}} |D]N} z|| } Wn ty|dkr| f} n| ddff} t| } | || <Ynwz|| } | j|7_| jd7_Wqtyt| |d|| <Yqwq|S) N)rrBrEzunknown key_type: %r)rErBz/cumulative mode cannot by used with key type %rrrErDr) ValueErrorrr~KeyErrorrPr rr)rkey_type cumulativeZstatsZ tracebacksr_r{r Ztrace_tracebackrVrrUr8r?r r r _group_bysf             zSnapshot._group_byFcCs. |||}t|}|jdtjd|SNT)reversekey)rlistvaluessortrr&)rrrZgroupedr7r r rr7s   zSnapshot.statisticscCs8 |||}|||}t||}|jdtjd|Sr)rr9rr-r&)rZ old_snapshotrrr6r5r7r r r compare_tos    zSnapshot.compare_toN)F) r)r*r+rr staticmethodrrrrr7rr r r rrs   3 rcCs& tstdt}t}t||S)NzLthe tracemalloc module must be tracing memory allocations to take a snapshot) is_tracing RuntimeErrorrZget_traceback_limitr)rrr r r take_snapshot's  r)Zcollections.abcrr functoolsrrrnZos.pathrrZ _tracemallocrrrrr-r9r:rPrvrwr}rrrrrrr r r rs4 (2&M'0