Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_gc.cpython-39.opt-2.pyc

a

��gW��@s�ddlZddlZddlmZmZmZmZmZmZm	Z	m
Z
ddlmZm
Z
ddlZddlZddlZddlZddlZddlZddlZzddlmZWney�dd�ZYn0zddlmZWney�dZYn0Gdd	�d	e�ZGd
d�de�ZeGdd
�d
e��Ze���dd��r,de��dvZne ed�ZGdd�dej!�Z"Gdd�dej!�Z#Gdd�dej!�Z$Gdd�dej!�Z%dd�Z&dd�Z'e(dk�r�e�)�dS)�N)�verbose�
refcount_test�cpython_only�
start_threads�temp_dir�TESTFN�unlink�
import_module)�assert_python_ok�make_script)�with_tp_delcCsGdd�dt�}|S)Nc@seZdZdd�ZdS)zwith_tp_del.<locals>.Cc_std��dS)Nzrequires _testcapi.with_tp_del)�	TypeError)�cls�args�kwargs�r�(/usr/local/lib/python3.9/test/test_gc.py�__new__szwith_tp_del.<locals>.C.__new__N)�__name__�
__module__�__qualname__rrrrr�Csr)�object)rrrrrrsr)�
ContainerNoGCc@seZdZdd�ZdS)�C1055820cCs||_||_dS�N)�i�loop)�selfrrrr�__init__(szC1055820.__init__N�rrrrrrrrr'src@seZdZdd�ZdS)�GC_Detectorcs(d�_�fdd�}t�td�|��_dS)NFcs
d�_dS)NT)�gc_happened�Zignored�rrr�it_happened3sz)GC_Detector.__init__.<locals>.it_happened�)r"�weakref�refr�wr)rr%rr$rr0szGC_Detector.__init__Nr rrrrr!,sr!c@seZdZddd�Zdd�ZdS)�
UncollectableNcCs |durt|d�|_n||_dS)N)�partner)r*r+)rr+rrrrBszUncollectable.__init__cCsdSrrr$rrr�
__tp_del__GszUncollectable.__tp_del__)N)rrrrr,rrrrr*:s
r*Z	PY_CFLAGS�z-DNDEBUGZgettotalrefcountc@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_listVs

zGCTests.test_listcCs*i}||d<t��~|�t��d�dSr/�r3r4r5�r�drrr�	test_dict]s
zGCTests.test_dictcCs4g}|f}|�|�t��~~|�t��d�dS)N�r1)rr6�trrr�
test_tupleds
zGCTests.test_tuplecCs2Gdd�d�}||_t��~|�t��d�dS)Nc@seZdZdS)zGCTests.test_class.<locals>.AN�rrrrrrr�Aosr@r��ar3r4�assertNotEqual�rr@rrr�
test_classns
zGCTests.test_classcCs.Gdd�dt�}t��~|�t��d�dS)Nc@seZdZdS)z%GCTests.test_newstyleclass.<locals>.ANr?rrrrr@wsr@r)rr3r4rCrDrrr�test_newstyleclassvszGCTests.test_newstyleclasscCs8Gdd�d�}|�}||_t��~|�t��d�dS)Nc@seZdZdS)z GCTests.test_instance.<locals>.ANr?rrrrr@~sr@rrA�rr@rBrrr�
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@seZdZdS)z#GCTests.test_newinstance.<locals>.ANr?rrrrr@�sr@rc@seZdZdS)z#GCTests.test_newinstance.<locals>.BNr?rrrr�B�srIc@seZdZdS)z#GCTests.test_newinstance.<locals>.CNr?rrrrr�sr)rrBr3r4rC�listr5)rr@rBrIrrrr�test_newinstance�s&zGCTests.test_newinstancecCs2Gdd�d�}|�}t��~|�t��d�dS)Nc@seZdZdd�ZdS)zGCTests.test_method.<locals>.AcSs|j|_dSr)r�initr$rrrr�sz'GCTests.test_method.<locals>.A.__init__Nr rrrrr@�sr@r)r3r4rCrGrrr�test_method�s
zGCTests.test_methodcCs�tGdd�d��}Gdd�d�}|�}||_t|�}|�}||_t��~~|�t��d�tjD]}t|�|krb|`q�qb|�d�tj�	|�dS)Nc@seZdZdd�ZdS)z(GCTests.test_legacy_finalizer.<locals>.AcSsdSrrr$rrrr,��z3GCTests.test_legacy_finalizer.<locals>.A.__tp_del__N�rrrr,rrrrr@�sr@c@seZdZdS)z(GCTests.test_legacy_finalizer.<locals>.BNr?rrrrrI�srIr�&didn't find obj in garbage (finalizer))
rrB�id�br3r4rC�garbage�fail�remove�rr@rIrBZid_arR�objrrr�test_legacy_finalizer�s$

zGCTests.test_legacy_finalizercCs�tGdd�dt��}Gdd�dt�}|�}||_t|�}|�}||_t��~~|�t��d�tjD]}t|�|krf|`q�qf|�	d�tj�
|�dS)Nc@seZdZdd�ZdS)z1GCTests.test_legacy_finalizer_newclass.<locals>.AcSsdSrrr$rrrr,�rNz<GCTests.test_legacy_finalizer_newclass.<locals>.A.__tp_del__NrOrrrrr@�sr@c@seZdZdS)z1GCTests.test_legacy_finalizer_newclass.<locals>.BNr?rrrrrI�srIrrP)rrrBrQrRr3r4rCrSrTrUrVrrr�test_legacy_finalizer_newclass�s$

z&GCTests.test_legacy_finalizer_newclasscCs,i}td|�t��~|�t��d�dS)Nzdef f(): pass
r<)�execr3r4r5r9rrr�
test_function�s

zGCTests.test_functioncCs*dd�}t��|�|�t��d�dS)NcSst��}dSr)�sys�	_getframe)�framerrr�f�szGCTests.test_frame.<locals>.fr0r8)rr_rrr�
test_frame�szGCTests.test_framecCs�t��|�tjg�g}|�|�t|�}t��}t�|tjB�~t��t�|�|�t	tj�d�tj�
�}|�t|�|�dSr/)r3r4r5rSr2rQ�	get_debug�	set_debugZ
DEBUG_SAVEALL�len�pop)r�LZid_L�debugrWrrr�test_saveall�s


zGCTests.test_saveallcCsFt��}t��t�d�Gdd�d�}|�}~t��tj|�dS)Nr0c@seZdZdd�ZdS)zGCTests.test_del.<locals>.AcSst|�dSr��dirr$rrr�__del__sz#GCTests.test_del.<locals>.A.__del__N�rrrrjrrrrr@sr@)r3�
get_threshold�enable�
set_threshold�disable�rZ
thresholdsr@rBrrr�test_dels
zGCTests.test_delcCsHt��}t��t�d�Gdd�dt�}|�}~t��tj|�dS)Nr0c@seZdZdd�ZdS)z$GCTests.test_del_newclass.<locals>.AcSst|�dSrrhr$rrrrjsz,GCTests.test_del_newclass.<locals>.A.__del__Nrkrrrrr@sr@)r3rlrmrnrrorprrr�test_del_newclasss
zGCTests.test_del_newclasscCsdt��t��\}}}g}t��\}}}|�||fd�|�||fd�|�|d�|�||�dS)N�rr�)r3r4�	get_countr5Z
assertLess�
assertGreater)rrBrR�c�xr:�er_rrr�test_get_count)szGCTests.test_get_countcCs�t��g}t�d�t��\}}}t�d�t��\}}}t�d�t��\}}	}
|�||fd�|�||fd�|�|	|
fd�dS)Nrr0r<)r0r)rr0rs)r3r4rur5)rrxrBrRrwr:ryr_�g�hrrrr�test_collect_generations7s


z GCTests.test_collect_generationscs�G�fdd�d��t��d}td�D]Z}g}t|�D]}|��g}q6g}t|�D]}|��g}qRi}t|�D]}|��d�}qnq&t��dS)NcseZdZdZ�fdd�ZdS)z#GCTests.test_trashcan.<locals>.Ouchrcs&�jd�_�jddkr"t��dS)Nr0�r)�nr3r4r$��OuchrrrjOsz+GCTests.test_trashcan.<locals>.Ouch.__del__N)rrrrrjrr�rrr�Msr��r<)r0r<)r3rm�rangero)r�N�countr=r�u�vrr�r�
test_trashcanLszGCTests.test_trashcanc	s�d�d}dd��G��fdd�dt����fdd����fd	d
�}t��}t�d�zvg�g}t|�D]}tj|d�}|�|�qft|�fd
d���t	�
d�Wd�n1s�0YWt�|�nt�|�0t��|�
t�j�t�j��dS)N�<r<c	ss&zdVWt�d�nt�d�0dS)Ng���ư>)�time�sleeprrrr�sleeper_gentsz2GCTests.test_trashcan_threads.<locals>.sleeper_gencs.eZdZgZgZ�fdd�Z��fdd�ZdS)z(GCTests.test_trashcan_threads.<locals>.Ccs||dd�<�j�d�dSr)�initsr2)r�alist)rrrrsz1GCTests.test_trashcan_threads.<locals>.C.__init__cs�j�d���}t|�dSr)�delsr2�next)rr{�rr�rrrj�sz0GCTests.test_trashcan_threads.<locals>.C.__del__N)rrrr�r�rrjrr�rrr{srcs(�g�}t��D]}�|g�g}q~dSr)r�)rxr)r�NESTINGrr�make_nested�sz2GCTests.test_trashcan_threads.<locals>.make_nestedcs�s��qdSrrr)�exitr�rr�
run_thread�sz1GCTests.test_trashcan_threads.<locals>.run_threadg�h㈵��>)�targetcs
��d�Sr/�r2r)r�rr�<lambda>�rNz/GCTests.test_trashcan_threads.<locals>.<lambda>��?)rJr\�getswitchinterval�setswitchintervalr��	threading�Threadr2rr�r�r3r4r5rcr�r�)rZ	N_THREADSr�Zold_switchinterval�threadsrr=r)rr�r�r�r�r�test_trashcan_threadsos&
*zGCTests.test_trashcan_threadscCsbGdd�d�}|�}|�}||_||_t��ttj�}~~|�t��d�|�ttj�|�dS)Nc@seZdZdd�ZdS)zGCTests.test_boom.<locals>.BoomcSs|`t�dSr��attr�AttributeError�rZ
someattributerrr�__getattr__�sz+GCTests.test_boom.<locals>.Boom.__getattr__N�rrrr�rrrr�Boom�sr���r�r3r4rcrSr5)rr�rBrR�
garbagelenrrr�	test_boom�s
zGCTests.test_boomcCsbGdd�d�}|�}|�}||_||_t��ttj�}~~|�t��d�|�ttj�|�dS)Nc@seZdZdd�Zdd�ZdS)z!GCTests.test_boom2.<locals>.Boom2cSs
d|_dS�Nr�rxr$rrrr�sz*GCTests.test_boom2.<locals>.Boom2.__init__cSs$|jd7_|jdkr|`t�dSr/�rxr�r�r�rrrr��s
z-GCTests.test_boom2.<locals>.Boom2.__getattr__N�rrrrr�rrrr�Boom2�sr�r�r�)rr�rBrRr�rrr�
test_boom2�s

zGCTests.test_boom2cCsdGdd�dt�}|�}|�}||_||_t��ttj�}~~|�t��d�|�ttj�|�dS)Nc@seZdZdd�ZdS)z'GCTests.test_boom_new.<locals>.Boom_NewcSs|`t�dSrr�r�rrrr��sz3GCTests.test_boom_new.<locals>.Boom_New.__getattr__Nr�rrrr�Boom_New�sr�r��rr�r3r4rcrSr5)rr�rBrRr�rrr�
test_boom_new�s
zGCTests.test_boom_newcCsdGdd�dt�}|�}|�}||_||_t��ttj�}~~|�t��d�|�ttj�|�dS)Nc@seZdZdd�Zdd�ZdS)z)GCTests.test_boom2_new.<locals>.Boom2_NewcSs
d|_dSr�r�r$rrrr�sz2GCTests.test_boom2_new.<locals>.Boom2_New.__init__cSs$|jd7_|jdkr|`t�dSr/r�r�rrrr��s
z5GCTests.test_boom2_new.<locals>.Boom2_New.__getattr__Nr�rrrr�	Boom2_New�sr�r�r�)rr�rBrRr�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)r0�rtr��)r0rt)r0r�rtr�r0r<r�)rrrrrtrBy@)r3Z
get_referents�sortr5�tuplerJr�)rr�ZgotZatupleZadictZexpectedrrr�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)Nr0r�y�?@TF�arBc@seZdZdS)z*GCTests.test_is_tracked.<locals>.UserClassNr?rrrr�	UserClass0sr�c@seZdZdS)z(GCTests.test_is_tracked.<locals>.UserIntNr?rrrr�UserInt3sr�c@seZdZdZdS)z/GCTests.test_is_tracked.<locals>.UserClassSlotsrN�rrr�	__slots__rrrr�UserClassSlots7sr�c@seZdZdZdS)z/GCTests.test_is_tracked.<locals>.UserFloatSlotsrNr�rrrr�UserFloatSlots;sr�c@seZdZdZdS)z-GCTests.test_is_tracked.<locals>.UserIntSlotsrNr�rrrr�UserIntSlots?sr�)
�assertFalser3Z
is_tracked�	bytearray�type�intr�float�
assertTrue�set)rr�r�r�r�r�rrr�test_is_trackeds6zGCTests.test_is_trackedcsb|�t�d��g�G�fdd�d�}|�}|�t�|��~t�����}|�t�|��dS)Nr�cseZdZ�fdd�ZdS)z*GCTests.test_is_finalized.<locals>.Lazaruscs��|�dSrr�r$�ZstoragerrrjRsz2GCTests.test_is_finalized.<locals>.Lazarus.__del__Nrkrr�rr�LazarusQsr�)r�r3Zis_finalizedr4rdr�)rr�Zlazarusrr�r�test_is_finalizedLszGCTests.test_is_finalizedcs�g���fdd��dd�td�D�}�fdd�|D��d}t��|�t��d�d}t��|�t��d��D]}|�|d�qrdS)Ncsdd��D��dd�<dS)NcSsg|]
}|��qSrr)�.0r)rrr�
<listcomp>crNz>GCTests.test_bug1055820b.<locals>.callback.<locals>.<listcomp>rr#)�WRs�ouchrr�callbackbsz*GCTests.test_bug1055820b.<locals>.callbackcSsg|]}t|��qSr)r�r�rrrrr�erNz,GCTests.test_bug1055820b.<locals>.<listcomp>r<csg|]}t�|���qSr)r'r()r�rw)r�rrr�frNr)r�r3r4r5rc)rZCsrwrxr)r�r�r�r�test_bug1055820b^szGCTests.test_bug1055820bcsDt��Gdd�d��Gdd�d����fdd�}|�t��dS)Nc@seZdZdS)z GCTests.test_bug21435.<locals>.ANr?rrrrr@�sr@c@seZdZdd�Zdd�ZdS)z GCTests.test_bug21435.<locals>.BcSs
||_dSrr�)rrxrrrr�sz)GCTests.test_bug21435.<locals>.B.__init__cSs
d|_dSr�r�r$rrrrj�sz(GCTests.test_bug21435.<locals>.B.__del__N)rrrrrjrrrrrI�srIcs ��}����}||_||_dSrr�)rBrR�r@rIrr�do_work�s
z&GCTests.test_bug21435.<locals>.do_work)r3r4)rr�rr�r�
test_bug21435vs
zGCTests.test_bug21435cs�ddl�d}��fdd�}||d�}��d|���d|�||d�}��d	|���d
|vphd|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�stderrrrN)
�Popenr\�
executable�PIPE�communicater��closer�r5�
returncode)�code�pr�r��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�ZassertInZassertNotInr�)rr�r�r�rr�r�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
r5�strip)rr��rc�out�errrrr�test_gc_main_module_at_shutdown�sz'GCTests.test_gc_main_module_at_shutdowncCsdt��J}d}d|f}t|d|�td|�\}}}|�|��d�Wd�n1sV0YdS)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
                Zgctestr�r�)rrr
r5r�)rZ
script_dir�moduler�r�r�r�rrr�#test_gc_ordinary_module_at_shutdown�s�z+GCTests.test_gc_ordinary_module_at_shutdowncCsfd}|�tt�ttd��}|�|�Wd�n1s:0Ytt�\}}}|�|��d�dS)Nz�if 1:
            class ClassWithDel:
                def __del__(self):
                    print('__del__ called')
            a = ClassWithDel()
            a.link = a
            raise SystemExit(0)�wr�)�
addCleanuprr�open�writer
r5r�)rr�Zscriptr�r�r�rrr�test_global_del_SystemExit�s(z"GCTests.test_global_del_SystemExitcCsrt��}|�t|�d�|D]T}|�|t�|�t|�hd��|�|dd�|�|dd�|�|dd�qt��r�|�	tj
�t��t��}t�d�t��}|�|dd|ddd�|�|dd|dd�|�|dd|dd�t�d�t��}|�|dd|ddd�|�|dd|dd�|�|dd|ddd�dS)	Nr�>�
uncollectable�collections�	collectedr�rr�r�r0r<)
r3�	get_statsr5rc�assertIsInstance�dictr�ZassertGreaterEqual�	isenabledr�rmror4)rZstats�st�old�newrrr�test_get_stats�s0
�
 
 zGCTests.test_get_statscCs4t��|�t��d�t��|�t��d�dSr�)r3ZfreezervZget_freeze_countZunfreezer5r$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)Nc3s|]}�|uVqdSrr�r��element�r6rr�	<genexpr>rNz+GCTests.test_get_objects.<locals>.<genexpr>r��
generationc3s|]}�|uVqdSrrrrrrrrNr0c3s|]}�|uVqdSrrrrrrr rNr<c3s|]}�|uVqdSrrrrrrr$rNc3s|]}�|uVqdSrrrrrrr'rNc3s|]}�|uVqdSrrrrrrr*rNc3s|]}�|uVqdSrrrrrrr.rNc3s|]}�|uVqdSrrrrrrr1rNc3s|]}�|uVqdSrrrrrrr4rNc3s|]}�|uVqdSrrrrrrr8rNc3s|]}�|uVqdSrrrrrrr;rNc3s|]}�|uVqdSrrrrrrr>rN)r3r4r2r��any�get_objectsr�r$rrr�test_get_objectssX
������������zGCTests.test_get_objectscCslt��|�tt���ttjdd���|�ttjd�|�ttjd�|�ttjd�|�ttjd�dS)Nri�i����1gX9��v��?)r3r4r5rcr
ZassertRaises�
ValueErrorr
r$rrr�test_get_objects_argumentsCs�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@seZdZdd�ZdS)zAGCTests.test_resurrection_only_happens_once_per_object.<locals>.AcSs
||_dSr��mer$rrrrOszJGCTests.test_resurrection_only_happens_once_per_object.<locals>.A.__init__Nr rrrrr@Nsr@cs eZdZdZgZ�fdd�ZdS)zGGCTests.test_resurrection_only_happens_once_per_object.<locals>.Lazarusrcs�jd7_�j�|�dSr/)�resurrected�resurrected_instancesr2r$�r�rrrjVszOGCTests.test_resurrection_only_happens_once_per_object.<locals>.Lazarus.__del__N)rrrrrrjrrrrr�Rsr�rr0)	r3r4ror5rrcr�clearrm)rr@�lazrrr�.test_resurrection_only_happens_once_per_objectMs
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@seZdZdd�ZdS)z6GCTests.test_resurrection_is_transitive.<locals>.CargocSs
||_dSrrr$rrrrssz?GCTests.test_resurrection_is_transitive.<locals>.Cargo.__init__Nr rrrr�CargorsrcseZdZgZ�fdd�ZdS)z8GCTests.test_resurrection_is_transitive.<locals>.Lazaruscs�j�|�dSr)rr2r$rrrrjysz@GCTests.test_resurrection_is_transitive.<locals>.Lazarus.__del__N)rrrrrjrrrrr�vsr�r0�cargo)
r3r4rorQrrr5rcrrdr��hasattrrm)rrrrZcargo_id�instancerrr�test_resurrection_is_transitiveqs"
z'GCTests.test_resurrection_is_transitivecs�d}Gdd�d�}G�fdd�d|�}g�dd�}t��t��|�\}}t|�D]
}|�qTt��}|�\}	}
|�|d|�|�|	|d|�|�|
|d	�|	|
}}|�t��}|�\}	}
|�|d	�|�|	|d	�|�|
|d	�|	|
}}t|�D]}|��q|�t��}|�\}	}
|�|d|�|�|	|d|�|�|
|d	�|	|
}}���t��}|�\}	}
|�|d
�|�|	|d
�|�|
|d	�t��dS)N�dc@seZdZdd�ZdS)zLGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.AcSs
||_dSrrr$rrrr�szUGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.A.__init__Nr rrrrr@�sr@cseZdZ�fdd�ZdS)zLGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Zcs��|�dSrr�r$�Zzsrrrj�szTGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Z.__del__Nrkrrrr�Z�srcSst��d}|d|dfS)N���r�r�)r3r�)r:rrr�getstats�szSGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.getstatsr<rr�)r3r4ror�r5rrm)rr�r@rr ZoldcZoldncrr=rwZncrrr�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)rB�y�wzNr�rrrrr@�sr@c@seZdZdS)z+GCTests.test_trash_weakref_clear.<locals>.ZNr?rrrrr�sr)�unittestZmockZMockrBrr"r'r(�valuer#r2r3r4roZassert_not_calledrm)rr�r@rrBZwr_cyclerrr�test_trash_weakref_clear�s 

z GCTests.test_trash_weakref_clear)0rrrr7r;r>rErFrHrKrMrrXrYr[rr`rgrqrrrzr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr!r$�skipIfrr&rrrrr.Usb
	


	



#:/ 
0
.
$"C
�r.c@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�)r3r��enabledrorarfrb�	callbacksr2�cb1�cb2�othergarbager$rrr�setUps


zGCCallbackTests.setUpcCsz|`tj�|j�tj�|j�t�|j�|jr:t�	�t�
�tjD]}t|t
�rHd|_qHtjdd�=|`t�
�dSr)�visitr3r*rUr+r,rbrfr)rmr4rS�
isinstancer*r+r-)rrWrrr�tearDowns

zGCCallbackTests.tearDowncCsBg|_t��tjdd�g}tjdd�<|j�|�g|_dSr)r/r3r4rSr-r2)rrSrrr�preclean.s
zGCCallbackTests.precleancCs|j�d|t|�f�dSr/)r/r2r�)r�phase�inforrrr+8szGCCallbackTests.cb1cCsf|j�d|t|�f�|dkrbt|d�rbdd�tjD�}dd�tjD�tjdd�<|D]
}d|_qVdS)Nr<�stop�cleanupcSsg|]}t|t�r|�qSr�r0r*�r�ryrrrr�?rNz'GCCallbackTests.cb2.<locals>.<listcomp>cSsg|]}t|t�s|�qSrr7r8rrrr�@s
�)r/r2r�rr3rSr+)rr3r4Zucryrrrr,;szGCCallbackTests.cb2cCs�|��t��dd�|jD�}dd�|D�}dd�|D�}|�|dgd�|�|dgd�dd�|jD�}dd�|D�}d	d�|D�}|�|d
gd�|�|dgd�|jD]6}|d}|�d|v�|�d
|v�|�d|v�q�dS)NcSsg|]}|d�qS)rr�r�r�rrrr�LrNz0GCCallbackTests.test_collect.<locals>.<listcomp>cSsg|]}|dkr|�qS�r0rr�rrrr�MrNcSsg|]}|dkr|�qS)r<rr�rrrr�NrNr0r<cSsg|]}|d�qSr:rr9rrrr�SrNcSsg|]}|dkr|�qS)�startrr�rrrr�TrNcSsg|]}|dkr|�qS)r5rr�rrrr�UrNr;r5rr�r�)r2r3r4r/r5r�)rrZn1Zn2r�r4rrr�test_collectEs"
zGCCallbackTests.test_collectcCs:|��t�d�|jD]}|d}|�|dd�qdS)Nr<r)r2r3r4r/r5)rr�r4rrr�test_collect_generation`s


z'GCCallbackTests.test_collect_generationcCs
|��t�t�td�t��|jD]:}|ddkr<q*|d}|�|dd�|�|dd�q*|�ttj�d�tjD]}|�	|t�q~d	|_
g|_gtjdd�<t��|jD]:}|ddkr�q�|d}|�|dd
�|�|dd�q�|�ttj�d
�dS)Nr&r0r5r<r�r��r�Tr)r2r*rr3r4r/r5rcrSr�r6)rr�r4ryrrr�test_collect_garbagegs2


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)NZctypesra�
            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\])r2r	r��textwrap�dedentr�r\r�r�r�r�r�r�ZassertRegex)rr�r�r�r�r�Z
address_regexrrr�test_refcount_errors�sB
�

�������z$GCCallbackTests.test_refcount_errorsN)rrrr.r1r2r+r,r<r=rr?r$r'�BUILD_WITH_NDEBUGrBrrrrr(s



$�r(c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�GCTogglingTestscCst��dSr)r3rmr$rrrr.�szGCTogglingTests.setUpcCst��dSr)r3ror$rrrr1�szGCTogglingTests.tearDownc
s�td�}t��td�}||_|`td�}t�|��g���fdd�}t�||�}d}}}g}d}t�}|js�|d7}|dkr�|�	d�|�
t��d�|�g�ql|�
t��d��D]}	|�
|	d�q�dS)Nrr0r<cs��g�dd�<dSrrr#�Zc2wrr�rrr��sz2GCTogglingTests.test_bug1055820c.<locals>.callback�'�'gc didn't happen after 10000 iterations)
rr3r4Z
keep_c0_aliverr'r(r!r"rTr5rcr2)
rZc0�c1�c2r�Zc0wr�junkr�detectorrxrrEr�test_bug1055820c�s.
 
z GCTogglingTests.test_bug1055820cc	s�g�G��fdd�dt�}|d�}t��td�}||_|`td�}t�|��d}}}t�}g}d}|js�|d7}|dkr�|�	d�|�
t��d�|�g�qh|�
t��d��D]}|�
|d�q�dS)NcseZdZ��fdd�ZdS)z+GCTogglingTests.test_bug1055820d.<locals>.Dcs��g�dd�<dSrrr$rErrrjsz3GCTogglingTests.test_bug1055820d.<locals>.D.__del__NrkrrErr�DsrMrr0r<rFrG)
rr3r4Z
keep_d0_aliverr'r(r!r"rTr5rcr2)	rrMZd0rHrIrKrJrrxrrEr�test_bug1055820ds,

z GCTogglingTests.test_bug1055820dN)rrrr.r1rLrNrrrrrD�sFrDc@seZdZdd�ZdS)�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@rAr
)rr�rrr�
test_ast_finiUs
z%PythonFinalizationTests.test_ast_finiN)rrrrPrrrrrOTsrOcCs6t��at��t��at�ttj@�t��dSr)	r3r�r)rorarfrbZ
DEBUG_LEAKr4rrrr�setUpModuleos
rQcCs.t�t�trtd�t��ts*t��dS)Nzrestoring automatic collection)r3rbrfr�printrmr)rorrrr�tearDownModuleys
rS�__main__)*r$Z
unittest.mockZtest.supportrrrrrrrr	Ztest.support.script_helperr
rr3r\Z	sysconfigr@r�r�r'Z	_testcapir�ImportErrorrrrr!r*Zget_config_vars�getrCrZTestCaser.r(rDrOrQrSr�mainrrrr�<module>sT(

D2



Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists