hddlZddlZddlZddlmZddlmZddlmZddl m Z  ddl m Z n#e $r ddlZdZ YnwxYwdZd Zd ZdS) N) isabstract)support) os_helper) clear_caches) _get_dumpchtd|jD}||j|j|jfS)Nc3>K|]}tj|VdSN)weakrefref).0objs //usr/lib/python3.11/test/libregrtest/refleak.py z_get_dump..s,NNS C 0 0NNNNNN)set _abc_registry _abc_cache_abc_negative_cache_abc_negative_cache_version)clsregistry_weakrefss rrrsB NNC')HJ Jrc ()ddl}ddl(ttdst dt t jdd}|j }tj } ddl }|j }n#t$rd}YnwxYwi} (fd(jjDD]E} t!| s| | gzD]} t%| d| | <Fdt'ddD))fd } |j\} }}t*jt0j|}| |z}t5t'|}dg|z}dg|z}dg|z}tj}tj}tj}t0j}dx}x}}|jsJtAd |d tj! tAd |dzdzzd|tj!dtE||||| tGj$|D]}|tE||||| tGj$||z }|}|}|jstAddtj!d| ||z ||<| ||z ||<| ||z ||<|}|}|}|jstAtj! d} d}!d}"|d| f|d| f|d|!ffD]\}#}$}%|#| d}#|%|#r|d|#d|$dtK|#}&tA|&tj!dtM|dd 5}'tA|&|' |''dddn #1swxYwYd}"|"S)!zRun a test multiple times, looking for reference leaks. Returns: False if the test didn't leak references; True if we detected refleaks. rNgettotalrefcountz9Tracking reference leaks requires a debug build of Pythonc:g|]}tj|Sgetattrabcr a collectionss r zdash_R..3s%MMM ++MMMrci|]}||Srr)r values r zdash_R..=s===u===riic0||Sr ) setdefault)r%int_pools rget_pooled_intzdash_R..get_pooled_int>s""5%000r beginning repetitions)file 1234567890 T)r-flush.)endr-r1c4td|DS)Nc3"K|] }|dkV dS)r0Nr)r deltas rrz2dash_R..check_rc_deltas..s&22%5A:222222r)alldeltass rcheck_rc_deltaszdash_R..check_rc_deltasss!226222222rc t|Sr )anyr9s rcheck_fd_deltaszdash_R..check_fd_deltass6{{rF referencesz memory blockszfile descriptorsz leaked  z, sum=r!zutf-8)encoding)(copyregcollections.abchasattrsys Exception warm_cacheswarningsfiltersdispatch_tablecopypath_importer_cache zipimport_zip_directory_cache ImportErrorr__all__r__subclasses__rrange huntrleaksospathjoinrSAVEDCWDlistgetallocatedblocksr_getquickenedcountfd_countquietprintstderrdash_R_cleanupr gc_collectsumopenr1)*ns test_name test_funcrBfspspicrMzdcabcsrrr*nwarmupntrackedfnamerepcount rep_range rc_deltas alloc_deltas fd_deltasrYrrZr[ rc_before alloc_before fd_beforei alloc_afterrc_afterfd_afterr;r>failedr: item_namecheckermsgrefrepr"r)s* @@rdash_RrsNNN 3* + +%$%% % MMM  !!! B   $ $ & &B ! & & ( (C4,1133  DMMMM[_5LMMM**#  %%''3%/ * *C!#q)DII *>=%t*<*<===H11111 "}GXu GLL+U 3 3E!HU8__%%IhI3>LhI/+/!H+,,I, y 8 k8]DDDD |Xr\A-.  :    2r3T***   r2sC...)(**-?-?-A-AA ##%%8::x < #2CJd ; ; ; ;%~h&:;; ! (.|)CDD Q%~h&:;; ! "   8 3: 3 3 3F L/2 8 &8'" 7 ! 76??  666999c&kkk;C #CJd 3 3 3 3eS7333 vc''''                F Ms$ B'' B65B6"&OO O cH ddl}ddl |tjdd<|j|j|tjtj| ddl }|j |j |n#t$rYnwxYw fd j j D}tt|}|D]}}||gzD]b} || t%D])} | | | *| c~t+tjdS)Nrc:g|]}tj|Srrr s rr#z"dash_R_cleanup..s%PPP17;?A..PPPr)rBrCrHrIrJclearupdaterErLrMrNrOrrPfilterrrQgetrregister_abc_caches_clearr_clear_type_cache) rfrgrhrirjrBrM abs_classesrrr r"s @rr_r_sNNNHQQQ   """ !!"%%%!!###""3'''3 &,,...&--c2222      QPPP 8OPPPK[11K$$%%''3%/ $ $CxxSUU++ ( (355$LL'''  ! ! # # # #  $NNNs C CCcttd}tdD]}|||dzdtdDttdddS)Nr0c,g|]}t|Sr)chr)r rvs rr#zwarm_caches..s   SVV   ri)bytesrRrX)srvs rrGrGss eCjjA 3ZZ !AaC%  U3ZZ    r3r)rTrErHinspectrtestr test.supportrtest.libregrtest.utilsr_abcrrOr rr_rGrrrrs """"""////// JJJJNNNJJJJJJD   Fs - <<