HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_tracemalloc.cpython-310.opt-1.pyc
o

�i���@s^ddlZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZddl
mZzddlZWneyAdZYnwe�d�ZdZdd	�Zd
d�Zdd
�Zdd�Zdd�Zdd�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Z e�!edud �Gd!d"�d"ej��Z"e#d#kr�e�$�dSdS)$�N)�patch)�assert_python_ok�assert_python_failure� interpreter_requires_environment)�support)�	os_helper�)���i@cCs`g}t�d�}t|�D] }|j}|j|}|�|j|f�d}|j}|dur+t|�Sqt|�S)N�r)	�sys�	_getframe�range�f_code�f_lineno�append�co_filename�f_back�tuple)�nframeZlineno_delta�frames�frame�index�code�lineno�r�2/usr/local/lib/python3.10/test/test_tracemalloc.py�
get_framess

�rcCs<t��}|t}t|d�}d|}|t�|tt|�|��fS)Nr
�x)�tracemalloc�get_traceback_limit�EMPTY_STRING_SIZEr�	Traceback�min�len)�sizerZ	bytes_lenr�datarrr�allocate_bytes#s

r&cCs4d}gd�}t�||�}gd�}t�||�}||fS)N�)�r�
)��a.pyr'��b.py��r(r(�r
r'��r+�r,r/�r'�B)�r-r
r
�r/����	<unknown>rr
)r(r(r()r'r'r1r/)r'�r1r/)r.�)��c.py�Br
)r�Snapshot)�traceback_limit�
raw_traces�snapshotZraw_traces2�	snapshot2rrr�create_snapshots*s
rFcCst�||f�S�N)rZ_Frame��filenamerrrrrK�rcGs
t�|�SrG)rr!)rrrr�	tracebackN�
rKcCst||f�SrG)rKrHrrr�traceback_linenoQ�rMcCs
t|d�S�Nr)rM)rIrrr�traceback_filenameTrLrPc@seZdZdd�ZdS)�
TestTracebackcCsndtfdd�}|�|d�d�|�|dd�d�d}d	}|�||�d
|�d��|�||d�d
|�d
��dS)N�returncWsttj|��SrG)�reprrr!)�argsrrr�get_reprZrJz)TestTraceback.test_repr.<locals>.get_reprrz<Traceback ()>rz<Traceback () total_nframe=0>))�f1r
)�f2r'z@(<Frame filename='f2' lineno=2>, <Frame filename='f1' lineno=1>)z<Traceback �>r'z total_nframe=2>)�str�assertEqual)�selfrUrZexp_repr_framesrrr�	test_reprYs�

�
�zTestTraceback.test_reprN)�__name__�
__module__�__qualname__r\rrrrrQXsrQc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Ze�eed!�d"�d#d$��Zd%S)&�TestTracemallocEnabledcCs t��r	|�d�t�d�dS)N�+tracemalloc must be stopped before the testr
)r�
is_tracing�skipTest�start�r[rrr�setUpls
zTestTracemallocEnabled.setUpcC�t��dSrG�r�stoprerrr�tearDownrrNzTestTracemallocEnabled.tearDowncCsRdd�td�D�}t��}|�|d�t��t��}|�|d�|�||�dS)NcSsg|]}td��qS)�{�r&)�.0�countrrr�
<listcomp>vszFTestTracemallocEnabled.test_get_tracemalloc_memory.<locals>.<listcomp>i�r)r
rZget_tracemalloc_memory�assertGreaterEqual�clear_traces�assertLessEqual)r[r%r$�size2rrr�test_get_tracemalloc_memoryusz2TestTracemallocEnabled.test_get_tracemalloc_memorycCs2t��d}t|�\}}t�|�}|�||�dS�N�90)rrqr&�get_object_tracebackrZ�r[�obj_size�obj�
obj_tracebackrKrrr�test_get_object_tracebacks

z0TestTracemallocEnabled.test_get_object_tracebackcCsht��t��g}d}g}t��}t|d�}t�|tt|�|��}t�	|�}|�
|�|�||�dS)N���)rrqr�
gc_collectrrr!r"r#rw�assertIsNotNonerZ)r[rzrrr{rKrrr�test_new_reference�s


z)TestTracemallocEnabled.test_new_referencecCs�d}t��|�ttjd�t��t�d�t|�\}}t�|�}|�t|�d�|�||�t��t�d�t|�\}}t�|�}|�t|�d�|�||�dS)Nr)r	r
)	rri�assertRaises�
ValueErrorrdr&rwrZr#)r[ry�obj2�obj2_tracebackrKrzr{rrr�test_set_traceback_limit�s



z/TestTracemallocEnabled.test_set_traceback_limitcCs.|D]
}|d|jkr|Sq|�d�dS)Nr'ztrace not found)�_frames�fail)r[�tracesrK�tracerrr�
find_trace�s
�z!TestTracemallocEnabled.find_tracec
Cszt��d}t|�\}}t��}|�||�}|�|t�|\}}}}	|�||�|�||j�t�	�|�t��g�dSru)
rrqr&�_get_tracesr�ZassertIsInstancerrZr�ri)
r[ryrzr{r�r��domainr$rK�lengthrrr�test_get_traces�sz&TestTracemallocEnabled.test_get_tracescs�dd���fdd���fdd�}t��t�d�d}||�\}}||�\}}t��}tt|j��|_tt|j��|_|�||�}|�||�}	|\}
}}}
|	\}}}}|�||�dS)	NcSst|�SrGrl�r$rrr�allocate_bytes2��zPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes2c��|�SrGrr�)r�rr�allocate_bytes3�r�zPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes3cr�rGrr�)r�rr�allocate_bytes4�r�zPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes4r.rk)	rrirdr�r�reversedr�r�ZassertIs)r[r�ryZobj1Zobj1_tracebackr�r�r�Ztrace1Ztrace2Zdomain1�size1Z
traceback1Zlength1Zdomain2rs�
traceback2Zlength2r)r�r�r� test_get_traces_intern_traceback�s 
z7TestTracemallocEnabled.test_get_traces_intern_tracebackc	Cs�d}d}t��t|�\}}t��\}}|�||�|�||�|�|||�|�|||�d}t��\}}|�||�|�||||�|�||�t��|�t��d�t|�\}}t��\}}|�||�t��|�t��d�dS)N��)rr)	rrqr&�get_traced_memoryrprr�
assertLessrZri)	r[Z	max_errorryrzr{r$Z	peak_sizersZ
peak_size2rrr�test_get_traced_memory�s*z-TestTracemallocEnabled.test_get_traced_memorycCs@td�\}}t�|�}|�|�t��t�|�}|�|�dS)Nrk)r&rrwrrq�assertIsNone)r[rzr{rKr�rrr�test_clear_tracess


z(TestTracemallocEnabled.test_clear_tracescCs�t��tttd���}t��\}}t��t��\}}|�||�|�||�d}t	|�\}}t��\}	}
|�|
|	�|�
|
|�|�|
||�dS)Ni��r�)rrq�sum�listr
r�Z
reset_peakrpr�r&�
assertGreater)r[Z	large_sumr�Zpeak1rsZpeak2ryrzr{Zsize3Zpeak3rrr�test_reset_peak
sz&TestTracemallocEnabled.test_reset_peakcCs0t��|�t���t��|�t���dSrG)rri�assertFalserbrd�
assertTruererrr�test_is_tracing%sz&TestTracemallocEnabled.test_is_tracingcCs�td�\}}t��}|�|jdjjd�|�tj	�|�
tjtj	�tj�
tj	�}|�|j|j�t��|�t��}t��Wd�n1sJwY|�t|j�d�dS)Nrkr
r)zLthe tracemalloc module must be tracing memory allocations to take a snapshot)r&r�
take_snapshotr�r�rK�total_nframe�dumpr�TESTFN�
addCleanup�unlinkrA�loadrZrir��RuntimeErrorrY�	exception)r[rz�sourcerDrE�cmrrr�
test_snapshot,s
��z$TestTracemallocEnabled.test_snapshotcCsJt��}d|_|�tj�|�tjtj�tj�	tj�}|�
|jd�dS)N�new)rr�Z	test_attrr�rr�r�r�rAr�rZ)r[rDrErrr�test_snapshot_save_attrEsz.TestTracemallocEnabled.test_snapshot_save_attrcCs6t��sdSd}t|�\}}t�|�}|durdSdS)Nr'rvr/r)rrbr&rwrxrrr�
fork_childPs
z!TestTracemallocEnabled.fork_child�forkzneed os.fork()c	CsHt��}|sd}z|��}Wt�|�dSt�|�wtj|dd�dS)Nr
r)�exitcode)�osr�r��_exitrZwait_process)r[�pidr�rrr�	test_fork]s
z TestTracemallocEnabled.test_forkN)r]r^r_rfrjrtr|r�r�r�r�r�r�r�r�r�r�r�r��unittestZ
skipUnless�hasattrr�r�rrrrr`ks&
$	
r`c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestSnapshoti�cCsdg}t���o}|�tjtddd��|�tjtddd��|�tjtd|d��t��}|�|jd�|�t	|j
�d�|j
d	}|�|jd�|�|jj
d
�|�t	|j�d�|�|jd	jd�|�|jd	jd�Wd�dS1sywYdS)
N)rr3)r*r)rbT)Zreturn_valuerr3r�r
rr)r+r')�
contextlib�	ExitStack�
enter_contextr�objectrr�rZrBr#r�r$rKr�rIr)r[rC�stackrDr�rrr�test_create_snapshotos*
���
"�z!TestSnapshot.test_create_snapshotc
Cs�t�\}}t�dd�}t�ddd�}t�ddd�}t|jj�}|�|f�}|�|jjgd��|�|jj|�|�||f�}|�|jjgd��|�d	�}	|�|	|�|�|	j|j�|�|	j|j�|�	t
|j|�dS)
NFr-Tr+r'r3)r(r(r(r0r7)r(r(r(r0r)rFr�Filterr�r��_traces�
filter_tracesrZZassertIsNotr��	TypeError)
r[rDrE�filter1�filter2Zfilter3�original_traces�	snapshot3Z	snapshot4Z	snapshot5rrr�test_filter_traces�s
	
zTestSnapshot.test_filter_tracescCszt�\}}tjdddd�}tjdddd�}t|jj�}|�|f�}|�|jjgd��|�|f�}|�|jjgd��dS)NFr+r
�r�T)r(r(r(r4r7)rFrr�r�r�r�r�rZ)r[rDrEr�r�r�r�rrr�test_filter_traces_domain�s
	z&TestSnapshot.test_filter_traces_domaincCsht�\}}tjddd�}tjddd�}|�|f�}|�|jjgd��|�|f�}|�|jjdg�dS)NFr/r�T)r(r(r(r0r4r7)rFr�DomainFilterr�rZr�r�)r[rDrEr�r�r�rrr� test_filter_traces_domain_filter�s
	

�z-TestSnapshot.test_filter_traces_domain_filtercCs(t�\}}tdd�}tdd�}tdd�}tdd�}tdd	�}|�d
�}|�|t�|dd�t�|dd
�t�|dd�t�|dd�g�|�d
�}	|�|	t�|dd�t�|dd�t�|dd
�g�|�|d
�}
|�|
t�|dddd�t�|dddd�t�|dddd�t�|dddd�t�|ddd
d�g�dS)Nr;rr+r'r3r-r
r?r@rr5�r/r8�r=r<���r	���)rFrM�
statisticsrZr�	Statistic�
compare_to�
StatisticDiff)r[rDrE�tb_0�tb_a_2�tb_a_5�tb_b_1Ztb_c_578�stats1�stats2r�rrr�test_snapshot_group_by_line�s6






�
�
�z(TestSnapshot.test_snapshot_group_by_linec

Cs�t�\}}td�}td�}td�}td�}|�d�}|�|t�|dd�t�|dd	�t�|d
d�g�|�d�}|�|t�|dd�t�|d
d�g�|�|d�}	|�|	t�|dddd�t�|d
d
dd�t�|dddd�t�|dddd�g�dS)Nr;r+r-r?rIr5r
� r.r8i�r3r=r<rr�r	r�)rFrPr�rZrr�r�r�)
r[rDrEr��tb_a�tb_bZtb_cr�r��diffrrr�test_snapshot_group_by_file�s.

�
�
�z(TestSnapshot.test_snapshot_group_by_filecCs6t�\}}tdd�}tdd�}td�}td�}|�d�}|�|t�|dd�t�|d	d
�t�|dd�t�|dd�g�td
�}|�d�}	|�|	t�|dd�t�|dd�t�|d	d
�g�|�|d�}
|�|
t�|dddd�t�|dddd�t�|dddd�t�|dddd�t�|d	dd
d�g�|jt	|jddd�dS)Nr*r,r2r6r:rKr5r
r�r/r8r'r>r�r=r<rr�r	r�T)Z
cumulative)
rFrKr�rZrr�r�r�r�r�)r[rDrEZtb1Ztb2Ztb3Ztb4r�Ztb5r�r�rrr� test_snapshot_group_by_tracebacks<



�
��
�z-TestSnapshot.test_snapshot_group_by_tracebackcCs�t�\}}td�}td�}td�}tdd�}tdd�}tdd�}tdd�}	|�dd	�}
|�|
t�|d
d�t�|dd�t�|dd�g�|�d
d	�}
|�|
t�|dd�t�|	dd�t�|dd�t�|dd�t�|dd�g�dS)Nr;r+r-r'r3r
r.rIT�br�r8rr5r�r/)rFrPrMr�rZrr�)r[rDrEr�r�r�r�r�r�Ztb_b_4�statsrrr�!test_snapshot_group_by_cumulativeBs,




�
�z.TestSnapshot.test_snapshot_group_by_cumulativecCsVt�\}}|jd}|�t|�d�|j}|�t|�d�|d}|�t|�d�dS)Nrzb.py:4: 10 Bzb.py:4)rFr�rZrYrK)r[rDrEr�rKrrrr�test_trace_format^s

zTestSnapshot.test_trace_formatcCs0t�\}}|�d�}|d}|�t|�d�dS)Nrrz(b.py:1: size=66 B, count=1, average=66 B)rFr�rZrY�r[rDrEr��statrrr�test_statistic_formatgs


�z"TestSnapshot.test_statistic_formatcCs2t�\}}|�|d�}|d}|�t|�d�dS)Nrrz;a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 B)rFr�rZrYr�rrr�test_statistic_diff_formatns

�z'TestSnapshot.test_statistic_diff_formatcCs`t�\}}|�|jdd�|jd|jdf�|jdj}|�|dd�|d|df�dS)Nr'rr
)rFrZr�rK)r[rDrErKrrr�test_slicesus
��zTestSnapshot.test_slicescCs�t�\}}dd�}tjjd|d��W|jdj}|�|��gd��|�|jdd�d	d
g�|�|jdd�dd
g�|�|jdd�gd��|�|jddd�d	d
g�|�|jddd�dd
g�Wd�dS1skwYdS)NcSsd||fS)Nz
  <%s, %s>rrHrrr�getline�rNz3TestSnapshot.test_format_traceback.<locals>.getlineztracemalloc.linecache.getline)Zside_effectr)�  File "b.py", line 4�
    <b.py, 4>�  File "a.py", line 2�
    <a.py, 2>r
)�limitr�r�r	r�r�T)�most_recent_first)r�r�r�r�)r�r�)rFr�Zmockrr�rKrZ�format)r[rDrEr��tbrrr�test_format_traceback~sB
�
����������"�z"TestSnapshot.test_format_tracebackN)r]r^r_�maxDiffr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�ls&#&		r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestFiltersr�cCs�t�dd�}|�|jd�|�|jd�|�|j�|�|jd�t�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�tjddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t	t
|dd�dS)NT�abcFztest.pyrk)�	inclusive�filename_patternr�
all_framesr�)rr�rZr�r�r�rr�r��AttributeError�setattr�r[�frrr�test_filter_attributes�s z"TestFilters.test_filter_attributescCs�t�dd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��t�dd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��t�ddd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��t�ddd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��t�ddd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��t�ddd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��dS)NTr�rr3r)�12356F)rr�r��_match_framer�rrrr�test_filter_match�sTzTestFilters.test_filter_matchcCsxdd�}|�|ddd��|�|ddd��|�|ddd��|�|ddd��|�|ddd��|�|ddd��dS)NcSst�||�}|�|d�SrO�rr�r)r�rI�patternrrrr�fnmatch��z7TestFilters.test_filter_match_filename.<locals>.fnmatchTr�rr;F)r�r��r[r
rrr�test_filter_match_filename�sz&TestFilters.test_filter_match_filenamecCs�dd�}|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd	��|�|dd
��|�|dd��|�|dd��|�|d
d��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��|�|dd��tjdkr�|�|dd��|�|dd��|�|dd��|�|dd��n |�|dd��|�|dd��|�|dd��|�|dd��tjdk�r|�|d d!��|�|d!d ��|�|d"d#��|�|d$d%��n |�|d d!��|�|d!d ��|�|d"d#��|�|d$d%��|�|d&d��dS)'NcSst�d|�}|�|d�S)NTrr)rIr	�filterrrrr
rz=TestFilters.test_filter_match_filename_joker.<locals>.fnmatchr���*Zabcd�defza*zabc*zb*zabcd*za*cZabcdcxza*cxZabbZabcdceZabcdeza*c*eZ	abcbdefegza*bd*egZabcddZ	abcbdefefza.pycr+�ntZaBCZABcZaBcDezAb*dEza.PYza.PYCza/bza\bza/b\cza\b/cza/b/cza\b\cza.pyo)r�r�r��namerrrr� test_filter_match_filename_joker�sR
z,TestFilters.test_filter_match_filename_jokercCsDd}d}d}d}tjdddd�}|�|�|��|�|�|��|�|�|��|�|�|��tjdddd�}|�|�|��|�|�|��|�|�|��|�|�|��tjdddd�}|�|�|��|�|�|��|�|�|��|�|�|��tjdddd�}|�|�|��|�|�|��|�|�|��|�|�|��tjdd	dd�}|�|�|��|�|�|��|�|�|��|�|�|��tjdd	dd�}|�|�|��|�|�|��|�|�|��|�|�|��tjdd	dd�}|�|�|��|�|�|��|�|�|��|�|�|��dS)
N)r*)r-r/)r,)r-r3))r?r3r:r9Tr-)r�Fr;)rr�r�Z_match_tracebackr�)r[�t1�t2Zt3�unknownrrrr�test_filter_match_traceDsNz#TestFilters.test_filter_match_traceN)	r]r^r_r�rrr
rrrrrrr��s4
Er�c@s�eZdZdd�Ze�e�d�dd��Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Ze�edud�dd��ZdS)�TestCommandLinecCs,d}td|�\}}}|��}|�|d�dS)N�3import tracemalloc; print(tracemalloc.is_tracing())�-c�False�r�rstriprZ�r[r�ok�stdout�stderrrrr� test_env_var_disabled_by_defaultvsz0TestCommandLine.test_env_var_disabled_by_defaultz6Cannot run -E tests when PYTHON env vars are required.cCs2d}tdd|dd�\}}}|��}|�|d�dS)zAPYTHON* environment variables must be ignored when -E is present.rz-Er�1�ZPYTHONTRACEMALLOCrNrrrrr�test_env_var_ignored_with_E}sz+TestCommandLine.test_env_var_ignored_with_EcC�0d}td|dd�\}}}|��}|�|d�dS)Nrr�0r%rrrrrr�test_env_var_disabled��z%TestCommandLine.test_env_var_disabledcCr')Nrrr$r%sTruerrrrr�test_env_var_enabled_at_startup�r*z/TestCommandLine.test_env_var_enabled_at_startupcCr')N�<import tracemalloc; print(tracemalloc.get_traceback_limit())rZ10r%s10rrrrr�test_env_limit�r*zTestCommandLine.test_env_limitcCslt���tddt|�d�\}}}Wd�n1swYd|vr&dSd|vr,dS|�d|���dS)Nr�passr%�1ValueError: the number of frames must be in ranges+PYTHONTRACEMALLOC: invalid number of frames�unexpected output: )r�SuppressCrashReportrrYr�)r[rr r!r"rrr�check_env_var_invalid�s
��z%TestCommandLine.check_env_var_invalidc	C�DtD]}|j|d��
|�|�Wd�n1swYqdS�N�r)�INVALID_NFRAME�subTestr2�r[rrrr�test_env_var_invalid�����z$TestCommandLine.test_env_var_invalidc	CsvdD]6\}}|j||d��#d}td|d|�\}}}|��}|�|t|��d��Wd�n1s3wYqdS)N))rr
)z
tracemalloc=1r
)ztracemalloc=15�)�xoptionsrr,�-Xr�ascii)r7rrrZrY�encode)r[r<rrr r!r"rrr�test_sys_xoptions�s���z!TestCommandLine.test_sys_xoptionscCsrdd|ddf}t���t|�\}}}Wd�n1swYd|vr)dSd|vr/dS|�d|���dS)Nr=ztracemalloc=%srr.r/s/-X tracemalloc=NFRAME: invalid number of framesr0)rr1rr�)r[rrTr r!r"rrr�check_sys_xoptions_invalid�s
�z*TestCommandLine.check_sys_xoptions_invalidc	Cr3r4)r6r7rAr8rrr�test_sys_xoptions_invalid�r:z)TestCommandLine.test_sys_xoptions_invalidN�need _testcapicCsd}tddd|�dS)Nz2import _testcapi; _testcapi.test_pymem_alloc0(); 1r=rr)r)r[rrrr�test_pymem_alloc0�sz!TestCommandLine.test_pymem_alloc0)r]r^r_r#r��skipIfrr&r)r+r-r2r9r@rArB�	_testcapirDrrrrrus �

rrCc@szeZdZdZdd�Zdd�Zdd�Zdd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS) �TestCAPIi@cCs>t��r	|�d�d|_d|_t|j�d|_t|j�|_dS)Nrar3rkr)	rrbrcr�r$r&rz�id�ptrrerrrrf�s
zTestCAPI.setUpcCrgrGrhrerrrrj�rNzTestCAPI.tearDowncCs&t�|j|j�}|durt�|�SdSrG)rFZtracemalloc_get_tracebackr�rIrr!)r[rrrr�
get_traceback�s
zTestCAPI.get_tracebackFr
cCs$t|d�}t�|j|j|j|�|S)Nr
)rrFZtracemalloc_trackr�rIr$)r[�release_gilrrrrr�track�s

�zTestCAPI.trackcCst�|j|j�dSrG)rFZtracemalloc_untrackr�rIrerrr�untrack�szTestCAPI.untrackcCs6t��}t�d|j�}|�|g�}tdd�|jD��S)NTcss�|]}|jVqdSrGr�)rmr�rrr�	<genexpr>�s�z-TestCAPI.get_traced_memory.<locals>.<genexpr>)rr�r�r�r�r�r�)r[rDZ
domain_filterrrrr��szTestCAPI.get_traced_memorycCsRd}t�|�t��d}|�||�}|�|��t�|��|�|��|j�dS)Nr3r)rrdr�rLrZrJr!r$)r[rKrr$rrrr�check_track�s

�zTestCAPI.check_trackcC�|�d�dS)NF�rOrerrr�
test_trackrJzTestCAPI.test_trackcCrP)NTrQrerrr�test_track_without_gil
szTestCAPI.test_track_without_gilcCs<d}t�|�|��|j|d�}|�|��t�|��dS)Nr3r5)rrdrLrZrJr!)r[rrrrr�test_track_already_trackeds

�z#TestCAPI.test_track_already_trackedcCsjt��|��|�|���|�|��|j�|��|�	|���|�|��d�|��|��dSrO)
rrdrLrrJrZr�r$rMr�rerrr�test_untrackszTestCAPI.test_untrackcCsTt��t��|�t��|��Wd�n1swY|�|���dSrG)rrdrir�r�rLr�rJrerrr�test_stop_track,s
�zTestCAPI.test_stop_trackcCsPt��|��t��|�t��
|��Wd�dS1s!wYdSrG)rrdrLrir�r�rMrerrr�test_stop_untrack4s
"�zTestCAPI.test_stop_untrackN)Fr
)r]r^r_r�rfrjrJrLrMr�rOrRrSrTrUrVrWrrrrrG�s

rG�__main__)%r�r�rrr�Z
unittest.mockrZtest.support.script_helperrrr�testrZtest.supportrrF�ImportError�	getsizeofr r6rr&rFrrKrMrPZTestCaserQr`r�r�rrErGr]�mainrrrr�<module>sL�

!8T\k�