HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/test/libregrtest/__pycache__/refleak.cpython-39.pyc
a

kx�g �@s�ddlZddlZddlZddlZddlmZddlmZzddlm	Z	Wn"e
yjddlZdd�Z	Yn0dd�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.9/test/libregrtest/refleak.py�	<genexpr>�z_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yld}Yn0|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]�\}"}#}$|"|
d�}"|$|"��rnd ||"|#t"|"�f}%t|%tj dd�t#|d!��$}&t|%|&d�|&�$�Wd�n1�s�0Yd}!�qn|!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>1r
zdash_R.<locals>.<listcomp>cSsi|]
}||�qSr
r
)r�valuer
r
r�
<dictcomp>;r
zdash_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|r
z2dash_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�picr:�zdc�abcsrr	r!ZnwarmupZntrackedZfnameZrepcountZ	rep_rangeZ	rc_deltasZalloc_deltasZ	fd_deltasrDrrEZ	rc_beforeZalloc_beforeZ	fd_before�iZalloc_afterZrc_afterZfd_afterr,r.Zfailedr+Z	item_nameZchecker�msgZrefrepr
)rr r�dash_Rs�







��
�(rTcsddl}ddl�|tjdd�<|j��|j�|�tj��tj�|�zddl	}Wnt
yhYn0|j��|j�|�t���fdd��j
jD�}tt|�}|D]J}|��|gD]6}	|�|	t��D]}
|
�dur�|	�|
��q�|	��q�q�t�dS)Nrcsg|]}t�j|��qSr
rrrr
rr�r
z"dash_R_cleanup.<locals>.<listcomp>)r/r0r5r6r7�clear�updater2r9r:r;r<�_clear_type_cacherr=�filterrr>�getr�register�_abc_caches_clear�clear_caches)rMrNrOrPrQr/r:Zabs_classesrr	rr
rrrI�s.




rIcCsHtj��D]}t|d�r
|`q
tjtjtjtjfD]}|dur2|�	�q2ztjd}Wnt
yhYn0|j��t
��ztjd}Wnt
y�Yn0|j��ztjd}Wnt
y�Yn
0|��ztjd}Wnt
y�Yn
0|��ztjd}Wnt
�yYn
0|��ztjd}Wnt
�yJYn
0|��ztjd}Wnt
�yvYn0|j��ztjd	}	Wnt
�y�Yn
0|	��ztjd
}
Wnt
�y�Yn0d|
_ztjd}Wnt
�y�Yn
0|��ztjd}Wnt
�y&Yn0|jD]}
|
��q.t��dS)
N�__warningregistry__zdistutils.dir_util�	_strptimezurllib.parsezurllib.request�	linecache�	mimetypes�filecmp�struct�doctest�ctypes�typing)r2�modules�valuesr1r]�stdoutrH�
__stdout__�
__stderr__r%�KeyErrorZ
_path_createdrU�re�purgeZ_regex_cacheZclear_cacheZ
urlcleanup�
clearcacheZ_default_mime_types�_cacheZ_clearcacheZmasterZ_reset_cache�	_cleanupsrZ
gc_collect)�mod�streamZdistutils_dir_utilr^Zurllib_parseZurllib_requestr_r`rarbrcrdre�fr
r
rr\�s�






r\cCsNttd��}td�D]}|||d�qdd�td�D�ttdd��dS)N�r$cSsg|]}t|��qSr
)�chr)rrRr
r
rrr
zwarm_caches.<locals>.<listcomp>���i)�bytesr?rC)�srRr
r
rr4s
r4)r@rlr2r5�inspectr�testr�_abcrr;rrTrIr\r4r
r
r
r�<module>s"`