HOME


Mini Shell 1.0
DIR: /snap/core20/current/usr/lib/python3.8/test/libregrtest/__pycache__/
Upload File :
Current File : //snap/core20/current/usr/lib/python3.8/test/libregrtest/__pycache__/refleak.cpython-38.pyc
U

���g �@s�ddlZddlZddlZddlZddlmZddlmZzddlm	Z	Wn$e
k
rlddlZdd�Z	YnXdd�Zd	d
�Z
dd�Zd
d�ZdS)�N)�
isabstract)�support)�	_get_dumpcCs&tdd�|jD��}||j|j|jfS)Ncss|]}t�|�VqdS�N)�weakref�ref)�.0�obj�r
�./usr/lib/python3.8/test/libregrtest/refleak.py�	<genexpr>sz_get_dump.<locals>.<genexpr>)�set�
_abc_registry�
_abc_cache�_abc_negative_cache�_abc_negative_cache_version)�clsZregistry_weakrefsr
r
rrs
�rc'
s�ddl}ddl�ttd�s"td��t�tjdd�}|j�	�}tj
�	�}zddl}Wntk
rnd}YnX|j
�	�}i}	�fdd��jjD�D]2}
t|
�s�q�|
��|
gD]}t|�d|	|<q�q�dd�td	d
�D���fdd�}|j\}
}}tj�tj|�}|
|}tt|��}dg|}dg|}dg|}tj}tj}tj}d}}}|j�s�td
|dtj d�td|ddd|�tj dd�t!|||||	�|D]�}|�t!|||||	�|�}|�}|�}|j�s�tddtj dd�|||�||<|||�||<|||�||<|}|}|}�q�|j�s@ttj d�dd�}dd�} d}!|d|f|d|f|d| ffD]t\}"}#}$|"|
d�}"|$|"��rpd ||"|#t"|"�f}%t|%tj dd�t#|d!��}&t|%|&d�|&�$�W5QRXd}!�qp|!S)"z�Run a test multiple times, looking for reference leaks.

    Returns:
        False if the test didn't leak references; True if we detected refleaks.
    rN�gettotalrefcountz9Tracking reference leaks requires a debug build of Pythoncsg|]}t�j|��qSr
��getattr�abc�r�a��collectionsr
r�
<listcomp>1szdash_R.<locals>.<listcomp>cSsi|]
}||�qSr
r
)r�valuer
r
r�
<dictcomp>;szdash_R.<locals>.<dictcomp>i���i�cs��||�Sr)�
setdefault)r)�int_poolr
r�get_pooled_int<szdash_R.<locals>.get_pooled_intZ	beginningZrepetitions)�fileZ
1234567890�
�T)r!�flush�.�)�endr!r$cSstdd�|D��S)Ncss|]}|dkVqdS)r#Nr
)rZdeltar
r
rr|sz2dash_R.<locals>.check_rc_deltas.<locals>.<genexpr>)�all��deltasr
r
r�check_rc_deltasos
zdash_R.<locals>.check_rc_deltascSst|�Sr)�anyr)r
r
r�check_fd_deltas~szdash_R.<locals>.check_fd_deltasFZ
referencesz
memory blockszfile descriptorsz%s leaked %s %s, sum=%sr)%�copyreg�collections.abc�hasattr�sys�	Exception�warm_caches�warnings�filters�dispatch_table�copy�path_importer_cache�	zipimport�ImportError�_zip_directory_cacher�__all__r�__subclasses__r�rangeZ
huntrleaks�os�path�joinrZSAVEDCWD�list�getallocatedblocksr�fd_count�quiet�print�stderr�dash_R_cleanup�sum�openr$)'�nsZ	test_nameZ	test_funcr.�fs�ps�picr9�zdc�abcsrr	r ZnwarmupZntrackedZfnameZrepcountZ	rep_rangeZ	rc_deltasZalloc_deltasZ	fd_deltasrCrrDZ	rc_beforeZalloc_beforeZ	fd_before�iZalloc_afterZrc_afterZfd_afterr+r-Zfailedr*Z	item_nameZchecker�msgZrefrepr
)rrr�dash_Rs�







��
�rScsddl}ddl�|tjdd�<|j��|j�|�tj��tj�|�zddl	}Wnt
k
rjYnX|j��|j�|�t���fdd��j
jD�}tt|�}|D]J}|��|gD]6}	|�|	t��D]}
|
�dk	r�|	�|
��q�|	��q�q�t�dS)Nrcsg|]}t�j|��qSr
rrrr
rr�sz"dash_R_cleanup.<locals>.<listcomp>)r.r/r4r5r6�clear�updater1r8r9r:r;�_clear_type_cacherr<�filterrr=�getr
�register�_abc_caches_clear�clear_caches)rLrMrNrOrPr.r9Zabs_classesrr	rr
rrrH�s.




rHcCs^tj��D]}t|d�r
|`q
tjtjtjtjfD]}|dk	r2|�	�q2ztjd}Wnt
k
rjYnX|j��t
��ztjd}Wnt
k
r�YnX|j��ztjd}Wnt
k
r�Yn
X|��ztjd}Wnt
k
r�Yn
X|��ztjd}Wnt
k
�r(Yn
X|��ztjd}Wnt
k
�rVYn
X|��ztjd}Wnt
k
�r�YnX|j��ztjd	}	Wnt
k
�r�Yn
X|	��ztjd
}
Wnt
k
�r�YnXd|
_ztjd}Wnt
k
�rYn
X|��ztjd}Wnt
k
�r<YnX|jD]}
|
��qDt��dS)
N�__warningregistry__zdistutils.dir_util�	_strptimezurllib.parsezurllib.request�	linecache�	mimetypes�filecmp�struct�doctest�ctypes�typing)r1�modules�valuesr0r\�stdoutrG�
__stdout__�
__stderr__r$�KeyErrorZ
_path_createdrT�re�purgeZ_regex_cacheZclear_cacheZ
urlcleanup�
clearcacheZ_default_mime_types�_cacheZ_clearcacheZmasterZ_reset_cacheZ	_cleanupsrZ
gc_collect)�mod�streamZdistutils_dir_utilr]Zurllib_parseZurllib_requestr^r_r`rarbrcrd�fr
r
rr[�s�






r[cCsNttd��}td�D]}|||d�qdd�td�D�ttdd��dS)N�r#cSsg|]}t|��qSr
)�chr)rrQr
r
rrszwarm_caches.<locals>.<listcomp>���i)�bytesr>rB)�srQr
r
rr3s
r3)r?rkr1r4�inspectrZtestr�_abcrr:rrSrHr[r3r
r
r
r�<module>s"`