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.7/test/__pycache__/test_tracemalloc.cpython-37.pyc
B

��g���@sBddlZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZyddl
Z
Wnek
rxdZ
YnXe�d�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Ze�e
dkd�Gdd�dej��Zdd �Ze d!k�r>e�dS)"�N)�patch)�assert_python_ok�assert_python_failure� interpreter_requires_environment)�support�cCs\g}t�d�}xDt|�D]8}|j}|j|}|�|j|f�d}|j}|dkrPqWt|�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�1/usr/local/lib/python3.7/test/test_tracemalloc.py�
get_framess

rcCs0t��}|t}t|d�}d|}|t�|�fS)Nr�x)�tracemalloc�get_traceback_limit�EMPTY_STRING_SIZEr�	Traceback)�sizerZ	bytes_lenr�datarrr�allocate_bytes!s

r"cCsDd}ddddddg}t�||�}ddddddg}t�||�}||fS)	N�)r�
))za.pyr#)zb.py�)rr#))za.py�)zb.pyr%)r#�B))zb.pyr)��))z	<unknown>r)r#r#))za.pyr&)zb.pyr%)r#i�))za.pyr&)zb.pyr%)r%i�))zc.pyiB)r�Snapshot)�traceback_limit�
raw_traces�snapshotZraw_traces2�	snapshot2rrr�create_snapshots(s r/cCst�||f�S)N)rZ_Frame)�filenamerrrrrIsrcGs
t�|�S)N)rr)rrrr�	tracebackLsr1cCst||f�S)N)r1)r0rrrr�traceback_linenoOsr2cCs
t|d�S)Nr)r2)r0rrr�traceback_filenameRsr3c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�eed�d�dd ��Zd!S)"�TestTracemallocEnabledcCs t��r|�d�t�d�dS)Nz+tracemalloc must be stopped before the testr)r�
is_tracing�skipTest�start)�selfrrr�setUpWs
zTestTracemallocEnabled.setUpcCst��dS)N)r�stop)r8rrr�tearDown]szTestTracemallocEnabled.tearDowncCsRdd�td�D�}t��}|�|d�t��t��}|�|d�|�||�dS)NcSsg|]}td��qS)�{)r")�.0�countrrr�
<listcomp>aszFTestTracemallocEnabled.test_get_tracemalloc_memory.<locals>.<listcomp>i�r)rrZget_tracemalloc_memory�assertGreaterEqual�clear_traces�assertLessEqual)r8r!r �size2rrr�test_get_tracemalloc_memory`sz2TestTracemallocEnabled.test_get_tracemalloc_memorycCs2t��d}t|�\}}t�|�}|�||�dS)Ni90)rrAr"�get_object_traceback�assertEqual)r8�obj_size�obj�
obj_tracebackr1rrr�test_get_object_tracebackjs

z0TestTracemallocEnabled.test_get_object_tracebackcCs�d}t��|�ttjd�t��t�d�t|�\}}t�|�}|�t|�d�|�||�t��t�d�t|�\}}t�|�}|�t|�d�|�||�dS)Nr$���r)	rr:�assertRaises�
ValueErrorr7r"rErF�len)r8rG�obj2�obj2_tracebackr1rHrIrrr�test_set_traceback_limitqs



z/TestTracemallocEnabled.test_set_traceback_limitcCs.x|D]}|d|jkr|SqW|�d�dS)Nr#ztrace not found)�_frames�fail)r8�tracesr1�tracerrr�
find_trace�s
z!TestTracemallocEnabled.find_tracec	Csxt��d}t|�\}}t��}|�||�}|�|t�|\}}}|�||�|�||j�t�	�|�t��g�dS)Ni90)
rrAr"�_get_tracesrVZassertIsInstancerrFrRr:)	r8rGrHrIrTrU�domainr r1rrr�test_get_traces�s
z&TestTracemallocEnabled.test_get_tracescs�dd���fdd���fdd�}t��t�d�d}||�\}}||�\}}t��}tt|j��|_tt|j��|_|�||�}|�||�}	|\}
}}|	\}
}}|�||�dS)	NcSst|�S)N)r")r rrr�allocate_bytes2�szPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes2cs�|�S)Nr)r )rZrr�allocate_bytes3�szPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes3cs�|�S)Nr)r )r[rr�allocate_bytes4�szPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes4r%r<)	rr:r7rWr�reversedrRrVZassertIs)r8r\rGZobj1Zobj1_tracebackrOrPrTZtrace1Ztrace2Zdomain1Zsize1Z
traceback1Zdomain2rC�
traceback2r)rZr[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)Nii)rr)	rrAr"�get_traced_memoryr@rBZ
assertLessrFr:)	r8Z	max_errorrGrHrIr Z	peak_sizerCZ
peak_size2rrr�test_get_traced_memory�s*z-TestTracemallocEnabled.test_get_traced_memorycCs@td�\}}t�|�}|�|�t��t�|�}|�|�dS)Nr<)r"rrE�assertIsNotNonerA�assertIsNone)r8rHrIr1r^rrr�test_clear_traces�s


z(TestTracemallocEnabled.test_clear_tracescCs0t��|�t���t��|�t���dS)N)rr:�assertFalser5r7�
assertTrue)r8rrr�test_is_tracing�sz&TestTracemallocEnabled.test_is_tracingc	Cs�td�\}}t��}|�tj�|�tjtj�tj�	tj�}|�
|j|j�t��|�
t��}t��WdQRX|�
t|j�d�dS)Nr<zLthe tracemalloc module must be tracing memory allocations to take a snapshot)r"r�
take_snapshot�dumpr�TESTFN�
addCleanup�unlinkr*�loadrFrTr:rL�RuntimeError�strZ	exception)r8rH�sourcer-r.�cmrrr�
test_snapshot�sz$TestTracemallocEnabled.test_snapshotcCsJt��}d|_|�tj�|�tjtj�tj�	tj�}|�
|jd�dS)N�new)rrhZ	test_attrrirrjrkrlr*rmrF)r8r-r.rrr�test_snapshot_save_attrsz.TestTracemallocEnabled.test_snapshot_save_attrcCs6t��sdSd}t|�\}}t�|�}|dkr2dSdS)Nr#i90r(r)rr5r"rE)r8rGrHrIr1rrr�
fork_childs
z!TestTracemallocEnabled.fork_child�forkzneed os.fork()c	Csft��}|s,d}z|��}Wdt�|�Xn6t�|d�\}}|�t�|��t�|�}|�|d�dS)Nrr)	�osrvru�_exit�waitpidrf�	WIFEXITED�WEXITSTATUSrF)r8�pidZexitcodeZpid2�statusrrr�	test_forks
z TestTracemallocEnabled.test_forkN)�__name__�
__module__�__qualname__r9r;rDrJrQrVrYr_rardrgrrrtru�unittestZ
skipUnless�hasattrrwr~rrrrr4Vs
$	
r4c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestSnapshoti�c	Cs�dg}t����}|�tjtddd��|�tjtddd��|�tjtd|d��t��}|�|jd�|�t	|j
�d�|j
d	}|�|jd�|�t	|j�d�|�|jd	j
d
�|�|jd	jd�WdQRXdS)N)rr&))za.pyr#r5T)Zreturn_valuerr&rWrrza.pyr#)�
contextlib�	ExitStack�
enter_contextr�objectrrhrFr+rNrTr r1r0r)r8r,�stackr-rUrrr�test_create_snapshot.s 




z!TestSnapshot.test_create_snapshotc
Cs�t�\}}t�dd�}t�ddd�}t�ddd�}t|jj�}|�|f�}|�|jjddddd	g�|�|jj|�|�||f�}|�|jjddddg�|�d
�}	|�|	|�|�|	j|j�|�|	j|j�|�	t
|j|�dS)NFzb.pyTza.pyr#r&)rr$))za.pyr#)zb.pyr%)rr#))za.pyr&)zb.pyr%)r(r)))z	<unknown>rr)r/r�Filter�listrT�_traces�
filter_tracesrFZassertIsNotrL�	TypeError)
r8r-r.�filter1�filter2Zfilter3�original_traces�	snapshot3Z	snapshot4Z	snapshot5rrr�test_filter_tracesBs0



zTestSnapshot.test_filter_tracescCs�t�\}}tjdddd�}tjdddd�}t|jj�}|�|f�}|�|jjdddddg�|�|f�}|�|jjdddddg�dS)	NFza.pyr)rXT)rr$))za.pyr#)zb.pyr%)r#r'))zb.pyr)r(r)))z	<unknown>r)r/rr�r�rTr�r�rF)r8r-r.r�r�r�r�rrr�test_filter_traces_domainhs$


z&TestSnapshot.test_filter_traces_domaincCsnt�\}}tjddd�}tjddd�}|�|f�}|�|jjdddddg�|�|f�}|�|jjdg�dS)	NFr()rXT)rr$))za.pyr#)zb.pyr%)rr#))za.pyr&)zb.pyr%)r#r'))zb.pyr)r(r)))z	<unknown>r)r/r�DomainFilterr�rFrTr�)r8r-r.r�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)Nz	<unknown>rza.pyr#r&zb.pyrzc.pyiBrr'�r(r)i�i�i�i����rKi����)r/r2�
statisticsrFr�	Statistic�
compare_to�
StatisticDiff)r8r-r.�tb_0�tb_a_2�tb_a_5�tb_b_1Ztb_c_578�stats1�stats2r�rrr�test_snapshot_group_by_line�s0







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)Nz	<unknown>za.pyzb.pyzc.pyr0r'r� r%r)i�r&i�i�ri����rKi����)r/r3r�rFrr�r�r�)
r8r-r.r��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)N)za.pyr#)zb.pyr%)za.pyr&)zb.pyr)z	<unknown>rr1r'rr�r(r)r#)zc.pyiBi�i�i�ri����rKi����T)Z
cumulative)
r/r1r�rFrr�r�r�rLrM)r8r-r.Ztb1Ztb2Ztb3Ztb4r�Ztb5r�r�rrr� test_snapshot_group_by_traceback�s4




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)Nz	<unknown>za.pyzb.pyr#r&rr%r0T�br�r)rr'r�r()r/r3r2r�rFrr�)r8r-r.r�r�r�r�r�r�Ztb_b_4�statsrrr�!test_snapshot_group_by_cumulatives(




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)r/rTrFror1)r8r-r.rUr1rrrr�test_trace_formats

zTestSnapshot.test_trace_formatcCs0t�\}}|�d�}|d}|�t|�d�dS)Nrrz(b.py:1: size=66 B, count=1, average=66 B)r/r�rFro)r8r-r.r��statrrr�test_statistic_format%s



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)r/r�rFro)r8r-r.r�r�rrr�test_statistic_diff_format,s


z'TestSnapshot.test_statistic_diff_formatcCs`t�\}}|�|jdd�|jd|jdf�|jdj}|�|dd�|d|df�dS)Nr#rr)r/rFrTr1)r8r-r.r1rrr�test_slices3s
zTestSnapshot.test_slicesc	Cs�t�\}}dd�}tjjd|d���|jdj}|�|��dddd	g�|�|jd
d�dd	g�|�|jdd�ddg�|�|jd
d�dd	ddg�|�|jd
d
d�dd	g�|�|jdd
d�ddg�WdQRXdS)NcSsd||fS)Nz
  <%s, %s>r)r0rrrr�getline>sz3TestSnapshot.test_format_traceback.<locals>.getlineztracemalloc.linecache.getline)Zside_effectrz  File "b.py", line 4z
    <b.py, 4>z  File "a.py", line 2z
    <a.py, 2>r)�limitrKT)�most_recent_first)r�r�)r/r�ZmockrrTr1rF�format)r8r-r.r��tbrrr�test_format_traceback<s6


z"TestSnapshot.test_format_tracebackN)rr�r��maxDiffr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�+s&#&		r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestFiltersicCs�t�dd�}|�|jd�|�|jd�|�|j�|�|jd�t�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�tjddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�t	t
|dd�dS)NT�abcFztest.pyr<)�	inclusive�filename_patternr�
all_framesr�)rr�rFr�r�rcrr�rL�AttributeError�setattr)r8�frrr�test_filter_attributescs 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�rr&r$�12356F)rr�rf�_match_framere)r8r�rrr�test_filter_match|sTzTestFilters.test_filter_matchcCsxdd�}|�|ddd��|�|ddd��|�|ddd��|�|ddd��|�|ddd��|�|ddd��dS)NcSst�||�}|�|d�S)Nr)rr�r�)r�r0�patternr�rrr�fnmatch�sz7TestFilters.test_filter_match_filename.<locals>.fnmatchTr�r�z	<unknown>F)rfre)r8r�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��tjdk�r�|�|dd��|�|dd��|�|dd��|�|dd��n@|�|dd��|�|dd��|�|dd��|�|dd��tjdk�r4|�|d d!��|�|d!d ��|�|d"d#��|�|d$d%��n@|�|d d!��|�|d!d ��|�|d"d#��|�|d$d%��|�|d&d��dS)'NcSst�d|�}|�|d�S)NTr)rr�r�)r0r��filterrrrr��sz=TestFilters.test_filter_match_filename_joker.<locals>.fnmatchr���*Zabcd�defza*zabc*zb*zabcd*za*cZabcdcxza*cxZabbZabcdceZabcdeza*c*eZ	abcbdefegza*bd*egZabcddZ	abcbdefefza.pycza.py�ntZaBCZABcZaBcDezAb*dEza.PYza.PYCza/bza\bza/b\cza\b/cza/b/cza\b\cza.pyo)rerfrw�name)r8r�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))za.pyr#)zb.pyr())zb.pyr%)zb.pyr&))zc.pyr&)z	<unknown>r))z	<unknown>rTzb.py)r�Fz	<unknown>)rr�rfZ_match_tracebackre)r8Zt1Zt2Zt3�unknownr�rrr�test_filter_match_tracesNz#TestFilters.test_filter_match_traceN)	rr�r�r�r�r�r�r�r�rrrrr�`s4
Er�c@szeZdZdd�Ze�e�d�dd��Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Ze�edkd�dd��ZdS)�TestCommandLinecCs,d}td|�\}}}|��}|�|d�dS)Nz3import tracemalloc; print(tracemalloc.is_tracing())z-csFalse)r�rstriprF)r8r�ok�stdout�stderrrrr� test_env_var_disabled_by_default4sz0TestCommandLine.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.z3import tracemalloc; print(tracemalloc.is_tracing())z-Ez-c�1)�PYTHONTRACEMALLOCsFalseN)rr�rF)r8rr�r�r�rrr�test_env_var_ignored_with_E;sz+TestCommandLine.test_env_var_ignored_with_EcCs0d}td|dd�\}}}|��}|�|d�dS)Nz3import tracemalloc; print(tracemalloc.is_tracing())z-cr�)r�sTrue)rr�rF)r8rr�r�r�rrr�test_env_var_enabled_at_startupDsz/TestCommandLine.test_env_var_enabled_at_startupcCs0d}td|dd�\}}}|��}|�|d�dS)Nz<import tracemalloc; print(tracemalloc.get_traceback_limit())z-cZ10)r�s10)rr�rF)r8rr�r�r�rrr�test_env_limitKszTestCommandLine.test_env_limitc	CsXt���tddt|�d�\}}}WdQRXd|kr8dSd|krDdS|�d|���dS)Nz-c�pass)r�s1ValueError: the number of frames must be in ranges+PYTHONTRACEMALLOC: invalid number of frameszunexpeced output: )r�SuppressCrashReportrrorS)r8rr�r�r�rrr�check_env_var_invalidRs
z%TestCommandLine.check_env_var_invalidc
Cs4x.dD]&}|j|d��|�|�WdQRXqWdS)N)rKri@)r)�subTestr�)r8rrrr�test_env_var_invalid_s
z$TestCommandLine.test_env_var_invalidc
Csfx`dD]X\}}|j||d��<d}td|d|�\}}}|��}|�|t|��d��WdQRXqWdS)N))rr)z
tracemalloc=1r)ztracemalloc=15�)�xoptionsrz<import tracemalloc; print(tracemalloc.get_traceback_limit())z-Xz-c�ascii)r�rr�rFro�encode)r8r�rrr�r�r�rrr�test_sys_xoptionsdsz!TestCommandLine.test_sys_xoptionsc	Cs^dd|ddf}t���t|�\}}}WdQRXd|kr>dSd|krJdS|�d|���dS)Nz-Xztracemalloc=%sz-cr�s1ValueError: the number of frames must be in ranges/-X tracemalloc=NFRAME: invalid number of frameszunexpeced output: )rr�rrS)r8r�argsr�r�r�rrr�check_sys_xoptions_invalidps
z*TestCommandLine.check_sys_xoptions_invalidc
Cs4x.dD]&}|j|d��|�|�WdQRXqWdS)N)rKri@)r)r�r�)r8rrrr�test_sys_xoptions_invalid{s
z)TestCommandLine.test_sys_xoptions_invalidNzneed _testcapicCsd}tddd|�dS)Nz2import _testcapi; _testcapi.test_pymem_alloc0(); 1z-Xrz-c)r)r8rrrr�test_pymem_alloc0�sz!TestCommandLine.test_pymem_alloc0)rr�r�r�r��skipIfrr�r�r�r�r�r�r�r��	_testcapir�rrrrr�3s
r�zneed _testcapic@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)Nz+tracemalloc must be stopped before the testr&r<r)	rr5r6rXr r"rH�id�ptr)r8rrrr9�s
zTestCAPI.setUpcCst��dS)N)rr:)r8rrrr;�szTestCAPI.tearDowncCs*t�|j|j�}|dk	r"t�|�SdSdS)N)r�Ztracemalloc_get_tracebackrXr�rr)r8rrrr�
get_traceback�s
zTestCAPI.get_tracebackFrcCs$t|d�}t�|j|j|j|�|S)Nr#)rr�Ztracemalloc_trackrXr�r )r8�release_gilrrrrr�track�s
zTestCAPI.trackcCst�|j|j�dS)N)r�Ztracemalloc_untrackrXr�)r8rrr�untrack�szTestCAPI.untrackcCs6t��}t�d|j�}|�|g�}tdd�|jD��S)NTcss|]}|jVqdS)N)r )r=rUrrr�	<genexpr>�sz-TestCAPI.get_traced_memory.<locals>.<genexpr>)rrhr�rXr��sumrT)r8r-Z
domain_filterrrrr`�szTestCAPI.get_traced_memorycCsRd}t�|�t��d}|�||�}|�|��t�|��|�|��|j�dS)Nr&r)rr7r`r�rFr�rr )r8r�rr rrrr�check_track�s

zTestCAPI.check_trackcCs|�d�dS)NF)r�)r8rrr�
test_track�szTestCAPI.test_trackcCs|�d�dS)NT)r�)r8rrr�test_track_without_gil�szTestCAPI.test_track_without_gilcCs<d}t�|�|��|j|d�}|�|��t�|��dS)Nr&)r)rr7r�rFr�r)r8rrrrr�test_track_already_tracked�s

z#TestCAPI.test_track_already_trackedcCsjt��|��|�|���|�|��|j�|��|�	|���|�|��d�|��|��dS)Nr)
rr7r�rbr�rFr`r r�rc)r8rrr�test_untrack�szTestCAPI.test_untrackc	Cs@t��t��|�t��|��WdQRX|�|���dS)N)rr7r:rLrnr�rcr�)r8rrr�test_stop_track�s
zTestCAPI.test_stop_trackc	Cs:t��|��t��|�t��|��WdQRXdS)N)rr7r�r:rLrnr�)r8rrr�test_stop_untrack�s
zTestCAPI.test_stop_untrackN)Fr)rr�r�r�r9r;r�r�r�r`r�r�r�r�r�r�r�rrrrr��s

r�cCst�ttttt�dS)N)rZrun_unittestr4r�r�r�r�rrrr�	test_main�sr��__main__)!r�rwr	rr�Z
unittest.mockrZtest.support.script_helperrrrZtestrr��ImportError�	getsizeofrrr"r/rr1r2r3ZTestCaser4r�r�r�r�r�r�rrrrr�<module>s@


!V7TU
k