grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jFã@sddlmZmZddlmZddlZddlZddlZddl Z ddl Tddl m Z m Z dd„Z Gdd „d ƒZGd d „d ƒZd d „ZeGdd„dƒƒZeGdd„deƒƒZdd„ZGdd„dƒZGdd„deƒZdd„ZGdd„dƒZGdd„deƒZGdd„deƒZGd d!„d!ƒZd"d#„ZdS)$é)ÚSequenceÚIterable)Útotal_orderingN)Ú*)Ú_get_object_tracebackÚ _get_tracescCs†dD]>}t|ƒdkr |dkr |rd||fSd||fSt|ƒdks*|dkr<|r4d||fSd ||fS|d }qdS) N)ÚBZKiBZMiBZGiBÚTiBédrz%+.1f %sz%.1f %si(r z%+.0f %sz%.0f %si)Úabs)ÚsizeZsignZunit©r ú2/opt/alt/python310/lib64/python3.10/tracemalloc.pyÚ _format_size s órc@óBeZdZ dZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS)Ú Statistic©Ú tracebackr ÚcountcCs||_||_||_dS©Nr)Úselfrr rr r rÚ__init__%s zStatistic.__init__cCst|j|j|jfƒSr)Úhashrr r©rr r rÚ__hash__*ózStatistic.__hash__cCs2t|tƒstS|j|jko|j|jko|j|jkSr)Ú isinstancerÚNotImplementedrr r©rÚotherr r rÚ__eq__-s   ÿ þzStatistic.__eq__cCsBd|jt|jdƒ|jf}|jr|j|j}|dt|dƒ7}|S)Nz%s: size=%s, count=%iFú , average=%s)rrr r©rÚtextZaverager r rÚ__str__4s þÿ zStatistic.__str__cCsd|j|j|jfS)Nz)rrr r rÚ__repr__>sÿzStatistic.__repr__cCs|j|j|jfSr)r rrrr r rÚ _sort_keyBózStatistic._sort_keyN© Ú__name__Ú __module__Ú __qualname__Ú __slots__rrr r$r%r&r r r rrs rc@r)Ú StatisticDiff©rr Ú size_diffrÚ count_diffcCs"||_||_||_||_||_dSrr.)rrr r/rr0r r rrMs  zStatisticDiff.__init__cCst|j|j|j|j|jfƒSr)rrr r/rr0rr r rrTsÿzStatisticDiff.__hash__cCsJt|tƒstS|j|jko$|j|jko$|j|jko$|j|jko$|j|jkSr)rr-rrr r/rr0rr r rr Xs   ÿ þ ý üzStatisticDiff.__eq__cCsPd|jt|jdƒt|jdƒ|j|jf}|jr&|j|j}|dt|dƒ7}|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-cCsªg}| ¡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=|S©Nr)ÚitemsÚpopr-r rÚappend)Ú old_groupÚ new_groupÚ statisticsrÚstatZpreviousr r rÚ_compare_grouped_statsxs" þþ  r9c@sZeZdZ dZdd„Zedd„ƒZedd„ƒZdd „Zd d „Z d d „Z dd„Z dd„Z dS)ÚFrame©Ú_framecCó ||_dSrr;©rÚframer r rr“ó zFrame.__init__cCó |jdSr1r;rr r rÚfilename—r@zFrame.filenamecCrA©Nér;rr r rÚlineno›r@z Frame.linenocCót|tƒstS|j|jkSr©rr:rr<rr r rr Ÿó  z Frame.__eq__cCót|tƒstS|j|jkSrrGrr r rÚ__lt__¤rHz Frame.__lt__cCó t|jƒSr)rr<rr r rr©ó zFrame.__hash__cCód|j|jfS)Nz%s:%s©rBrErr r rr$¬r'z Frame.__str__cCrM)NzrNrr r rr%¯r'zFrame.__repr__N) r)r*r+r,rÚpropertyrBrEr rJrr$r%r r r rr:Œs   r:c@sreZdZ dZddd„Zedd„ƒZdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zddd„ZdS)Ú Traceback)Ú_framesÚ _total_nframeNcCs"t |¡tt|ƒƒ|_||_dSr)rrÚtupleÚreversedrQrR)rÚframesÚ total_nframer r rr»s  zTraceback.__init__cCó|jSr)rRrr r rrVÄózTraceback.total_nframecCrKr)ÚlenrQrr r rÚ__len__ÈrLzTraceback.__len__cCó0t|tƒrtdd„|j|DƒƒSt|j|ƒS)Ncsó�|]}t|ƒVqdSr)r:©Ú.0Útracer r rÚ Íó€z(Traceback.__getitem__..)rÚslicerSrQr:©rÚindexr r rÚ __getitem__Ëó zTraceback.__getitem__cCó |j|jvSr)r<rQr>r r rÚ __contains__Ñó zTraceback.__contains__cCrKr)rrQrr r rrÔrLzTraceback.__hash__cCrFr©rrPrrQrr r rr ×rHzTraceback.__eq__cCrIrrjrr r rrJÜrHzTraceback.__lt__cCs t|dƒSr1)Ústrrr r rr$árizTraceback.__str__cCs:dt|ƒ›�}|jdur|d7}|S|d|j›d�7}|S)Nz z total_nframe=)rSrRrV)rÚsr r rr%äs  ÿzTraceback.__repr__FcCsŒg}|dur|dkr|| d…}n |d|…}n|}|r!t|ƒ}|D] }| d|j|jf¡t |j|j¡ ¡}|rC| d|¡q#|S)Nrz File "%s", line %sz %s)rTr4rBrEÚ linecacheÚgetlineÚstrip)rÚlimitZmost_recent_firstÚlinesZ frame_slicer?Úliner r rÚformatìs" ÿ€zTraceback.formatr)NF)r)r*r+r,rrOrVrZrerhrr rJr$r%rtr r r rrP³s  rPcCs t|ƒ}|dur t|ƒSdSr)rrP)ÚobjrUr r rÚget_object_tracebacks rvc@s^eZdZ dZdd„Zedd„ƒZedd„ƒZedd „ƒZd d „Z d d „Z dd„Z dd„Z dS)ÚTrace©Ú_tracecCr=rrx©rr_r r rrs zTrace.__init__cCrAr1rxrr r rÚdomainr@z Trace.domaincCrArCrxrr r rr r@z Trace.sizecCst|jdd…ŽS)Né)rPryrr r rr#szTrace.tracebackcCrFr)rrwrryrr r rr 'rHz Trace.__eq__cCrKr)rryrr r rr,rLzTrace.__hash__cCsd|jt|jdƒfS)Nz%s: %sF)rrr rr r rr$/sz Trace.__str__cCsd|jt|jdƒ|jfS)Nz'F)r{rr rrr r rr%2sÿzTrace.__repr__N) r)r*r+r,rrOr{r rr rr$r%r r r rrws    rwc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú_TracescCst |¡||_dSr)rrÚ_traces)rÚtracesr 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 |¡}| d¡r|dd…}|S)Nz.pycéÿÿÿÿ)ÚosÚpathÚnormcaseÚendswith)rBr r rÚ_normalize_filenameRs   r…c@seZdZdd„Zdd„ZdS)Ú BaseFiltercCr=r)Ú inclusive)rr‡r r rrZrLzBaseFilter.__init__cCst‚r)ÚNotImplementedErrorrzr r rÚ_match]szBaseFilter._matchN)r)r*r+rr‰r r r rr†Ys r†csLeZdZ d‡fdd„ Zedd„ƒZdd„Zd d „Zd d „Zd d„Z ‡Z S)ÚFilterNFcs2tƒ |¡||_t|ƒ|_||_||_||_dSr)Úsuperrr‡r…Ú_filename_patternrEÚ all_framesr{)rr‡Úfilename_patternrEr�r{©Ú __class__r rrbs   zFilter.__init__cCrWr)rŒrr r rrŽkrXzFilter.filename_patterncCs2t|ƒ}t ||j¡s dS|jdurdS||jkS)NFT)r…ÚfnmatchrŒrE©rrBrEr r rÚ_match_frame_implos   zFilter._match_frame_implcCs| ||¡|j ASr)r“r‡r’r r rÚ _match_framexrzFilter._match_framecsBˆjrt‡fdd„|DƒƒrˆjSˆj S|d\}}ˆ ||¡S)Nc3s �|] \}}ˆ ||¡VqdSr)r“)r^rBrErr rr`}s€ÿz*Filter._match_traceback..r)r�Úanyr‡r”)rrrBrEr rrÚ_match_traceback{s ÿ  zFilter._match_tracebackcCsF|\}}}}| |¡}|jdur!|jr|o||jkS|p ||jkS|Sr)r–r{r‡)rr_r{r rrVÚresr r rr‰†s   z Filter._match)NFN) r)r*r+rrOrŽr“r”r–r‰Ú __classcell__r r r�rrŠasÿ   rŠcs0eZdZ‡fdd„Zedd„ƒZdd„Z‡ZS)Ú DomainFiltercstƒ |¡||_dSr)r‹rÚ_domain)rr‡r{r�r rr’s  zDomainFilter.__init__cCrWr)ršrr r rr{–rXzDomainFilter.domaincCs|\}}}}||jk|j ASr)r{r‡)rr_r{r rrVr r rr‰šs zDomainFilter._match)r)r*r+rrOr{r‰r˜r r r�rr™‘s   r™c@sVeZdZ dd„Zdd„Zedd„ƒZdd„Zd d „Zd d „Z ddd„Z ddd„Z dS)ÚSnapshotcCst|ƒ|_||_dSr)r}rÚtraceback_limit)rrrœr r rr¤s  zSnapshot.__init__cCsB t|dƒ�}t ||tj¡WdƒdS1swYdS)NÚwb)ÚopenÚpickleÚdumpZHIGHEST_PROTOCOL)rrBÚfpr r rr ªs "ÿz Snapshot.dumpcCs: t|dƒ� }t |¡WdƒS1swYdS)NÚrb)ržrŸÚload)rBr¡r r rr£±s $ÿz Snapshot.loadcs@|rt‡fdd„|DƒƒsdS|rt‡fdd„|DƒƒrdSdS)Nc3s�|]}| ˆ¡VqdSr©r‰©r^Ú trace_filter©r_r rr`»s€ÿz)Snapshot._filter_trace..Fc3s�|] }| ˆ¡ VqdSrr¤r¥r§r rr`¿s€ÿT)r•)rÚinclude_filtersÚexclude_filtersr_r r§rÚ _filter_trace¹s ÿ ÿzSnapshot._filter_tracecs„ t|tƒstdt|ƒjƒ‚|r6g‰g‰|D]}|jr"ˆ |¡qˆ |¡q‡‡‡fdd„ˆjjDƒ}nˆjj  ¡}t |ˆj ƒS)Nz)filters must be a list of filters, not %scsg|] }ˆ ˆˆ|¡r|‘qSr )rªr]©r©r¨rr rÚ Õs þ ÿz*Snapshot.filter_traces..) rrÚ TypeErrorÚtyper)r‡r4rr~Úcopyr›rœ)rÚfiltersr¦Z new_tracesr r«rÚ filter_tracesÄs ÿ    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!ty�t| |dƒ|| <Yq!w|S|jjD]Y}|\}}}} |D]N} z|| } Wn tyº|dkr©| f} n| ddff} t| ƒ} | || <Ynwz|| } | j|7_| jd7_Wq’tyàt| |dƒ|| <Yq’wqˆ|S) N)rrBrEzunknown key_type: %r)rErBz/cumulative mode cannot by used with key type %rrrErDr)Ú ValueErrorrr~ÚKeyErrorrPr rr)rÚkey_typeÚ cumulativeZstatsZ tracebacksr_r{r Ztrace_tracebackrVrrUr8r?r r rÚ _group_byÝsf ÿ     ø  ÿ î    ú ÿòzSnapshot._group_byFcCs. | ||¡}t| ¡ƒ}|jdtjd�|S©NT)ÚreverseÚkey)r¶ÚlistÚvaluesÚsortrr&)rr´rµZgroupedr7r r rr7s   zSnapshot.statisticscCs8 | ||¡}| ||¡}t||ƒ}|jdtjd�|Sr·)r¶r9r¼r-r&)rZ old_snapshotr´rµr6r5r7r r rÚ compare_tos    zSnapshot.compare_toN)F) r)r*r+rr Ú staticmethodr£rªr±r¶r7r½r r r rr›Ÿs   3 r›cCs& tƒstdƒ‚tƒ}tƒ}t||ƒS)NzLthe tracemalloc module must be tracing memory allocations to take a snapshot)Ú is_tracingÚ RuntimeErrorrZget_traceback_limitr›)rrœr r rÚ take_snapshot's  rÁ)Zcollections.abcrrÚ functoolsrr‘rnZos.pathr�rŸZ _tracemallocrrrrr-r9r:rPrvrwr}r…r†rŠr™r›rÁr r r rÚs4 (2&M'0