grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛf´Bã@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@|r0d||fSd||fSt|ƒdksT|dkrx|rhd||fSd ||fS|d }qdS) N)ÚBZKiBZMiBZGiBÚTiBédrz%+.1f %sz%.1f %si(r z%+.0f %sz%.0f %si)Úabs)ÚsizeZsignZunit©r ú0/opt/alt/python38/lib64/python3.8/tracemalloc.pyÚ _format_size src@s@eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS)Ú Statistic©Ú tracebackr ÚcountcCs||_||_||_dS©Nr)Úselfrr rr r rÚ__init__%szStatistic.__init__cCst|j|j|jfƒSr)Úhashrr r©rr r rÚ__hash__*szStatistic.__hash__cCs$|j|jko"|j|jko"|j|jkSrr©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__2s þÿ zStatistic.__str__cCsd|j|j|jfS)Nz)rrr r rÚ__repr__<sÿzStatistic.__repr__cCs|j|j|jfSr)r rrrr r rÚ _sort_key@szStatistic._sort_keyN© Ú__name__Ú __module__Ú __qualname__Ú __slots__rrrr r!r"r r r rrs rc@s@eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS)Ú StatisticDiff©rr Ú size_diffrÚ count_diffcCs"||_||_||_||_||_dSrr))rrr r*rr+r r rrKs zStatisticDiff.__init__cCst|j|j|j|j|jfƒSr)rrr r*rr+rr r rrRsÿzStatisticDiff.__hash__cCs<|j|jko:|j|jko:|j|jko:|j|jko:|j|jkSrr)rr r rrVs  ÿ þ ý üzStatisticDiff.__eq__cCsPd|jt|jdƒt|jdƒ|j|jf}|jrL|j|j}|dt|dƒ7}|S)Nz %s: size=%s (%s), count=%i (%+i)FTr)rrr r*rr+rr r rr ]s  üÿ zStatisticDiff.__str__cCsd|j|j|j|j|jfS)Nz9r)rr r rr!is  ÿÿzStatisticDiff.__repr__cCs t|jƒ|jt|jƒ|j|jfSr)r r*r r+rrrr r rr"ns  þzStatisticDiff._sort_keyNr#r r r rr(Ds r(cCsªg}| ¡D]d\}}| |d¡}|dk rNt||j|j|j|j|j|jƒ}nt||j|j|j|jƒ}| |¡q | ¡D]*\}}t|d|j d|j ƒ}| |¡qz|S©Nr)ÚitemsÚpopr(r rÚappend)Ú old_groupÚ new_groupÚ statisticsrÚstatZpreviousr r rÚ_compare_grouped_statsts*   þþ  r4c@sXeZdZdZdd„Zedd„ƒZedd„ƒZdd „Zd d „Z d d „Z dd„Z dd„Z dS)ÚFrame©Ú_framecCs ||_dSrr6©rÚframer r rr�szFrame.__init__cCs |jdSr,r6rr r rÚfilename“szFrame.filenamecCs |jdS©Nér6rr r rÚlineno—sz Frame.linenocCs |j|jkSrr6rr r rr›sz Frame.__eq__cCs |j|jkSrr6rr r rÚ__lt__žsz Frame.__lt__cCs t|jƒSr)rr7rr r rr¡szFrame.__hash__cCsd|j|jfS)Nz%s:%s©r:r=rr r rr ¤sz Frame.__str__cCsd|j|jfS)Nzr?rr r rr!§szFrame.__repr__N) r$r%r&r'rÚpropertyr:r=rr>rr r!r r r rr5ˆs  r5c@sbeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z ddd„Z dS)Ú Traceback©Ú_framescCst |¡tt|ƒƒ|_dSr)rrÚtupleÚreversedrC)rÚframesr r rr³s zTraceback.__init__cCs t|jƒSr)ÚlenrCrr r rÚ__len__»szTraceback.__len__cCs4t|tƒr"tdd„|j|DƒƒSt|j|ƒSdS)Ncss|]}t|ƒVqdSr)r5©Ú.0Útracer r rÚ Àsz(Traceback.__getitem__..)Ú isinstanceÚslicerDrCr5©rÚindexr r rÚ __getitem__¾s zTraceback.__getitem__cCs |j|jkSr)r7rCr8r r rÚ __contains__ÄszTraceback.__contains__cCs t|jƒSr)rrCrr r rrÇszTraceback.__hash__cCs |j|jkSrrBrr r rrÊszTraceback.__eq__cCs |j|jkSrrBrr r rr>ÍszTraceback.__lt__cCs t|dƒSr,)Ústrrr r rr ÐszTraceback.__str__cCsdt|ƒfS)Nz)rDrr r rr!ÓszTraceback.__repr__NFcCsŒg}|dk r2|dkr$|| d…}q6|d|…}n|}|rBt|ƒ}|D]@}| d|j|jf¡t |j|j¡ ¡}|rF| d|¡qF|S)Nrz File "%s", line %sz %s)rEr/r:r=Ú linecacheÚgetlineÚstrip)rÚlimitZmost_recent_firstÚlinesZ frame_slicer9Úliner r rÚformatÖs  ÿzTraceback.format)NF)r$r%r&r'rrHrQrRrrr>r r!rZr r r rrA«srAcCs t|ƒ}|dk rt|ƒSdSdSr)rrA)ÚobjrFr r rÚget_object_tracebackësr\c@s\eZdZdZdd„Zedd„ƒZedd„ƒZedd „ƒZd d „Z d d „Z dd„Z dd„Z dS)ÚTrace©Ú_tracecCs ||_dSrr^©rrKr r rrszTrace.__init__cCs |jdSr,r^rr r rÚdomainsz Trace.domaincCs |jdSr;r^rr r rr sz Trace.sizecCst|jdƒS)Né)rAr_rr r rr szTrace.tracebackcCs |j|jkSrr^rr r rrsz Trace.__eq__cCs t|jƒSr)rr_rr r rrszTrace.__hash__cCsd|jt|jdƒfS)Nz%s: %sF)rrr rr r rr sz Trace.__str__cCsd|jt|jdƒ|jfS)Nz'F)rarr rrr r rr!sÿzTrace.__repr__N) r$r%r&r'rr@rar rrrr r!r r r rr]ús   r]c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú_TracescCst |¡||_dSr)rrÚ_traces)rÚtracesr r rr s z_Traces.__init__cCs t|jƒSr)rGrdrr r rrH%sz_Traces.__len__cCs4t|tƒr"tdd„|j|DƒƒSt|j|ƒSdS)Ncss|]}t|ƒVqdSr)r]rIr r rrL*sz&_Traces.__getitem__..)rMrNrDrdr]rOr r rrQ(s z_Traces.__getitem__cCs |j|jkSr)r_rdr`r r rrR.sz_Traces.__contains__cCs |j|jkSr)rdrr r rr1sz_Traces.__eq__cCs dt|ƒS)Nz)rGrr r rr!4sz_Traces.__repr__N) r$r%r&rrHrQrRrr!r r r rrcs rccCs&tj |¡}| d¡r"|dd…}|S)Nz.pycéÿÿÿÿ)ÚosÚpathÚnormcaseÚendswith)r:r r rÚ_normalize_filename8s   rkc@seZdZdd„Zdd„ZdS)Ú BaseFiltercCs ||_dSr)Ú inclusive)rrmr r rr@szBaseFilter.__init__cCst‚dSr)ÚNotImplementedErrorr`r r rÚ_matchCszBaseFilter._matchN)r$r%r&rror r r rrl?srlcsJeZdZd‡fdd„ Zedd„ƒZdd„Zd d „Zd d „Zd d„Z ‡Z S)ÚFilterNFcs2tƒ |¡||_t|ƒ|_||_||_||_dSr)ÚsuperrrmrkÚ_filename_patternr=Ú all_framesra)rrmÚfilename_patternr=rsra©Ú __class__r rrHs   zFilter.__init__cCs|jSr)rrrr r rrtQszFilter.filename_patterncCs6t|ƒ}t ||j¡sdS|jdkr(dS||jkSdS)NFT)rkÚfnmatchrrr=©rr:r=r r rÚ_match_frame_implUs  zFilter._match_frame_implcCs| ||¡|j ASr)ryrmrxr r rÚ _match_frame^szFilter._match_framecsHˆjr,t‡fdd„|Dƒƒr"ˆjSˆj Sn|d\}}ˆ ||¡SdS)Nc3s|]\}}ˆ ||¡VqdSr)ry)rJr:r=rr rrLcsÿz*Filter._match_traceback..r)rsÚanyrmrz)rrr:r=r rrÚ_match_tracebackas ÿ  zFilter._match_tracebackcCsD|\}}}| |¡}|jdk r@|jr2|o0||jkS|p>||jkS|Sr)r|rarm)rrKrar rÚresr r rrols   z Filter._match)NFN) r$r%r&rr@rtryrzr|roÚ __classcell__r r rurrpGsÿ    rpcs0eZdZ‡fdd„Zedd„ƒZdd„Z‡ZS)Ú DomainFiltercstƒ |¡||_dSr)rqrÚ_domain)rrmrarur rrxs zDomainFilter.__init__cCs|jSr)r€rr r rra|szDomainFilter.domaincCs|\}}}||jk|j ASr)rarm)rrKrar rr r rro€s zDomainFilter._match)r$r%r&rr@raror~r r rurrws  rc@sTeZdZdd„Zdd„Zedd„ƒZdd„Zd d „Zd d „Z ddd„Z ddd„Z dS)ÚSnapshotcCst|ƒ|_||_dSr)rcreÚtraceback_limit)rrer‚r r rrŠs zSnapshot.__init__c Cs*t|dƒ�}t ||tj¡W5QRXdS)NÚwb)ÚopenÚpickleÚdumpZHIGHEST_PROTOCOL)rr:Úfpr r rr†�s z Snapshot.dumpc Cs,t|dƒ�}t |¡W5QR£SQRXdS)NÚrb)r„r…Úload)r:r‡r r rr‰—s z Snapshot.loadcs@|rt‡fdd„|DƒƒsdS|r.Fc3s|]}| ˆ¡ VqdSrrŠr‹r�r rrL¥sÿT)r{)rÚinclude_filtersÚexclude_filtersrKr r�rÚ _filter_traceŸs ÿ ÿzSnapshot._filter_tracecs‚t|tƒstdt|ƒjƒ‚|rjg‰g‰|D] }|jrBˆ |¡q,ˆ |¡q,‡‡‡fdd„ˆjjDƒ}n ˆjj  ¡}t |ˆj ƒS)Nz)filters must be a list of filters, not %scsg|]}ˆ ˆˆ|¡r|‘qSr )r�rI©r�rŽrr rÚ »s þÿz*Snapshot.filter_traces..) rMrÚ TypeErrorÚtyper$rmr/rerdÚcopyr�r‚)rÚfiltersrŒZ new_tracesr r‘rÚ filter_tracesªs ÿ   zSnapshot.filter_tracesc CsÜ|dkrtd|fƒ‚|r.|dkr.td|ƒ‚i}i}|�s|jjD]Æ}|\}}}z ||} WnZtk r¸|dkr||} n(|dkr’|dd…} n|dddff} t| ƒ} | ||<YnXz(|| } | j|7_| jd7_WqDtk �rt| |dƒ|| <YqDXqDnÊ|jjD]À}|\}}}|D]ª} z || } WnFtk �r~|dk�r\| f} n| ddff} t| ƒ} | || <YnXz(|| } | j|7_| jd7_Wn&tk �rÎt| |dƒ|| <YnX�q(�q|S) N)rr:r=zunknown key_type: %r)r=r:z/cumulative mode cannot by used with key type %rrr=r<r)Ú ValueErrorrerdÚKeyErrorrAr rr) rÚkey_typeÚ cumulativeZstatsZ tracebacksrKrar Ztrace_tracebackrrFr3r9r r rÚ _group_byÃsZ ÿ       zSnapshot._group_byFcCs,| ||¡}t| ¡ƒ}|jdtjd�|S©NT)ÚreverseÚkey)rœÚlistÚvaluesÚsortrr")rršr›Zgroupedr2r r rr2ös  zSnapshot.statisticscCs6| ||¡}| ||¡}t||ƒ}|jdtjd�|Sr�)rœr4r¢r(r")rZ old_snapshotršr›r1r0r2r r rÚ compare_tos    zSnapshot.compare_toN)F)F) r$r%r&rr†Ú staticmethodr‰r�r—rœr2r£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�)rer‚r r rÚ take_snapshot s r§)Zcollections.abcrrÚ functoolsrrwrTZos.pathrgr…Z _tracemallocrrrrr(r4r5rAr\r]rcrkrlrprr�r§r r r rÚs2 &0"?%0