403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_gc.cpython-313.opt-2.pyc
�

��i/�����SSKrSSKrSSKJr SSKJrJrJrJrJ	r	J
r
Jr SSKJ
r
 SSKJrJrJr SSKJrJr SSKJrJr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SS	KJ r  "SS\"5r#"S
S\"5r$\"SS\"55r%\RL"5ROSS5(aS\RL"5S;r(O\)"\S5(+r("SS\RT5r+"SS\RT5r,"SS\RT5r-"SS\RT5r.Sr/Sr0\1S:Xa\Rd"5 gg!\!a
 SrS
rSr N�f=f) �N)�support)�verbose�
refcount_test�cpython_only�requires_subprocess�requires_gil_enabled�suppress_immortalization�Py_GIL_DISABLED)�
import_module)�temp_dir�TESTFN�unlink)�assert_python_ok�make_script)�threading_helper�gc_threshold)�with_tp_del)�
ContainerNoGCc�$�"SS[5nU$)Nc��\rSrSrSrSrg)�with_tp_del.<locals>.C�c�.�[R"S5e)Nzrequires _testcapi.with_tp_del)�unittest�SkipTest)�cls�args�kwargss   �!C:\Python313\\Lib\test\test_gc.py�__new__�with_tp_del.<locals>.C.__new__s���'�'�(H�I�I��N)�__name__�
__module__�__qualname__�__firstlineno__r �__static_attributes__r#r"r�Crs��
Jr"r))�object)rr)s  rrrs��	J��	J��r"c��\rSrSrSrSrg)�C1055820�*c��XlXlg�N��i�loop)�selfr1s  r�__init__�C1055820.__init__+s�����	r"r0N�r$r%r&r'r4r(r#r"rr,r,*s��r"r,c��\rSrSrSrSrg)�GC_Detector�/c�j^�STlU4Sjn[R"[S5U5Tlg)NFc�>�STlg�NT)�gc_happened)�ignoredr3s �r�it_happened�)GC_Detector.__init__.<locals>.it_happened6s���#�D�r"�)r=�weakref�refr,�wr)r3r?s` rr4�GC_Detector.__init__3s(��� ���	$�
�+�+�h�s�m�[�9��r")r=rDNr6r#r"rr8r8/s��:r"r8c�$�\rSrSrSSjrSrSrg)�
Uncollectable�=Nc�4�Uc[US9UlgXlg)N��partner)rGrK)r3rKs  rr4�Uncollectable.__init__Es���?�(��6�D�L�"�Lr"c��gr/r#�r3s r�
__tp_del__�Uncollectable.__tp_del__Js��r"rJr/)r$r%r&r'r4rOr(r#r"rrGrG=s��#�

r"rG�	PY_CFLAGS�z-DNDEBUG�gettotalrefcountc��\rSrSrSrSrSr\"5S5r\"5S5r	Sr
\"5S5rS	r\
S
5r\
S5r\"5S5rS
r\S5rSrSrSr\\"S5S55r\S5rSr\R8"5S5rSrSrSr \"5S5r!Sr"Sr#Sr$\
\%"5\&RN"\(SLS5S 555r)S!r*S"r+S#r,S$r-S%r.S&r/\"S'5S(5r0S)r1S*r2S+r3S,r4\&RN"\5SLS-5S.5r6\
S/5r7\
S05r8S1r9S2r:S3r;g)4�GCTests�Xc��/nURU5 [R"5 AUR[R"5S5 g�N���append�gc�collect�assertEqual�r3�ls  r�	test_list�GCTests.test_listYs4����	�����
�
�
��
��������q�)r"c��0nXS'[R"5 AUR[R"5S5 grX�r\r]r^�r3�ds  r�	test_dict�GCTests.test_dict`s0�����!��
�
�
��
��������q�)r"c��/nU4nURU5 [R"5 AAUR[R"5S5 g)N�rZ)r3r`�ts   r�
test_tuple�GCTests.test_tuplegs>����
�D��	�����
�
�
��
�
��������q�)r"c��"SS5nXl[R"5 AUR[R"5S5 g)Nc��\rSrSrSrg)�GCTests.test_class.<locals>.A�sr#N�r$r%r&r'r(r#r"r�Arps���r"rsr��ar\r]�assertNotEqual�r3rss  r�
test_class�GCTests.test_classqs3��	�	���
�
�
��
����B�J�J�L�!�,r"c��"SS[5n[R"5 AUR[R"5S5 g)Nc��\rSrSrSrg)�%GCTests.test_newstyleclass.<locals>.A�|r#Nrrr#r"rrsr}|rtr"rsr)r*r\r]rwrxs  r�test_newstyleclass�GCTests.test_newstyleclasszs0��	��	�
�
�
��
����B�J�J�L�!�,r"c��"SS5nU"5nX"l[R"5 AUR[R"5S5 g)Nc��\rSrSrSrg)� GCTests.test_instance.<locals>.A�r#Nrrr#r"rrsr��rtr"rsrru�r3rsrvs   r�
test_instance�GCTests.test_instance�s:��	�	�
�C����
�
�
��
����B�J�J�L�!�,r"c�r�"SS[5nU"5nX"l[R"5 AUR	[R"5S5 "SS[
5n"SSX15nU"5nX"l[R"5 AUR	[R"5S5 AAUR	[R"5S5 U"5UlAUR	[R"5S5 UR
[R"5S5 g)Nc��\rSrSrSrg)�#GCTests.test_newinstance.<locals>.A�r#Nrrr#r"rrsr��rtr"rsrc��\rSrSrSrg)�#GCTests.test_newinstance.<locals>.B�r#Nrrr#r"r�Br��rtr"r�c��\rSrSrSrg)�#GCTests.test_newinstance.<locals>.C�r#Nrrr#r"rr)r��rtr"r))r*rvr\r]rw�listr^)r3rsrvr�r)s     r�test_newinstance�GCTests.test_newinstance�s���	��	�
�C����
�
�
��
����B�J�J�L�!�,�	��	�	��	�
�C����
�
�
��
����B�J�J�L�!�,�
�q����B�J�J�L�!�,��c���
����B�J�J�L�!�,��������q�)r"c��"SS5nU"5n[R"5 AUR[R"5S5 g)Nc��\rSrSrSrSrg)�GCTests.test_method.<locals>.A�c�&�URUlgr/)r4�initrNs rr4�'GCTests.test_method.<locals>.A.__init__�s
�� �M�M��	r")r�Nr6r#r"rrsr��s��
*r"rsr)r\r]rwr�s   r�test_method�GCTests.test_method�s7��	*�	*�
�C��
�
�
��
����B�J�J�L�!�,r"c��["SS55n"SS5nU"5nX3l[U5nU"5nXUl[R
"5 AAUR
[R
"5S5 [RHn[U5U:XdMU? O URS5 [RRW5 g)Nc��\rSrSrSrSrg)�(GCTests.test_legacy_finalizer.<locals>.A�c��gr/r#rNs rrO�3GCTests.test_legacy_finalizer.<locals>.A.__tp_del__����$r"r#N�r$r%r&r'rOr(r#r"rrsr�����&r"rsc��\rSrSrSrg)�(GCTests.test_legacy_finalizer.<locals>.B�r#Nrrr#r"rr�r��rtr"r�r�&didn't find obj in garbage (finalizer))
rrv�id�br\r]rw�garbage�fail�remove�r3rsr�rv�id_ar��objs       r�test_legacy_finalizer�GCTests.test_legacy_finalizer�s���
�	'�	'�
�	'�	�	�
�C�����!�u��
�C����
�
�
��
�
����B�J�J�L�!�,��:�:�C��#�w�$���E���

�I�I�>�?�
�
�
���#�r"c���["SS[55n"SS[5nU"5nX3l[U5nU"5nXUl[
R"5 AAUR[
R"5S5 [
RHn[U5U:XdMU? O URS5 [
RRW5 g)Nc��\rSrSrSrSrg)�1GCTests.test_legacy_finalizer_newclass.<locals>.A��c��gr/r#rNs rrO�<GCTests.test_legacy_finalizer_newclass.<locals>.A.__tp_del__�r�r"r#Nr�r#r"rrsr��r�r"rsc��\rSrSrSrg)�1GCTests.test_legacy_finalizer_newclass.<locals>.B��r#Nrrr#r"rr�r��rtr"r�rr�)rr*rvr�r�r\r]rwr�r�r�r�s       r�test_legacy_finalizer_newclass�&GCTests.test_legacy_finalizer_newclass�s���
�	'��	'�
�	'�	��	�
�C�����!�u��
�C����
�
�
��
�
����B�J�J�L�!�,��:�:�C��#�w�$���E���

�I�I�>�?�
�
�
���#�r"c��0n[SU5 [R"5 AUR[R"5S5 g)Nzdef f(): pass
)rj�)�execr\r]�assertInres  r�
test_function�GCTests.test_function�s6��
���
��"�
�
�
��
�	
�
�
�b�j�j�l�F�+r"c��Sn[SU5up#nURUS5 URUS5 URU5 g)Na$	if 1:

        import gc
        import weakref

        class LateFin:
            __slots__ = ('ref',)

            def __del__(self):

                # 8. Now `latefin`'s finalizer is called. Here we
                #    obtain a reference to `func`, which is currently
                #    undergoing `tp_clear`.
                global func
                func = self.ref()

        class Cyclic(tuple):
            __slots__ = ()

            # 4. The finalizers of all garbage objects are called. In
            #    this case this is only us as `func` doesn't have a
            #    finalizer.
            def __del__(self):

                # 5. Create a weakref to `func` now. In previous
                #    versions of Python, this would avoid having it
                #    cleared by the garbage collector before calling
                #    the finalizers.  Now, weakrefs get cleared after
                #    calling finalizers.
                self[1].ref = weakref.ref(self[0])

                # 6. Drop the global reference to `latefin`. The only
                #    remaining reference is the one we have.
                global latefin
                del latefin

            # 7. Now `func` is `tp_clear`-ed. This drops the last
            #    reference to `Cyclic`, which gets `tp_dealloc`-ed.
            #    This drops the last reference to `latefin`.

        latefin = LateFin()
        def func():
            pass
        cyc = tuple.__new__(Cyclic, (func, latefin))

        # 1. Create a reference cycle of `cyc` and `func`.
        func.__module__ = cyc

        # 2. Make the cycle unreachable, but keep the global reference
        #    to `latefin` so that it isn't detected as garbage. This
        #    way its finalizer will not be called immediately.
        del func, cyc

        # 3. Invoke garbage collection,
        #    which will find `cyc` and `func` as garbage.
        gc.collect()

        # 9. Previously, this would crash because the weakref
        #    created in the finalizer revealed the function after
        #    `tp_clear` was called and `func_qualname`
        #    had been NULL-ed out by func_clear().  Now, we clear
        #    weakrefs to unreachable objects before calling `tp_clear`
        #    but after calling finalizers.
        print(f"{func=}")
        �-crs\A\s*func=None)rr^�assertRegex�assertFalse)r3�code�rc�stdout�stderrs     r�.test_function_tp_clear_leaves_consistent_state�6GCTests.test_function_tp_clear_leaves_consistent_state�sM��@��B.�d�D�9���F�����Q������!7�8����� r"c��Sn[R"5 U"5 UR[R"5S5 g)Nc�.�[R"5ngr/)�sys�	_getframe)�frames r�f�GCTests.test_frame.<locals>.f9s
���M�M�O�Er"rYrd)r3r�s  r�
test_frame�GCTests.test_frame7s+��	$�
�
�
��	���������q�)r"c�>�[R"5 UR[R/5 /nUR	U5 [U5n[R"5n[R"U[R-5 A[R"5 [R"U5 UR[[R5S5 [RR5nUR[U5U5 grX)r\r]r^r�r[r��	get_debug�	set_debug�
DEBUG_SAVEALL�len�pop)r3�L�id_L�debugr�s     r�test_saveall�GCTests.test_saveall?s���	�
�
��������R�(���	������!�u�������
���U�R�-�-�-�.�
�
�
�
��
���U������R�Z�Z��!�,��j�j�n�n�������C��$�'r"c��[R"5n[R"5 [R"S5 "SS5nU"5nA[R"5 [R"U6 g)NrYc��\rSrSrSrSrg)�GCTests.test_del.<locals>.Ai]c��[U5 gr/��dirrNs r�__del__�#GCTests.test_del.<locals>.A.__del__^�	���D�	r"r#N�r$r%r&r'r�r(r#r"rrsr�]���
r"rs)r\�
get_threshold�enable�
set_threshold�disable�r3�
thresholdsrsrvs    r�test_del�GCTests.test_delWsT���%�%�'�
�
�	�	��
�����	�	�
�C��
�
�
�
��
���*�%r"c��[R"5n[R"5 [R"S5 "SS[5nU"5nA[R
"5 [R"U6 g)NrYc��\rSrSrSrSrg)�$GCTests.test_del_newclass.<locals>.Ailc��[U5 gr/r�rNs rr��,GCTests.test_del_newclass.<locals>.A.__del__mr�r"r#Nr�r#r"rrsr�lr�r"rs)r\r�r�r�r*r�r�s    r�test_del_newclass�GCTests.test_del_newclassfsV���%�%�'�
�
�	�	��
�����	��	�
�C��
�
�
�
��
���*�%r"zneeds precise allocation countsc�$�[R"5 [R"5upn/n[R"5upVnURX#4S5 URXg4S5 UR	US5 URXQ5 g)N�rr�)r\r]�	get_countr^�
assertLess�
assertGreater)r3rvr��c�xrf�er�s        r�test_get_count�GCTests.test_get_count{sr��	�
�
���,�,�.���a����,�,�.���a����!���(����!���(�����1��	
���1� r"c��[R"5 /n[R"S5 [R"5up#n[R"S5 [R"5upVn[R"S5 [R"5up�n
URX44S5 URXg4S5 URX�4S5 g)NrrYrj)rYr)rrYr)r\r]rr^)r3rrvr�rrfrr��g�hr1s           r�test_collect_generations� GCTests.test_collect_generations�s���
�
�
��
��
�
�
�1�
��,�,�.���a�
�
�
�1�
��,�,�.���a�
�
�
�1�
��,�,�.���a�	
���!���(����!���(����!���(r"c�L^�"U4SjS5m[R"5 Sn[S5H[n/n[U5HnUT"5/nM /n[U5HnUT"5/nM 0n[U5H
nUT"5S.nM M] [R"5 g)Nc�&>�\rSrSrSrU4SjrSrg)�#GCTests.test_trashcan.<locals>.Ouchi�rc�>�TRS-TlTRS-S:Xa[R"5 gg)NrY�r)�nr\r])r3�Ouchs �rr��+GCTests.test_trashcan.<locals>.Ouch.__del__�s0������!�����6�6�B�;�!�#��J�J�L�$r"r#N)r$r%r&r'rr�r()rs�rrr�s����A�
!�
!r"rr�rj)rYrj)r\r��ranger�)r3�N�countrkr1�u�vrs       @r�
test_trashcan�GCTests.test_trashcan�s����	!�	!�(	�	�	�����1�X�E��A��1�X�����K����A��1�X�����K����A��1�X���d�f�%����	�
�
�r"c�^^^	^
^�SmSnSm"UU4SjS[5mUU4Sjm
U	U
4Sjn[R"5n[R"S5 /m	/n[U5H(n[R"US	9nURU5 M* [R"UU	4S
j5 [R"S5 SSS5 [R"U5 [R"5 UR[!TR"5[!TR$55 g!,(df   Nr=f![R"U5 f=f)N�<rjc3�x# �Sv� [R"S5 g![R"S5 f=f7f)Ng���ư>)�time�sleepr#r"r�sleeper_gen�2GCTests.test_trashcan_threads.<locals>.sleeper_gen�s%���
%���
�
�8�$���
�
�8�$�s�:��:�7�:c�8>�\rSrSr/r/rU4SjrUU4SjrSrg)�(GCTests.test_trashcan_threads.<locals>.Ci�c�D>�XSS&TRRS5 gr/)�initsr[)r3�alistr)s  �rr4�1GCTests.test_trashcan_threads.<locals>.C.__init__�s����Q�������t�$r"c�`>�TRRS5 T"5n[U5 gr/)�delsr[�next)r3rr)r#s  ��rr��0GCTests.test_trashcan_threads.<locals>.C.__del__�s#������
�
�d�#� �M���Q�r"r#N)	r$r%r&r'r(r,r4r�r()r)r#s��rr)r&�s����E��D�
%�
�
r"r)c�P>�T"/5n[T5H
nT"U/5/nM Agr/)r)rr1r)�NESTINGs  ��r�make_nested�2GCTests.test_trashcan_threads.<locals>.make_nested�s,����"��A��7�^����s�V�H��$�r"c�6>�T(dT"5 T(dMggr/r#)�exitr1s��r�
run_thread�1GCTests.test_trashcan_threads.<locals>.run_thread�s�����
��dr"g�h㈵��>)�targetc�&>�TRS5$rX�r[)r4s�r�<lambda>�/GCTests.test_trashcan_threads.<locals>.<lambda>�s
������Q�r"��?)r�r��getswitchintervalr�setswitchintervalr�	threading�Threadr[r�
start_threadsr!r"r\r]r^r�r(r,)r3�	N_THREADSr5�old_switchinterval�threadsr1rkr)r0r4r1r#s       @@@@@r�test_trashcan_threads�GCTests.test_trashcan_threads�s������	�	%�	�	��	�$	�	�
!�2�2�4���!�!�$�'�		6��D��G��9�%���$�$�J�7�����q�!�&�"�/�/��9O�P��
�
�3��Q�
�!�!�"4�5�
�
�
������Q�W�W��s�1�6�6�{�3�Q�P��
�!�!�"4�5�s%�AE�0D3�E�3
E�=E�Ec�H�"SS5nU"5nU"5nX2lX#l[R"5 [[R5nAAUR[R"5S5 UR[[R5U5 g)Nc��\rSrSrSrSrg)�GCTests.test_boom.<locals>.Boomi�c��U?[er/)�attr�AttributeError�r3�
someattributes  r�__getattr__�+GCTests.test_boom.<locals>.Boom.__getattr__�s
���I�$�$r"r#N)r$r%r&r'rOr(r#r"r�BoomrI�s��
%r"rQrj�rKr\r]r�r�r^)r3rQrvr��
garbagelens     r�	test_boom�GCTests.test_boom�sq��	%�	%�

�F���F������
�
�
������_�
�
�q�	
�������q�)�����R�Z�Z��*�5r"c�H�"SS5nU"5nU"5nX2lX#l[R"5 [[R5nAAUR[R"5S5 UR[[R5U5 g)Nc� �\rSrSrSrSrSrg)�!GCTests.test_boom2.<locals>.Boom2ic��SUlg�Nr�rrNs rr4�*GCTests.test_boom2.<locals>.Boom2.__init__s	����r"c�\�U=RS-
slURS:�aU?[erX)rrKrLrMs  rrO�-GCTests.test_boom2.<locals>.Boom2.__getattr__s%�����!����6�6�A�:��	�$�$r"r[N)r$r%r&r'r4rOr(r#r"r�Boom2rXs��
�
%r"r_rjrR)r3r_rvr�rSs     r�
test_boom2�GCTests.test_boom2sq��	%�	%�
�G���G������
�
�
������_�
�
�q�	
�������q�)�����R�Z�Z��*�5r"c	�x�/SQn[R"U5nUR5 URX!5 [	U5n[R"U5nUR5 URX!5 SSS.n/SQn[R"U5nUR5 URX%5 [R"SS/SS0S	5nUR5 URUS
S
/[[
S55-5 UR[R"SSS
5/5 g)N)rYr�rr��)rYr)rYr�rrcrYrj�)rrrrrrvy@)r\�
get_referents�sortr^�tupler�r)r3r)�got�atuple�adict�expecteds      r�test_get_referents�GCTests.test_get_referents0s��������u�%�����
�����$��u������v�&�����
�����$��!��������u�%�����
�����'�����1�v��1�v�y�9�����
�����q�!�f�t�E�!�H�~�5�6�����)�)�!�S�"�5�r�:r"c�|�UR[R"S55 UR[R"S55 UR[R"S55 UR[R"S55 UR[R"S55 UR[R"S55 UR[R"S55 UR[R"S55 UR[R"[S555 UR[R"[55 UR[R"[
55 UR[R"[55 UR[R"[
555 "SS	5n"S
S[
5n"SS
5n"SS[5n"SS[
5n[(d)UR[R"[55 UR[R"U55 UR[R"U"555 UR[R"U"555 UR[R"/55 UR[R"[555 UR[R"U"555 UR[R"U"555 UR[R"U"555 g)NrYr<y�?@TF�arvc��\rSrSrSrg)�*GCTests.test_is_tracked.<locals>.UserClassi[r#Nrrr#r"r�	UserClassrq[rtr"rrc��\rSrSrSrg)�(GCTests.test_is_tracked.<locals>.UserInti^r#Nrrr#r"r�UserIntrt^rtr"ruc��\rSrSrSrSrg)�/GCTests.test_is_tracked.<locals>.UserClassSlotsibr#N�r$r%r&r'�	__slots__r(r#r"r�UserClassSlotsrwb����Ir"rzc��\rSrSrSrSrg)�/GCTests.test_is_tracked.<locals>.UserFloatSlotsifr#Nrxr#r"r�UserFloatSlotsr}fr{r"r~c��\rSrSrSrSrg)�-GCTests.test_is_tracked.<locals>.UserIntSlotsijr#Nrxr#r"r�UserIntSlotsr�jr{r"r�)r�r\�
is_tracked�	bytearray�type�intr*�floatr
�
assertTrue�set)r3rrrurzr~r�s      r�test_is_tracked�GCTests.test_is_trackedGs?��	
������t�,�-�������q�)�*�������s�+�,�������z�2�3�������t�,�-�������u�-�.�������t�,�-�������s�+�,�������y���7�8�������t�,�-�������s�+�,�������v�.�/�������v�x�0�1�	�	�	�c�	�	�	�	�U�	�	�3�	����O�O�B�M�M�"�-�.�����
�
�i�0�1�����
�
�i�k�2�3�����
�
�g�i�0�1�����
�
�b�)�*�����
�
�c�e�,�-�����
�
�n�&6�7�8�����
�
�n�&6�7�8�����
�
�l�n�5�6r"c�\^�UR[R"S55 /m"U4SjS5nU"5nUR[R"U55 A[R"5 TR	5nUR[R"U55 g)Nr�c�">�\rSrSrU4SjrSrg)�*GCTests.test_is_finalized.<locals>.Lazarusi~c�(>�TRU5 gr/r9)r3�storages �rr��2GCTests.test_is_finalized.<locals>.Lazarus.__del__s������t�$r"r#Nr�)r�s�r�Lazarusr�~s
���
%�
%r"r�)r�r\�is_finalizedr]r�r�)r3r��lazarusr�s   @r�test_is_finalized�GCTests.test_is_finalizedysu����������+�,���	%�	%��)���������1�2��
�
�
���+�+�-���������0�1r"c��^^�/mUU4Sjn[S5Vs/sHn[U5PM nnUVs/sHn[R"XA5PM snmSn[R
"5 UR
[T5S5 Sn[R
"5 UR
[T5S5 THnUR
US5 M gs snfs snf)Nc�D>�TVs/sH	o"5PM snTSS&gs snfr/r#)r>rD�WRs�ouchs  ��r�callback�*GCTests.test_bug1055820b.<locals>.callback�s ���&)�*�c��r�t�c�*�D��G��*s�rjr)rr,rBrCr\r]r^r�)r3r�r1�Csrrr�r�s      @@r�test_bug1055820b�GCTests.test_bug1055820b�s������	+�$)��8�
,�8�a�h�q�k�8��
,�13�4��A�w�{�{�1�'��4����
�
�
������T��A�&���
�
�
������T��A�&��A�
���Q��%���-��4s
�C� Cc�^^�[R"5 "SS5m"SS5mUU4SjnU"5 [R"5 g)Nc��\rSrSrSrg)� GCTests.test_bug21435.<locals>.Ai�r#Nrrr#r"rrsr��rtr"rsc� �\rSrSrSrSrSrg)� GCTests.test_bug21435.<locals>.Bi�c��Xlgr/r[)r3rs  rr4�)GCTests.test_bug21435.<locals>.B.__init__�s���r"c��SUlgr/�rKrNs rr��(GCTests.test_bug21435.<locals>.B.__del__�s	�� ��	r")rKrN)r$r%r&r'r4r�r(r#r"rr�r��s��
�
!r"r�c�F>�T"5nT"T"55nXlXlgr/r�)rvr�rsr�s  ��r�do_work�&GCTests.test_bug21435.<locals>.do_work�s�����A��!�#��A��F��Fr")r\r])r3r�rsr�s  @@r�
test_bug21435�GCTests.test_bug21435�s7���	�
�
��	�	�	!�	!�	�	�	�
�
�
�r"Nzrequires _testcapic�6^^�SSKmSnUU4SjnU"US-5nTRSU5 TRSU5 U"US-5nTRSU5 TRS	U;=(d S
U;U5 U"US-5nTRSU5 g)
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)
        c�^>�TR[RSSU/TRTRS9nUR	5up#UR
R
5 URR
5 TRURS5 TRUS5 U$)Nz-Wdr��r�r�rr")
�Popenr��
executable�PIPE�communicater��closer�r^�
returncode)r��pr�r�r3�
subprocesss    ��r�run_command�5GCTests.test_garbage_at_shutdown.<locals>.run_command�s����� � �#�.�.�%��t�!D�!���!���!�(�A��]�]�_�N�F�
�H�H�N�N��
�H�H�N�N�����Q�\�\�1�-����V�S�)��Mr"�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�r��assertNotInr�)r3r�r�r�r�s`   @r�test_garbage_at_shutdown� GCTests.test_garbage_at_shutdown�s����	���$		��T�C�Z�(���
�
�'�(.�	0������0��T�$<�<�=���
�
�"�#)�	+����
+�v�
5�
7�
+�v�
5��	@��T�$6�6�7�����=�v�Fr"c�f�Sn[SU5up#nURUR5S5 g)Nz�if 1:
            class C:
                def __del__(self):
                    print('__del__ called')
            l = [C()]
            l.append(l)
            r��__del__ called)rr^�strip)r3r�r��out�errs     r�test_gc_main_module_at_shutdown�'GCTests.test_gc_main_module_at_shutdown�s2����(��d�3�����������&7�8r"c���[5nSnSU<S3n[USU5 [SU5upEnURUR	5S5 SSS5 g!,(df   g=f)Nz�if 1:
                class C:
                    def __del__(self):
                        print('__del__ called')
                l = [C()]
                l.append(l)
                zDif 1:
                import sys
                sys.path.insert(0, z0)
                import gctest
                �gctestr�r�)rrrr^r�)r3�
script_dir�moduler�r�r�r�s       r�#test_gc_ordinary_module_at_shutdown�+GCTests.test_gc_ordinary_module_at_shutdowns[��
�Z�:��F�"�	$�D�

�
�H�f�5�+�D�$�7�L�B�S����S�Y�Y�[�*;�<��Z�Z�s�AA�
A(c��SnUR[[5 [[SSS9nUR	U5 SSS5 [[5up4nUR
UR5S5 g!,(df   NA=f)Nz�if 1:
            class ClassWithDel:
                def __del__(self):
                    print('__del__ called')
            a = ClassWithDel()
            a.link = a
            raise SystemExit(0)�wzutf-8)�encodingr�)�
addCleanuprr
�open�writerr^r�)r3r��scriptr�r�r�s      r�test_global_del_SystemExit�"GCTests.test_global_del_SystemExitsf��#��	
�����'�
�&�#��
0�F��L�L���1�'��/�����������&7�8�1�
0�s�A9�9
Bc�F�[R"5nUR[U5S5 UHunUR	U[
5 UR[
U51Sk5 URUSS5 URUSS5 URUSS5 Mw [R"5(a4UR[R5 [R"5 [R"5n[R"S5 [R"5nURUSSUSSS-5 URUSSUSS5 URUSSUSS5 [R"S5 [R"5nURUSSUSSS-5 URUSSUSS5 URUSSUSSS-5 g)	Nr�>�	collected�collections�
uncollectabler�rr�r�rYrj)
r\�	get_statsr^r��assertIsInstance�dictr��assertGreaterEqual�	isenabledr�r�r�r])r3�stats�st�old�news     r�test_get_stats�GCTests.test_get_stats$s������������U��Q�'��B��!�!�"�d�+����S��W�J�
L��#�#�B�{�O�Q�7��#�#�B�}�$5�q�9��#�#�B��$7��;�
��<�<�>�>��O�O�B�I�I�&��J�J�L��l�l�n��
�
�
�1�
��l�l�n������Q��
�.��A��}�0E��0I�J�����Q��
�.��A��}�0E�F�����Q��
�.��A��}�0E�F�
�
�
�1�
��l�l�n������Q��
�.��A��}�0E��0I�J�����Q��
�.��A��}�0E�F�����Q��
�.��A��}�0E��0I�Jr"c���[R"5 UR[R"5S5 [R"5 UR[R"5S5 grZ)r\�freezer�get_freeze_count�unfreezer^rNs r�test_freeze�GCTests.test_freeze>sF��
�	�	�����2�.�.�0�!�4�
���
�����,�,�.��2r"c��^�[R"5 /mTRT5 UR[	U4Sj[R
"5555 g)Nc3�,># �UH	nTULv� M g7fr/r#��.0�elementr`s  �r�	<genexpr>�+GCTests.test_get_objects.<locals>.<genexpr>Is����A�0@�W�A��L�0@���)r\r]r[r��any�get_objectsr_s @r�test_get_objects�GCTests.test_get_objectsDs=���
�
�
����	���������A����0@�A�A�	
r"zneed generational GCc	�
^�[R"5 /mTRT5 UR[	U4Sj[R
"SS9555 UR
[	U4Sj[R
"SS9555 UR
[	U4Sj[R
"SS9555 [R"SS9 UR
[	U4Sj[R
"SS9555 UR[	U4S	j[R
"SS9555 UR
[	U4S
j[R
"SS9555 [R"SS9 UR
[	U4Sj[R
"SS9555 UR
[	U4Sj[R
"SS9555 UR[	U4S
j[R
"SS9555 [R"SS9 UR
[	U4Sj[R
"SS9555 UR
[	U4Sj[R
"SS9555 UR[	U4Sj[R
"SS9555 @[R"5 g)Nc3�,># �UH	nTULv� M g7fr/r#r�s  �rr��7GCTests.test_get_objects_generations.<locals>.<genexpr>R�����M�0L�W�A��L�0L�r�r��
generationc3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�U�����N�1M�W�A��L�1M�r�rYc3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�Xr�r�rjc3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�\r�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�_r�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�br�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�fr�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�ir�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�lr�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�pr�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�sr�r�c3�,># �UH	nTULv� M g7fr/r#r�s  �rr�r�vr�r�)r\r]r[r�r�r�r�r_s @r�test_get_objects_generations�$GCTests.test_get_objects_generationsLs���
�
�
����	���������M����!�0L�M�M�	
�	
����N����1�1M�N�N�	
�	
����M����!�0L�M�M�	
�	�
�
�a� �����M����!�0L�M�M�	
�	
����N����1�1M�N�N�	
�	
����M����!�0L�M�M�	
�	�
�
�a� �����M����!�0L�M�M�	
�	
����N����1�1M�N�N�	
�	
����M����!�0L�M�M�	
�	�
�
�a� �����M����!�0L�M�M�	
�	
����N����1�1M�N�N�	
�	
����M����!�0L�M�M�	
�
�
�
�
�r"c	���[R"5 UR[[R"55[[R"SS955 UR[[RS5 UR[[RS5 UR[[RS5 UR[[RS5 g)Nr���i����1gX9��v��?)r\r]r^r�r��assertRaises�
ValueError�	TypeErrorrNs r�test_get_objects_arguments�"GCTests.test_get_objects_arguments{s���
�
�
������R�^�^�-�.��R�^�^�t�<�=�	?�	
���*�b�n�n�d�;����*�b�n�n�e�<����)�R�^�^�S�9����)�R�^�^�U�;r"c�v^�"SS5n"U4SjSU5m[R"5 [R"5 T"5nURTRS5 A[R"5 URTRS5 UR[TR5S5 TRR5 URTRS5 [R"5 URTRS5 [R"5 g)Nc��\rSrSrSrSrg)�AGCTests.test_resurrection_only_happens_once_per_object.<locals>.Ai�c��Xlgr/��merNs rr4�JGCTests.test_resurrection_only_happens_once_per_object.<locals>.A.__init__�����r"rNr6r#r"rrsr����
r"rsc�*>�\rSrSrSr/rU4SjrSrg)�GGCTests.test_resurrection_only_happens_once_per_object.<locals>.Lazarusi�rc�f>�T=RS-
slTRRU5 grX)�resurrected�resurrected_instancesr[�r3r�s �rr��OGCTests.test_resurrection_only_happens_once_per_object.<locals>.Lazarus.__del__�s(����#�#�q�(�#��-�-�4�4�T�:r"r#N)r$r%r&r'rrr�r(�r�s�rr�r�s����K�$&�!�
;�
;r"r�rrY)	r\r]r�r^rr�r�clearr�)r3rs�lazr�s   @r�.test_resurrection_only_happens_once_per_object�6GCTests.test_resurrection_only_happens_once_per_object�s����	�	�	;�a�	;�	�
�
��
�
�
���i������,�,�a�0�
�
�
�
������,�,�a�0�����W�:�:�;�Q�?�	�%�%�+�+�-�����,�,�a�0�
�
�
������,�,�a�0�
�	�	�r"c�R^�"SS5n"U4SjS5m[R"5 [R"5 T"5nU"5n[U5nX2lX#lAA[R"5 UR
[TR5S5 TRR5nUR[US55 UR
[UR5U5 [R"5 [R"5 g)Nc��\rSrSrSrSrg)�6GCTests.test_resurrection_is_transitive.<locals>.Cargoi�c��Xlgr/rrNs rr4�?GCTests.test_resurrection_is_transitive.<locals>.Cargo.__init__�rr"rNr6r#r"r�Cargor)�rr"r,c�&>�\rSrSr/rU4SjrSrg)�8GCTests.test_resurrection_is_transitive.<locals>.Lazarusi�c�<>�TRRU5 gr/)rr[r s �rr��@GCTests.test_resurrection_is_transitive.<locals>.Lazarus.__del__�s����-�-�4�4�T�:r"r#N)r$r%r&r'rr�r(r"s�rr�r.�s���$&�!�
;�
;r"r�rY�cargo)
r\r]r�r�r1r$r^r�rr�r��hasattrr�)r3r,r$r1�cargo_id�instancer�s      @r�test_resurrection_is_transitive�'GCTests.test_resurrection_is_transitive�s����	�	�	;�	;�	�
�
��
�
�
���i������e�9���	��	�
��
�
�
������W�:�:�;�Q�?��0�0�4�4�6�������'�2�3�����H�N�N�+�X�6�
�
�
��
�	�	�r"c�<^�Sn"SS5n"U4SjSU5n/mSn[R"5 [R"5 U"5upV[U5H
nU"5 M [R"5nU"5up�UR	X�5 UR	X�-
U5 UR	X�-
S5 X�peU"5 [R"5nU"5up�UR	US5 UR	X�-
S5 UR	X�-
S5 X�pe[U5H
nU"5 M U"5 [R"5nU"5up�UR	X�5 UR	X�-
U5 UR	X�-
S5 X�peTR5 [R"5nU"5up�UR	US5 UR	X�-
S5 UR	X�-
S5 [R"5 g)	N�dc��\rSrSrSrSrg)�LGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Ai�c��Xlgr/rrNs rr4�UGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.A.__init__�rr"rNr6r#r"rrsr:�rr"rsc�">�\rSrSrU4SjrSrg)�LGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Zi�c�(>�TRU5 gr/r9)r3�zss �rr��TGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.Z.__del__�s����	�	�$�r"r#Nr�)r@s�r�Zr>�s
���
 �
 r"rBc�F�[R"5SnUSUS4$)N���r�r�)r\r�)rfs r�getstats�SGCTests.test_resurrection_does_not_block_cleanup_of_other_objects.<locals>.getstats�s&������r�"�A��[�>�1�_�#5�5�5r"rrj)r\r]r�rr^r#r�)r3rrsrBrE�oldc�oldncr1rkr�ncr@s           @r�9test_resurrection_does_not_block_cleanup_of_other_objects�AGCTests.test_resurrection_does_not_block_cleanup_of_other_objects�s����

��	�	�	 ��	 ���	6�	�
�
��
�
�
���j����q��A�
�C���J�J�L���
�������������1�%������Q�'��e�	���J�J�L���
�������A�������1�%������Q�'��e��q��A�
�C��	���J�J�L���
�������������1�%������Q�'��e�
���
��J�J�L���
�������A�������1�%������Q�'�
�	�	�r"z%requires ContainerNoGC extension typec��[RR5n"SS5n"SS5nU"5nXDl[	U"55Ul[R"UR
RU5Ul	UR/nURU5 [R"5 [R"5 AA[R"5 UR5 [R"5 g)Nc��\rSrSr/SQrSrg)�+GCTests.test_trash_weakref_clear.<locals>.Ai0)rv�y�wzr#Nrxr#r"rrsrN0s��(�Ir"rsc��\rSrSrSrg)�+GCTests.test_trash_weakref_clear.<locals>.Zi3r#Nrrr#r"rrBrR3rtr"rB)r�mock�MockrvrrOrBrC�valuerPr[r\r]r��assert_not_calledr�)r3r�rsrBrv�wr_cycles      r�test_trash_weakref_clear� GCTests.test_trash_weakref_clears���@�=�=�%�%�'��	)�	)�	�	�
�C�����A�C� ����{�{�1�3�3�9�9�h�/����D�D�6������!�
�
�
��
�
�
��
�x�
�
�
��	�"�"�$�
�	�	�r"c�b�SSKnSSKnURnURnUR	[
R"U55 UR[
R"U55 UR[[
R"U55S5 [
R"U5 grZ)�	_datetime�_socket�
datetime_CAPI�CAPIr�r\r�r�r^r�re)r3r[r\�untracked_capsule�tracked_capsules     r�test_get_referents_on_capsule�%GCTests.test_get_referents_on_capsuleIs}��	��%�3�3��!�,�,��
	
������'8�9�:�����
�
�o�6�7�����R�-�-�.?�@�A�1�E�
����)r"c�^^�UmSm"UU4SjS5nU"5nX"lA[R"5 URT5 g)NFc�$>�\rSrSrUU4SjrSrg)�;GCTests.test_get_objects_during_gc.<locals>.GetObjectsOnDeliac�>�Sm[R"5nUHnTRX L5 M TR[R"U5/5 gr<)r\r�r�r^�
get_referrers)r3�objsr�r��tests   ��rr��CGCTests.test_get_objects_during_gc.<locals>.GetObjectsOnDel.__del__bsG��� �	��~�~�'���C��O�O�C�O�4� �� � ��!1�!1�$�!7��<r"r#Nr�)r�ris��r�GetObjectsOnDelreas
���
=�
=r"rk)�cycler\r]r�)r3rkr�r�ris   @@r�test_get_objects_during_gc�"GCTests.test_get_objects_during_gcZs@������	�	=�	=�����	��
�
�
�����	�"r"c��/SQn[R"5 U/nURU5 A[R"5 [R"5 g)N)rYrjr�)r\r�r[r]r�)r3rrOs   r�test_traverse_frozen_objects�$GCTests.test_traverse_frozen_objectsrs9��
��
�	�	��
�C��	�����
�
�
�
��
���
r"c�H�[R"S5n[SU5 g)Na
        import gc
        import unittest


        class Test(unittest.TestCase):
            def test_something(self):
                gc.freeze()
                gc.collect()
                gc.unfreeze()


        if __name__ == "__main__":
            unittest.main()
        r���textwrap�dedentr)r3�sources  r�test_deferred_refcount_frozen�%GCTests.test_deferred_refcount_frozen~s#�����"�
��	��v�&r"r#)<r$r%r&r'rargrlr	ryrr�r�r�rr�r�r�r�rr�r�r�r�rrr
rr�requires_working_threadingrErTr`rlr�r�r�r�rr�skipIf�	_testcapir�r�r�r�r�r�r�rrr%r5rJrrXrarmrprwr(r#r"rrUrUXsA��*�*�*���-� �-���-� �-�-���*� �*�0-�����2����2��	,� �	,�G!�R�*��*�(�0
&�
&�*��;�<�!�=��!��)��)�(!�F�0�0�2�84�3�84�t6�06�6;�.��/7� �/7�b2�$&�0�@���
�_�_�Y�$�&�(<�=�.G�>���.G�`9�=�&9�K�43�
��0�1�,�2�,�\<�"�H �DA�F�_�_�]�d�*�<�>�7�>�7�r�*��*� �#��#�.
�'r"rUc��\rSrSrSrSrSrSrSrSr	Sr
\S	5r\
"5\R"\S
5S55rSrg
)�GCCallbackTestsi�c�t�[R"5Ul[R"5 [R"5Ul[R"S5 [RRUR5 [RRUR5 /UlgrZ)r\r��enabledr�r�r�r��	callbacksr[�cb1�cb2�othergarbagerNs r�setUp�GCCallbackTests.setUp�sd���|�|�~���
�
�
���\�\�^��
�
���Q��
�����D�H�H�%�
�����D�H�H�%���r"c� �U?[RRUR5 [RRUR
5 [R"UR5 UR(a[R"5 [R"5 [RH!n[U[5(dMSUlM# [RSS2	U?[R"5 gr/)�visitr\r�r�r�r�r�r�rr�r]r��
isinstancerGrKr�)r3r�s  r�tearDown�GCCallbackTests.tearDown�s����J�
�����D�H�H�%�
�����D�H�H�%�
���T�Z�Z� ��<�<��I�I�K�
�
�
���:�:�C��#�}�-�-�"����
�J�J�q�M���
�
�
�r"c���/Ul[R"5 [RSS/sn[RSS&URRU5 /Ulgr/)r�r\r]r�r�r[)r3r�s  r�preclean�GCCallbackTests.preclean�sK����
�
�
�
��!#���A��������A����� � ��)���
r"c�R�URRSU[U545 grX)r�r[r�)r3�phase�infos   rr��GCCallbackTests.cb1�s���
�
���1�e�T�$�Z�0�1r"c��URRSU[U545 US:Xa�[US5(a�[R
Vs/sHn[
U[5(dMUPM nn[R
Vs/sHn[
U[5(aMUPM sn[R
SS&UH
nSUlM gggs snfs snf)Nrj�stop�cleanup)	r�r[r�r2r\r�r�rGrK)r3r�r�r�ucs     rr��GCCallbackTests.cb2�s����
�
���1�e�T�$�Z�0�1��F�?�w�t�Y�7�7��Z�Z�H�Z��:�a��+G�!�Z�B�H�(*�
�
�B�
�1�$.�q�-�$@��
�B�B�J�J�q�M��� ��	�� 8�?��H��Bs�C�.C�C�%Cc�"�UR5 [R"5 URVs/sHoSPM	 nnUVs/sHo3S:XdM
UPM nnUVs/sHo3S:XdM
UPM nnUR	US/S-5 UR	US/S-5 URVs/sHoSPM	 nnUVs/sHo3S:XdM
UPM nnUVs/sHo3S:XdM
UPM nnUR	US/S-5 UR	US/S-5 URHDnUSnURSU;5 URSU;5 URSU;5 MF gs snfs snfs snfs snfs snfs snf)	NrrYrj�startr�r�r�r�)r�r\r]r�r^r�)r3rrr1�n1�n2r�s       r�test_collect�GCCallbackTests.test_collect�sf���
�
��
�
�
��
 �:�:�&�:�a�q�T�:��&��
%��A�1�f�a���
%��
%��A�1�f�a���
%�����a�S��U�#�����a�S��U�#� �:�:�&�:�a�q�T�:��&��
+��A�7�l�a���
+��
*��A�6�k�a���
*�����g�Y�q�[�)�����f�X�a�Z�(����A��Q�4�D��O�O�L�D�0�1��O�O�K�4�/�0��O�O�O�t�3�4�	��
'��
%��
%��

'��
+��
*s;�E3�	E8�E8�!	E=�.E=�0F�	F�F�	F�*Fc��UR5 [R"S5 URHnUSnUR	USS5 M g)Nrjr�)r�r\r]r�r^)r3rr�s   r�test_collect_generation�'GCCallbackTests.test_collect_generation�sB���
�
��
�
�
�1�
����A��Q�4�D����T�,�/��3�r"c�*�UR5 [5 [5 [S5 [R"5 UR
H=nUSS:waMUSnUR
USS5 UR
USS5 M? UR
[[R5S5 [RHnURU[5 M SUl
/Ul/[RSS&[R"5 UR
H=nUSS:waMUSnUR
USS	5 UR
USS5 M? UR
[[R5S	5 g)
NrArYr�rjr�r�rdTr)r�rGr,r\r]r�r^r�r�r�r�)r3rr�rs    r�test_collect_garbage�$GCCallbackTests.test_collect_garbage�s;���
�
��������
�
�
�
�����A���t�v�~���Q�4�D����T�+�.��2����T�/�2�A�6��	
����R�Z�Z��!�,����A��!�!�!�]�3�������
���
�
�1�
�
�
�
�����A���t�v�~���Q�4�D����T�+�.��2����T�/�2�A�6��	
����R�Z�Z��!�,r"zbuilt with -NDEBUGc�r�UR5 [S5 SSKn[R"S5nUR[RSU/URURS9nUR5upEURR5 URR5 URUS5 URUS5 SnURUS	U-5 URUS
5 URUSU-5 URUS5 URUS
5 g)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�s<gc.*\.c:[0-9]+: .*: Assertion "gc_get_refs\(.+\) .*" 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�rtrur�r�r�r�r�r�r�r�r�)r3r�r�r�r�r��
address_regexs       r�test_refcount_errors�$GCCallbackTests.test_refcount_errorss!��	
�
�
��	�h������ �
��&
���c�n�n�d�D�9�$.�O�O�$.�O�O�
�
5��������	������	����������L�	N�����%�	'�*�
�����"�]�2�	4�����#�	%�����"�]�2�	4�����&�	(�����-�	/r")r�r�rr�r�N)r$r%r&r'r�r�r�r�r�r�r�rr�rrrz�BUILD_WITH_NDEBUGr�r(r#r"rr}r}�sh����"�2�!�5�64�� -�� -�F��
�_�_�&�)�+�2/�+��2/r"r}c��\rSrSrSrSrSr\"SSS5S5r\"SSS5S5r	\"S5S	5r
S
rg)�GCTogglingTestsiJc�.�[R"5 gr/)r\r�rNs rr��GCTogglingTests.setUpKs��
�	�	�r"c�.�[R"5 gr/)r\r�rNs rr��GCTogglingTests.tearDownNs��
�
�
�r"c�^
^�[S5n[R"5 [S5nXlU?[S5n[
R"U5m
/mU
U4Sjn[
R"X5nS=n=p#/nSn[5n[(a[R"5 UR(d[US-
nUS:�aURS5 UR[T5S5 UR/5 UR(dM[UR[T5S5 THn	URU	S5 M g)NrrYrjc�>�T"5/TSS&gr/r#)r>�c2wrr�s ��rr��2GCTogglingTests.test_bug1055820c.<locals>.callbackas����v�h�D��Gr"�'�'gc didn't happen after 10000 iterations)r,r\r]�
keep_c0_aliver2rBrCr8r
r=r�r^r�r[)r3�c0�c1�c2r��c0wr�junkr1�detectorrr�r�s          @@r�test_bug1055820c� GCTogglingTests.test_bug1055820cQs����a�[��
�
�
��
�a�[�����G�
�a�[���{�{�2�����	��{�{�2�(������R�@��
���=���?�
�J�J�L��&�&�
��F�A��5�y��	�	�C�D����S��Y��*��K�K��O��&�&�&�	
����T��A�&��A�
���Q��%�r"rrc�~^	^
�/m
"U	U
4SjS[5nU"S5n[R"5 [S5nX#lU?[S5n[
R"U5m	S=n=p4[5n/nSn[(a[R"5 UR(d[US-
nUS:�aURS5 UR[T
5S5 UR/5 UR(dM[UR[T
5S5 T
HnURUS5 M g)Nc�$>�\rSrSrUU4SjrSrg)�+GCTogglingTests.test_bug1055820d.<locals>.Di�c�>�T"5/TSS&gr/r#)r3r�r�s ��rr��3GCTogglingTests.test_bug1055820d.<locals>.D.__del__�s����6�(��Q�r"r#Nr�)r�r�s��r�Dr��s
���
#�
#r"r�rrYrjr�r�)r,r\r]�
keep_d0_aliver2rBrCr8r
r=r�r^r�r[)r3r��d0r�r�r�r�r1rr�r�s         @@r�test_bug1055820d� GCTogglingTests.test_bug1055820d�s�����	#�	#��	#��q�T��
�
�
��
�a�[�����G�
�a�[���{�{�2�������R�<�=����
���?�
�J�J�L��&�&�
��F�A��5�y��	�	�C�D����S��Y��*��K�K��O��&�&�&�	
����T��A�&��A�
���Q��%�r"c��/nSn[5nUR(d@US-
nUS:�aURS5 UR/5 UR(dM@[R
"5 /nSn[5nUR(d0US-
nUS:�aO$UR/5 UR(dM0UR
US5 [R"5 g![R"5 f=f)NrrYr�r�i')r8r=r�r[r\r�r^r��r3r�r1r�s    r�$test_indirect_calls_with_gc_disabled�4GCTogglingTests.test_indirect_calls_with_gc_disabled�s�����
���=���&�&�
��F�A��5�y��	�	�C�D��K�K��O�	�&�&�&�
	��J�J�L��D��A�"�}�H��*�*��Q����u�9�����B��	�*�*�*�
���Q��&��I�I�K��B�I�I�K�s�!A"C-�C-�-Dc���/nSn[5nUR(d0US-
nUS:�aO$UR/5 UR(dM0URUS5 g)NrrYiP�iQ�)r8r=r[r^r�s    r�test_threshold_zero�#GCTogglingTests.test_threshold_zero�sZ����
���=���&�&�
��F�A��5�y���K�K��O�	�&�&�&�	
����E�"r"r#N)r$r%r&r'r�r�r�rr�r�r�r(r#r"rr�r�Jsh����H&�T�$��1��E&��E&�N�$��1�����4�!�_�
#��
#r"r�c��\rSrSrSrSrg)�PythonFinalizationTestsic�H�[R"S5n[SU5 g)NaM
            import ast
            import codecs
            from test import support

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

            # Store the tree somewhere to survive until the last GC collection
            support.late_deletion(tree)
        r�rs)r3r�s  r�
test_ast_fini�%PythonFinalizationTests.test_ast_fini
s#�����
 �

��	��t�$r"r#N)r$r%r&r'r�r(r#r"rr�r�s��%r"r�c��[R"5q[R"5 [R"5q[R"[
[R)-5 [R"5 gr/)	r\r�rr�r�r�r��
DEBUG_LEAKr]r#r"r�setUpModuler�!sA���l�l�n�G��J�J�L��L�L�N�E��L�L��"�-�-��'�(��J�J�Lr"c���[R"[5 [(a[	S5 [R
"5 [(d[R"5 gg)Nzrestoring automatic collection)r\r�r�r�printr�rr�r#r"r�tearDownModuler�+s8���L�L����w�
�.�/��I�I�K��7�
�
�
��r"�__main__)3r�
unittest.mockrir�test.supportrrrrrr	r
�test.support.import_helperr�test.support.os_helperrr
r�test.support.script_helperrrrrr\r��	sysconfigrtr?r!rBr{rr�ImportErrorr*r,r8rG�get_config_vars�getr�r2�TestCaserUr}r�r�r�r�r$�mainr#r"r�<module>r�sd�����+�+�+�5�;�;�D�7�	�
��������%�'�$�v��
:�&�:�
�

�F�

�
�

�
����"�"�;��3�3�#�y�'@�'@�'B�;�'O�O��
%�S�*<�=�=��
~'�h���~'�B"n/�h�'�'�n/�b#�h�'�'�#�D%�h�/�/�%�*�	��z���M�M�O���}0���I��
�M��s�E�
E#�"E#

Youez - 2016 - github.com/yon3zu
LinuXploit