Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/test_gc.cpython-310.pyc
o

�9j���@s�ddlZddlZddlmZmZmZddlmZddlm	Z	m
Z
mZddlm
Z
mZddlmZddlZddlZddlZddlZddlZddlZddlZzddlmZWn
eyadd	�ZYnwzdd
lmZWneyudZYnwGdd�de�ZGd
d�de�ZeGdd�de��Ze��� dd�r�de��dvZ!ne"ed�Z!Gdd�dej#�Z$Gdd�dej#�Z%Gdd�dej#�Z&Gdd�dej#�Z'dd�Z(dd �Z)e*d!kr�e�+�dSdS)"�N)�verbose�
refcount_test�cpython_only)�
import_module)�temp_dir�TESTFN�unlink)�assert_python_ok�make_script)�threading_helper)�with_tp_delcCsGdd�dt�}|S)Nc@�eZdZdd�ZdS)zwith_tp_del.<locals>.Cc_std��)Nzrequires _testcapi.with_tp_del)�	TypeError)�cls�args�kwargs�r�#/usr/lib/python3.10/test/test_gc.py�__new__szwith_tp_del.<locals>.C.__new__N)�__name__�
__module__�__qualname__rrrrr�C�r)�object)rrrrrrsr)�
ContainerNoGCc@r
)�C1055820cCs||_||_dS�N)�i�loop)�selfrrrr�__init__)s
zC1055820.__init__N�rrrr!rrrrr(rrc@r
)�GC_Detectorcs(d�_�fdd�}t�td�|��_dS)NFcs
d�_dS)NT)�gc_happened��ignored�r rr�it_happened4�
z)GC_Detector.__init__.<locals>.it_happened�)r$�weakref�refr�wr)r r(rr'rr!1szGC_Detector.__init__Nr"rrrrr#-sr#c@s"eZdZdZddd�Zdd�ZdS)�
Uncollectablea)Create a reference cycle with multiple __del__ methods.

    An object in a reference cycle will never have zero references,
    and so must be garbage collected.  If one or more objects in the
    cycle have __del__ methods, the gc refuses to guess an order,
    and leaves the cycle uncollected.NcCs"|durt|d�|_dS||_dS)N)�partner)r.r/)r r/rrrr!Cs
zUncollectable.__init__cC�dSrrr'rrr�
__tp_del__HszUncollectable.__tp_del__r)rrr�__doc__r!r1rrrrr.;s
r.�	PY_CFLAGS�z-DNDEBUG�gettotalrefcountc@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
edd��Zedd��Z
dd�Zedd��Zdd�Zdd�Zdd�Zedd ��Zed!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z ed9d:��Z!d;d<�Z"d=d>�Z#d?d@�Z$dAdB�Z%dCdD�Z&dEdF�Z'dGdH�Z(dIdJ�Z)dKdL�Z*dMdN�Z+e,�-e.dOudP�dQdR��Z/dOS)S�GCTestscCs,g}|�|�t��~|�t��d�dS�N���append�gc�collect�assertEqual)r �lrrr�	test_listWs

zGCTests.test_listcCs*i}||d<t��~|�t��d�dSr7�r;r<r=�r �drrr�	test_dict^s
zGCTests.test_dictcCs4g}|f}|�|�t��~~|�t��d�dS)N�r9)r r>�trrr�
test_tuplees
zGCTests.test_tuplecCs2Gdd�d�}||_t��~|�t��d�dS)Nc@�eZdZdS)zGCTests.test_class.<locals>.AN�rrrrrrr�Ap�rIr��ar;r<�assertNotEqual�r rIrrr�
test_classos
zGCTests.test_classcCs.Gdd�dt�}t��~|�t��d�dS)Nc@rG)z%GCTests.test_newstyleclass.<locals>.ANrHrrrrrIxrJrIr)rr;r<rMrNrrr�test_newstyleclasswszGCTests.test_newstyleclasscCs8Gdd�d�}|�}||_t��~|�t��d�dS)Nc@rG)z GCTests.test_instance.<locals>.ANrHrrrrrIrJrIrrK�r rIrLrrr�
test_instance~szGCTests.test_instancecCs�Gdd�dt�}|�}||_t��~|�t��d�Gdd�dt�}Gdd�d||�}|�}||_t��~|�t��d�~~|�t��d�|�|_~|�t��d�|�t��d�dS)Nc@rG)z#GCTests.test_newinstance.<locals>.ANrHrrrrrI�rJrIrc@rG)z#GCTests.test_newinstance.<locals>.BNrHrrrr�B�rJrSc@rG)z#GCTests.test_newinstance.<locals>.CNrHrrrrr�rJr)rrLr;r<rM�listr=)r rIrLrSrrrr�test_newinstance�s&zGCTests.test_newinstancecCs2Gdd�d�}|�}t��~|�t��d�dS)Nc@r
)zGCTests.test_method.<locals>.AcSs|j|_dSr)r!�initr'rrrr!��z'GCTests.test_method.<locals>.A.__init__Nr"rrrrrI�rrIr)r;r<rMrQrrr�test_method�s
zGCTests.test_methodcCs�tGdd�d��}Gdd�d�}|�}||_t|�}|�}||_t��~~|�t��d�tjD]}t|�|kr=|`nq1|�d�tj�	|�dS)Nc@r
)z(GCTests.test_legacy_finalizer.<locals>.AcSr0rrr'rrrr1��z3GCTests.test_legacy_finalizer.<locals>.A.__tp_del__N�rrrr1rrrrrI��rIc@rG)z(GCTests.test_legacy_finalizer.<locals>.BNrHrrrrrS�rJrSr�&didn't find obj in garbage (finalizer))
rrL�id�br;r<rM�garbage�fail�remove�r rIrSrL�id_ar^�objrrr�test_legacy_finalizer�s&
�
zGCTests.test_legacy_finalizercCs�tGdd�dt��}Gdd�dt�}|�}||_t|�}|�}||_t��~~|�t��d�tjD]}t|�|kr?|`nq3|�	d�tj�
|�dS)Nc@r
)z1GCTests.test_legacy_finalizer_newclass.<locals>.AcSr0rrr'rrrr1�rYz<GCTests.test_legacy_finalizer_newclass.<locals>.A.__tp_del__NrZrrrrrI�r[rIc@rG)z1GCTests.test_legacy_finalizer_newclass.<locals>.BNrHrrrrrS�rJrSrr\)rrrLr]r^r;r<rMr_r`rarbrrr�test_legacy_finalizer_newclass�s&
�
z&GCTests.test_legacy_finalizer_newclasscCs,i}td|�t��~|�t��d�dS)Nzdef f(): pass
rD)�execr;r<r=rArrr�
test_function�s

zGCTests.test_functioncCs*dd�}t��|�|�t��d�dS)NcSst��}dSr)�sys�	_getframe)�framerrr�f�rWzGCTests.test_frame.<locals>.fr8r@)r rlrrr�
test_frame�szGCTests.test_framecCs�t��|�tjg�g}|�|�t|�}t��}t�|tjB�~t��t�|�|�t	tj�d�tj�
�}|�t|�|�dSr7)r;r<r=r_r:r]�	get_debug�	set_debug�
DEBUG_SAVEALL�len�pop)r �L�id_L�debugrdrrr�test_saveall�s


zGCTests.test_saveallcCsFt��}t��t�d�Gdd�d�}|�}~t��tj|�dS)Nr8c@r
)zGCTests.test_del.<locals>.AcS�t|�dSr��dirr'rrr�__del__
rWz#GCTests.test_del.<locals>.A.__del__N�rrrrzrrrrrIrrI)r;�
get_threshold�enable�
set_threshold�disable�r �
thresholdsrIrLrrr�test_dels
zGCTests.test_delcCsHt��}t��t�d�Gdd�dt�}|�}~t��tj|�dS)Nr8c@r
)z$GCTests.test_del_newclass.<locals>.AcSrwrrxr'rrrrzrWz,GCTests.test_del_newclass.<locals>.A.__del__Nr{rrrrrIrrI)r;r|r}r~rrr�rrr�test_del_newclasss
zGCTests.test_del_newclasscCsdt��t��\}}}g}t��\}}}|�||fd�|�||fd�|�|d�|�||�dS)N�rr�)r;r<�	get_countr=�
assertLess�
assertGreater)r rLr^�c�xrB�erlrrr�test_get_count*szGCTests.test_get_countcCs�t��g}t�d�t��\}}}t�d�t��\}}}t�d�t��\}}	}
|�||fd�|�||fd�|�|	|
fd�dS)Nrr8rD)r8r)rr8r�)r;r<r�r=)r r�rLr^r�rBr�rl�g�hrrrr�test_collect_generations8s


z GCTests.test_collect_generationscs�G�fdd�d��t��d}td�D]-}g}t|�D]}|��g}qg}t|�D]}|��g}q)i}t|�D]}|��d�}q7qt��dS)NcseZdZdZ�fdd�ZdS)z#GCTests.test_trashcan.<locals>.Ouchrcs*�jd�_�jddkrt��dSdS)Nr8�r)�nr;r<r'��OuchrrrzPs�z+GCTests.test_trashcan.<locals>.Ouch.__del__N)rrrr�rzrr�rrr�Nsr��rD)r8rD)r;r}�ranger)r �N�countrEr�u�vrr�r�
test_trashcanMs�zGCTests.test_trashcanc	s�d�d}dd��G��fdd�dt����fdd����fd	d
�}t��}t�d�z<g�g}t|�D]
}tj|d�}|�|�q3t�	|�fd
d���
t
�d�Wd�n1s[wYWt�|�nt�|�wt�
�|�t�j�t�j��dS)N�<rDc	ss&�zdVWt�d�dSt�d�w)z<A generator that releases the GIL when closed or dealloc'ed.Ng���ư>)�time�sleeprrrr�sleeper_genus�z2GCTests.test_trashcan_threads.<locals>.sleeper_gencs.eZdZgZgZ�fdd�Z��fdd�ZdS)z(GCTests.test_trashcan_threads.<locals>.Ccs||dd�<�j�d�dSr)�initsr:)r �alist)rrrr!��z1GCTests.test_trashcan_threads.<locals>.C.__init__cs�j�d���}t|�dSr)�delsr:�next)r r��rr�rrrz�sz0GCTests.test_trashcan_threads.<locals>.C.__del__N)rrrr�r�r!rzrr�rrr|s
rcs(�g�}t��D]}�|g�g}q~dS)zyCreate a sufficiently nested container object so that the
            trashcan mechanism is invoked when deallocating it.N)r�)r�r)r�NESTINGrr�make_nested�sz2GCTests.test_trashcan_threads.<locals>.make_nestedcs�s	���rdSdS)z!Exercise make_nested() in a loop.Nrr)�exitr�rr�
run_thread�s�z1GCTests.test_trashcan_threads.<locals>.run_threadg�h㈵��>)�targetcs
��d�Sr7�r:r)r�rr�<lambda>�s
z/GCTests.test_trashcan_threads.<locals>.<lambda>��?)rTri�getswitchinterval�setswitchintervalr��	threading�Threadr:r�
start_threadsr�r�r;r<r=rqr�r�)r �	N_THREADSr��old_switchinterval�threadsrrEr)rr�r�r�r�r�test_trashcan_threadsps*
��zGCTests.test_trashcan_threadscC�bGdd�d�}|�}|�}||_||_t��ttj�}~~|�t��d�|�ttj�|�dS)Nc@r
)zGCTests.test_boom.<locals>.BoomcS�|`t�r��attr�AttributeError�r �
someattributerrr�__getattr__��z+GCTests.test_boom.<locals>.Boom.__getattr__N�rrrr�rrrr�Boom�rr���r�r;r<rqr_r=)r r�rLr^�
garbagelenrrr�	test_boom�s
zGCTests.test_boomcCr�)Nc@�eZdZdd�Zdd�ZdS)z!GCTests.test_boom2.<locals>.Boom2cS�
d|_dS�Nr�r�r'rrrr!�r)z*GCTests.test_boom2.<locals>.Boom2.__init__cS� |jd7_|jdkr|`t�r7�r�r�r�r�rrrr���
z-GCTests.test_boom2.<locals>.Boom2.__getattr__N�rrrr!r�rrrr�Boom2��r�r�r�)r r�rLr^r�rrr�
test_boom2�s

zGCTests.test_boom2cC�dGdd�dt�}|�}|�}||_||_t��ttj�}~~|�t��d�|�ttj�|�dS)Nc@r
)z'GCTests.test_boom_new.<locals>.Boom_NewcSr�rr�r�rrrr��r�z3GCTests.test_boom_new.<locals>.Boom_New.__getattr__Nr�rrrr�Boom_New�rr�r��rr�r;r<rqr_r=)r r�rLr^r�rrr�
test_boom_new�s
zGCTests.test_boom_newcCr�)Nc@r�)z)GCTests.test_boom2_new.<locals>.Boom2_NewcSr�r�r�r'rrrr!�r)z2GCTests.test_boom2_new.<locals>.Boom2_New.__init__cSr�r7r�r�rrrr��r�z5GCTests.test_boom2_new.<locals>.Boom2_New.__getattr__Nr�rrrr�	Boom2_New�r�r�r�r�)r r�rLr^r�rrr�test_boom2_new�s

zGCTests.test_boom2_newcCs�gd�}t�|�}|��|�||�t|�}t�|�}|��|�||�ddd�}gd�}t�|�}|��|�||�t�ddgddid	�}|��|�|d
d
gttd���|�t�ddd
�g�dS)N)r8�r�r��)r8r�)r8r�r�r�r8rDr�)rrrrr�rLy@)r;�
get_referents�sortr=�tuplerTr�)r r��got�atuple�adict�expectedrrr�test_get_referentss"



zGCTests.test_get_referentscCs�|�t�d��|�t�d��|�t�d��|�t�d��|�t�d��|�t�d��|�t�d��|�t�d��|�t�td���|�t�t��|�t�t��|�t�t��|�t�t���Gdd	�d	�}Gd
d�dt�}Gdd
�d
�}Gdd�dt�}Gdd�dt�}|�t�t��|�t�|��|�t�|���|�t�|���|�t�g��|�t�t	���|�t�|���|�t�|���|�t�|���dS)Nr8r�y�?@TF�arLc@rG)z*GCTests.test_is_tracked.<locals>.UserClassNrHrrrr�	UserClass1rJr�c@rG)z(GCTests.test_is_tracked.<locals>.UserIntNrHrrrr�UserInt4rJr�c@�eZdZdZdS)z/GCTests.test_is_tracked.<locals>.UserClassSlotsrN�rrr�	__slots__rrrr�UserClassSlots8�r�c@r�)z/GCTests.test_is_tracked.<locals>.UserFloatSlotsrNr�rrrr�UserFloatSlots<r�r�c@r�)z-GCTests.test_is_tracked.<locals>.UserIntSlotsrNr�rrrr�UserIntSlots@r�r�)
�assertFalser;�
is_tracked�	bytearray�type�intr�float�
assertTrue�set)r r�r�r�r�r�rrr�test_is_trackeds6zGCTests.test_is_trackedcsb|�t�d��g�G�fdd�d�}|�}|�t�|��~t�����}|�t�|��dS)Nr�c�eZdZ�fdd�ZdS)z*GCTests.test_is_finalized.<locals>.Lazarusc���|�dSrr�r'��storagerrrzS�z2GCTests.test_is_finalized.<locals>.Lazarus.__del__Nr{rr�rr�LazarusR�r�)r�r;�is_finalizedr<rrr�)r r��lazarusrr�r�test_is_finalizedMszGCTests.test_is_finalizedcs�g���fdd��dd�td�D�}�fdd�|D��d}t��|�t��d�d}t��|�t��d��D]}|�|d�q9dS)Ncsdd��D��dd�<dS)NcSsg|]}|��qSrr)�.0r-rrr�
<listcomp>dsz>GCTests.test_bug1055820b.<locals>.callback.<locals>.<listcomp>rr%)�WRs�ouchrr�callbackc�z*GCTests.test_bug1055820b.<locals>.callbackcSsg|]}t|��qSr)r�r�rrrrr�f�z,GCTests.test_bug1055820b.<locals>.<listcomp>rDcsg|]}t�|���qSr)r+r,)r�r�)rrrr�g�r)r�r;r<r=rq)r �Csr�r�r)r�rrr�test_bug1055820b_s�zGCTests.test_bug1055820bcsDt��Gdd�d��Gdd�d����fdd�}|�t��dS)Nc@rG)z GCTests.test_bug21435.<locals>.ANrHrrrrrI�rJrIc@r�)z GCTests.test_bug21435.<locals>.BcSs
||_dSrr�)r r�rrrr!�r)z)GCTests.test_bug21435.<locals>.B.__init__cSs
d|_dSr�r�r'rrrrz�r)z(GCTests.test_bug21435.<locals>.B.__del__N)rrrr!rzrrrrrS�r�rScs ��}����}||_||_dSrr)rLr^�rIrSrr�do_work�s

z&GCTests.test_bug21435.<locals>.do_work)r;r<)r r
rr	r�
test_bug21435ws
zGCTests.test_bug21435cs�ddl�d}��fdd�}||d�}��d|���d|�||d�}��d	|���d
|vp4d|v|�||d�}��d
|�dS)Nra�if 1:
            import gc
            import _testcapi
            @_testcapi.with_tp_del
            class X:
                def __init__(self, name):
                    self.name = name
                def __repr__(self):
                    return "<X %%r>" %% self.name
                def __tp_del__(self):
                    pass

            x = X('first')
            x.x = x
            x.y = X('second')
            del x
            gc.set_debug(%s)
        cs\�jtjdd|g�j�jd�}|��\}}|j��|j����|j	d���|d�|S)Nz-Wd�-c��stdout�stderrr�)
�Popenri�
executable�PIPE�communicater�closerr=�
returncode)�code�prr�r �
subprocessrr�run_command�s�

z5GCTests.test_garbage_at_shutdown.<locals>.run_command�0s=ResourceWarning: gc: 2 uncollectable objects at shutdown; uses<X 'first'>zgc.DEBUG_UNCOLLECTABLEs8ResourceWarning: gc: 2 uncollectable objects at shutdowns[<X 'first'>, <X 'second'>]s[<X 'second'>, <X 'first'>]zgc.DEBUG_SAVEALLs!uncollectable objects at shutdown)r�assertIn�assertNotInr�)r rrrrrr�test_garbage_at_shutdown�s$���z GCTests.test_garbage_at_shutdowncCs(d}td|�\}}}|�|��d�dS)Nz�if 1:
            class C:
                def __del__(self):
                    print('__del__ called')
            l = [C()]
            l.append(l)
            r�__del__ called)r	r=�strip)r r�rc�out�errrrr�test_gc_main_module_at_shutdown�sz'GCTests.test_gc_main_module_at_shutdowncCsft��&}d}d|f}t|d|�td|�\}}}|�|��d�Wd�dS1s,wYdS)Nz�if 1:
                class C:
                    def __del__(self):
                        print('__del__ called')
                l = [C()]
                l.append(l)
                zvif 1:
                import sys
                sys.path.insert(0, %r)
                import gctest
                �gctestrr )rr
r	r=r!)r �
script_dir�modulerr"r#r$rrr�#test_gc_ordinary_module_at_shutdown�s�"�z+GCTests.test_gc_ordinary_module_at_shutdowncCsjd}|�tt�ttddd��
}|�|�Wd�n1swYtt�\}}}|�|��d�dS)Nz�if 1:
            class ClassWithDel:
                def __del__(self):
                    print('__del__ called')
            a = ClassWithDel()
            a.link = a
            raise SystemExit(0)�wzutf-8)�encodingr )�
addCleanuprr�open�writer	r=r!)r r�scriptr"r#r$rrr�test_global_del_SystemExit�s�z"GCTests.test_global_del_SystemExitcCsrt��}|�t|�d�|D]*}|�|t�|�t|�hd��|�|dd�|�|dd�|�|dd�qt��rG|�	tj
�t��t��}t�d�t��}|�|dd|ddd�|�|dd|dd�|�|dd|dd�t�d�t��}|�|dd|ddd�|�|dd|dd�|�|dd|ddd�dS)	Nr�>�	collected�collections�
uncollectabler1rr2r3r8rD)
r;�	get_statsr=rq�assertIsInstance�dictr��assertGreaterEqual�	isenabledr,r}rr<)r �stats�st�old�newrrr�test_get_stats�s0
�
 
 $zGCTests.test_get_statscCs4t��|�t��d�t��|�t��d�dSr�)r;�freezer��get_freeze_count�unfreezer=r'rrr�test_freezeszGCTests.test_freezecs�t��g�����|�t�fdd�tjdd�D���|�t�fdd�tjdd�D���|�t�fdd�tjdd�D���tjdd�|�t�fd	d�tjdd�D���|�t�fd
d�tjdd�D���|�t�fdd�tjdd�D���tjdd�|�t�fdd�tjdd�D���|�t�fd
d�tjdd�D���|�t�fdd�tjdd�D���tjdd�|�t�fdd�tjdd�D���|�t�fdd�tjdd�D���|�t�fdd�tjdd�D����t��dS)Nc3��|]}�|uVqdSrr�r��element�r>rr�	<genexpr>��z+GCTests.test_get_objects.<locals>.<genexpr>r��
generationc3rBrrrCrErrrFrGr8c3rBrrrCrErrrF!rGrDc3rBrrrCrErrrF%rGc3rBrrrCrErrrF(rGc3rBrrrCrErrrF+rGc3rBrrrCrErrrF/rGc3rBrrrCrErrrF2rGc3rBrrrCrErrrF5rGc3rBrrrCrErrrF9rGc3rBrrrCrErrrF<rGc3rBrrrCrErrrF?rG)r;r<r:r��any�get_objectsr�r'rrEr�test_get_objectssX
������������zGCTests.test_get_objectscCslt��|�tt���ttjdd���|�ttjd�|�ttjd�|�ttjd�|�ttjd�dS)NrHi�i����1gX9��v��?)r;r<r=rqrK�assertRaises�
ValueErrorrr'rrr�test_get_objects_argumentsDs�z"GCTests.test_get_objects_argumentscs�Gdd�d�}G�fdd�d|��t��t����}|��jd�~t��|��jd�|�t�j�d��j��|��jd�t��|��jd�t��dS)Nc@r
)zAGCTests.test_resurrection_only_happens_once_per_object.<locals>.AcS�
||_dSr��mer'rrrr!Pr)zJGCTests.test_resurrection_only_happens_once_per_object.<locals>.A.__init__Nr"rrrrrIOrrIcs eZdZdZgZ�fdd�ZdS)zGGCTests.test_resurrection_only_happens_once_per_object.<locals>.Lazarusrcs�jd7_�j�|�dSr7)�resurrected�resurrected_instancesr:r'�r�rrrzWszOGCTests.test_resurrection_only_happens_once_per_object.<locals>.Lazarus.__del__N)rrrrTrUrzrrVrrr�Ssr�rr8)	r;r<rr=rTrqrU�clearr})r rI�lazrrVr�.test_resurrection_only_happens_once_per_objectNs
z6GCTests.test_resurrection_only_happens_once_per_objectcs�Gdd�d�}G�fdd�d��t��t����}|�}t|�}||_||_~~t��|�t�j�d��j�	�}|�
t|d��|�t|j�|�t��t��dS)Nc@r
)z6GCTests.test_resurrection_is_transitive.<locals>.CargocSrQrrRr'rrrr!tr)z?GCTests.test_resurrection_is_transitive.<locals>.Cargo.__init__Nr"rrrr�CargosrrZcseZdZgZ�fdd�ZdS)z8GCTests.test_resurrection_is_transitive.<locals>.Lazaruscs�j�|�dSr)rUr:r'rVrrrzzsz@GCTests.test_resurrection_is_transitive.<locals>.Lazarus.__del__N)rrrrUrzrrVrrr�wsr�r8�cargo)
r;r<rr]r[rXr=rqrUrrr��hasattrr})r rZrXr[�cargo_id�instancerrVr�test_resurrection_is_transitivers"
z'GCTests.test_resurrection_is_transitivecs�d}Gdd�d�}G�fdd�d|�}g�dd�}t��t��|�\}}t|�D]}|�q*t��}|�\}	}
|�|d|�|�|	|d|�|�|
|d	�|	|
}}|�t��}|�\}	}
|�|d	�|�|	|d	�|�|
|d	�|	|
}}t|�D]}|�q�|�t��}|�\}	}
|�|d|�|�|	|d|�|�|
|d	�|	|
}}���t��}|�\}	}
|�|d
�|�|	|d
�|�|
|d	�t��dS)N�dc@r
)zLGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.AcSrQrrRr'rrrr!�r)zUGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.A.__init__Nr"rrrrrI�rrIcr�)zLGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Zcr�rr�r'��zsrrrz�r�zTGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Z.__del__Nr{rrarr�Z�r�rccSst��d}|d|dfS)N���r1r3)r;r4)rBrrr�getstats�r�zSGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.getstatsrDrr�)r;r<rr�r=rWr})r r�rIrcre�oldc�oldncrrEr��ncrrar�9test_resurrection_does_not_block_cleanup_of_other_objects�sN







zAGCTests.test_resurrection_does_not_block_cleanup_of_other_objectsNz%requires ContainerNoGC extension typecCs�tj��}Gdd�d�}Gdd�d�}|�}||_t|��|_t�|jj|�|_	|j	g}|�
|�t��t�
�~~t��|��t��dS)Nc@seZdZgd�ZdS)z+GCTests.test_trash_weakref_clear.<locals>.A)rL�y�wzNr�rrrrrI�rrIc@rG)z+GCTests.test_trash_weakref_clear.<locals>.ZNrHrrrrrc�rJrc)�unittest�mock�MockrLrrjr+r,�valuerkr:r;r<r�assert_not_calledr})r rrIrcrL�wr_cyclerrr�test_trash_weakref_clear�s
 
z GCTests.test_trash_weakref_clear)0rrrr?rCrFrOrPrRrUrXrrerfrhrrmrvr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr%r)r0r=rArLrPrYr_rirl�skipIfrrrrrrrr6Vsd
	


	


#:/ 
0
.
$"
C�r6c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
dd��Ze�
ed�dd��ZdS)�GCCallbackTestscCsLt��|_t��t��|_t�d�tj�|j	�tj�|j
�g|_dSr�)r;r8�enabledrrnruro�	callbacksr:�cb1�cb2�othergarbager'rrr�setUps



zGCCallbackTests.setUpcCsz|`tj�|j�tj�|j�t�|j�|jrt�	�t�
�tjD]
}t|t
�r.d|_q$tjdd�=|`t�
�dSr)�visitr;rvrarwrxrorurur}r<r_�
isinstancer.r/ry)r rdrrr�tearDowns

�zGCCallbackTests.tearDowncCsBg|_t��tjdd�g}tjdd�<|j�|�g|_dSr)r{r;r<r_ryr:)r r_rrr�preclean/s

zGCCallbackTests.precleancCs|j�d|t|�f�dSr7)r{r:r6)r �phase�inforrrrw9rzGCCallbackTests.cb1cCsn|j�d|t|�f�|dkr1t|d�r3dd�tjD�}dd�tjD�tjdd�<|D]	}d|_q+dSdSdS)NrD�stop�cleanupcSsg|]	}t|t�r|�qSr�r|r.�r�r�rrrr�@sz'GCCallbackTests.cb2.<locals>.<listcomp>cSsg|]	}t|t�s|�qSrr�r�rrrr�As
�)r{r:r6r\r;r_r/)r rr��ucr�rrrrx<s�zGCCallbackTests.cb2cCs�|��t��dd�|jD�}dd�|D�}dd�|D�}|�|dgd�|�|dgd�dd�|jD�}dd�|D�}d	d�|D�}|�|d
gd�|�|dgd�|jD]}|d}|�d|v�|�d
|v�|�d|v�q[dS)NcS�g|]}|d�qS)rr�r�r�rrrr�Mrz0GCCallbackTests.test_collect.<locals>.<listcomp>cS�g|]}|dkr|�qS�r8rrrrrr�NrcSr�)rDrrrrrr�Orr8rDcSr�r�rr�rrrr�TrcSr�)�startrrrrrr�UrcSr�)r�rrrrrr�Vrr�r�rIr1r3)r~r;r<r{r=r�)r r��n1�n2r�r�rrr�test_collectFs$
�zGCCallbackTests.test_collectcCs:|��t�d�|jD]}|d}|�|dd�qdS)NrDrI)r~r;r<r{r=)r r�r�rrr�test_collect_generationas

�z'GCCallbackTests.test_collect_generationcCs
|��t�t�td�t��|jD]}|ddkrq|d}|�|dd�|�|dd�q|�ttj�d�tjD]}|�	|t�q?d	|_
g|_gtjdd�<t��|jD]}|ddkreq\|d}|�|dd
�|�|dd�q\|�ttj�d
�dS)Nr*r8r�rDr1r3�r�Tr)r~r.rr;r<r{r=rqr_r5r�)r r�r�r�rrr�test_collect_garbagehs2


z$GCCallbackTests.test_collect_garbagezbuilt with -NDEBUGcCs�|��td�ddl}t�d�}|jtjd|g|j|jd�}|�	�\}}|j
��|j��|�
|d�|�
|d�d}|�
|d	|�|�
|d
�|�
|d|�|�
|d�|�
|d
�dS)N�ctypesra�
            from test.support import gc_collect, SuppressCrashReport

            a = [1, 2, 3]
            b = [a]

            # Avoid coredump when Py_FatalError() calls abort()
            SuppressCrashReport().__enter__()

            # Simulate the refcount of "a" being too low (compared to the
            # references held on it by live data), but keeping it above zero
            # (to avoid deallocating it):
            import ctypes
            ctypes.pythonapi.Py_DecRef(ctypes.py_object(a))

            # The garbage collector should now have a fatal error
            # when it reaches the broken object
            gc_collect()
        rr
sGgcmodule\.c:[0-9]+: gc_decref: Assertion "gc_get_refs\(g\) > 0" failed.srefcount is too smalls
[0-9a-fA-Fx]+sobject address  : sobject refcount : 1sobject type     : sobject type name: listsobject repr     : \[1, 2, 3\])r~rr�textwrap�dedentrrirrrrrr�assertRegex)r rrrrr�
address_regexrrr�test_refcount_errors�sB
�

�������z$GCCallbackTests.test_refcount_errorsN)rrrrzr}r~rwrxr�r�rr�rlrs�BUILD_WITH_NDEBUGr�rrrrrts



$�rtc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�GCTogglingTestscC�t��dSr)r;r}r'rrrrz�rWzGCTogglingTests.setUpcCr�r)r;rr'rrrr}�rWzGCTogglingTests.tearDownc
s�td�}t��td�}||_|`td�}t�|��g���fdd�}t�||�}d}}}g}d}t�}|jsV|d7}|dkrF|�	d�|�
t��d�|�g�|jr9|�
t��d��D]}	|�
|	d�q`dS)Nrr8rDc���g�dd�<dSrrr%��c2wrrrrr��z2GCTogglingTests.test_bug1055820c.<locals>.callback�'�'gc didn't happen after 10000 iterations)
rr;r<�
keep_c0_aliverr+r,r#r$r`r=rqr:)
r �c0�c1�c2r�c0wr�junkr�detectorr�rr�r�test_bug1055820c�s2
 

��z GCTogglingTests.test_bug1055820cc	s�g�G��fdd�dt�}|d�}t��td�}||_|`td�}t�|��d}}}t�}g}d}|jsT|d7}|dkrD|�	d�|�
t��d�|�g�|jr7|�
t��d��D]}|�
|d�q^dS)NcseZdZ��fdd�ZdS)z+GCTogglingTests.test_bug1055820d.<locals>.Dcr�rrr'r�rrrzr�z3GCTogglingTests.test_bug1055820d.<locals>.D.__del__Nr{rr�rr�Dsr�rr8rDr�r�)
rr;r<�
keep_d0_aliverr+r,r#r$r`r=rqr:)	r r��d0r�r�r�r�rr�rr�r�test_bug1055820ds0


��z GCTogglingTests.test_bug1055820dN)rrrrzr}r�r�rrrrr��s
Fr�c@r
)�PythonFinalizationTestscCst�d�}td|�dS)Na 
            import ast
            import codecs

            # Small AST tree to keep their AST types alive
            tree = ast.parse("def f(x, y): return 2*x-y")
            x = [tree]
            x.append(x)

            # Put the cycle somewhere to survive until the last GC collection.
            # Codec search functions are only cleared at the end of
            # interpreter_clear().
            def search_func(encoding):
                return None
            search_func.a = x
            codecs.register(search_func)
        r)r�r�r	)r rrrr�
test_ast_finiVs
z%PythonFinalizationTests.test_ast_finiN)rrrr�rrrrr�Urr�cCsBt��at��t��rJ�t��at�ttj@�t��dSr)	r;r8rurrnruro�
DEBUG_LEAKr<rrrr�setUpModulepsr�cCs>t�t�trtd�t��t��sJ�tst��dSdS)Nzrestoring automatic collection)	r;rorur�printr}r8rurrrrr�tearDownModulezs
�r��__main__),rl�
unittest.mock�test.supportrrr�test.support.import_helperr�test.support.os_helperrrr�test.support.script_helperr	r
rr;ri�	sysconfigr�r�r�r+�	_testcapir�ImportErrorrrrr#r.�get_config_vars�getr�r\�TestCaser6rtr�r�r�r�r�mainrrrr�<module>sb��D2
�

Youez - 2016 - github.com/yon3zu
LinuXploit