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_finalization.cpython-39.pyc

a

��g�:�@s>dZddlZddlZddlZddlZzddlmZWneyNdd�ZYn0zddlmZWneyzdd�ZYn0dd	l	m
Z
Gd
d�d�ZGdd
�d
e�ZeGdd�de��Z
eGdd�de��ZGdd�de�ZGdd�de�ZGdd�d�ZGdd�deej�ZGdd�d�ZGdd�dee�ZGdd�dee�ZGd d!�d!ee�ZGd"d#�d#eej�ZGd$d%�d%�ZGd&d'�d'ee�ZGd(d)�d)ee�ZGd*d+�d+ee�ZGd,d-�d-eej�ZGd.d/�d/e�ZeGd0d1�d1e��ZeGd2d3�d3e��Z eGd4d5�d5ee��Z!e
j"Gd6d7�d7eej��Z#e$d8k�r:e�%�dS)9zB
Tests for object finalization semantics, as outlined in PEP 442.
�N)�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	�2/usr/local/lib/python3.9/test/test_finalization.py�__new__szwith_tp_del.<locals>.C.__new__N��__name__�
__module__�__qualname__rr	r	r	r
�Csr)�object�rrr	r	r
r
sr)�
without_gccCsGdd�d�}|S)Nc@seZdZdd�ZdS)zwithout_gc.<locals>.Cc_std��dS)Nzrequires _testcapi.without_gcrrr	r	r
rszwithout_gc.<locals>.C.__new__Nrr	r	r	r
rsrr	rr	r	r
rsr)�supportc@s^eZdZdZgZgZgZgZdZdZ	e
dd��Ze
ej
dd���Zdd	�Zd
d�Zdd
�ZdS)�NonGCSimpleBasezd
    The base class for all the objects under test, equipped with various
    testing features.
    Fr	cCs>|j��|j��tj��t��|j��|j��dS�N)�	survivors�clear�errors�gc�garbage�collect�	del_calls�tp_del_calls�rr	r	r
�_cleanup.s



zNonGCSimpleBase._cleanupc	cs�t���d|j��|j��dt_z(dV|jr<|jd�Wdt_|��ndt_|��0Wd�n1sr0YdS)zI
        A context manager to use around all finalization tests.
        FNrT)	rZ
disable_gcrrrr�	_cleaningrr rr	r	r
�test7s



�zNonGCSimpleBase.testcCsdS)z8
        Check the object is sane (non-broken).
        Nr	��selfr	r	r
�check_sanityIszNonGCSimpleBase.check_sanityc
Cs`z*|js(|j�t|��|��|��Wn0tyZ}z|j�|�WYd}~n
d}~00dS)z�
        PEP 442 finalizer.  Record that this was called, check the
        object is in a sane state, and invoke a side effect.
        N)r!r�append�idr%�side_effect�	Exceptionr�r$�er	r	r
�__del__NszNonGCSimpleBase.__del__cCsdS)z6
        A side effect called on destruction.
        Nr	r#r	r	r
r([szNonGCSimpleBase.side_effectN)r
rr�__doc__rrrrr!�	__slots__�classmethodr �
contextlib�contextmanagerr"r%r,r(r	r	r	r
rs

rc@seZdZdd�Zdd�ZdS)�
SimpleBasecCst|�|_dSr)r'�id_r#r	r	r
�__init__cszSimpleBase.__init__cCs|jt|�ksJ�dSr)r3r'r#r	r	r
r%fszSimpleBase.check_sanityN)r
rrr4r%r	r	r	r
r2asr2c@seZdZdZdS)�NonGCr	N)r
rrr.r	r	r	r
r5jsr5c@seZdZdZdd�ZdS)�NonGCResurrectorr	cCs|j�|�dS�zF
        Resurrect self by storing self in a class-wide list.
        N�rr&r#r	r	r
r(rszNonGCResurrector.side_effectN)r
rrr.r(r	r	r	r
r6nsr6c@seZdZdS)�SimpleN�r
rrr	r	r	r
r9xsr9c@seZdZdd�ZdS)�SimpleResurrectorcCs|j�|�dSr7r8r#r	r	r
r(~szSimpleResurrector.side_effectN�r
rrr(r	r	r	r
r;|sr;c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestBasecCs"tjdd�|_gtjdd�<dSr)rr�old_garbager#r	r	r
�setUp�szTestBase.setUpcCs2z|�tjg�W|`t��n|`t��0dSr)�assertEqualrrr>rr#r	r	r
�tearDown�s
�zTestBase.tearDowncCs|�ttj�t|��dSr)r@�sortedr2r�r$�idsr	r	r
�assert_del_calls�szTestBase.assert_del_callscCs|�ttj�t|��dSr)r@rBr2rrCr	r	r
�assert_tp_del_calls�szTestBase.assert_tp_del_callscCs$|�tdd�tjD��t|��dS)Ncss|]}t|�VqdSr�r'��.0�xr	r	r
�	<genexpr>��z,TestBase.assert_survivors.<locals>.<genexpr>)r@rBr2rrCr	r	r
�assert_survivors�szTestBase.assert_survivorscCs$|�tdd�tjD��t|��dS)Ncss|]}t|�VqdSrrGrHr	r	r
rK�rLz*TestBase.assert_garbage.<locals>.<genexpr>)r@rBrrrCr	r	r
�assert_garbage�szTestBase.assert_garbagecCstj��dSr)r2rrr#r	r	r
�clear_survivors�szTestBase.clear_survivorsN)
r
rrr?rArErFrMrNrOr	r	r	r
r=�sr=c@s<eZdZdZdd�Zdd�Zejdd��Zejdd	��Z	d
S)�SimpleFinalizationTestz.
    Test finalization without refcycles.
    cCs�t���rt�}t|�g}t�|�}~t��|�|�|�	g�|�
|�d�t��|�|�|�	g�Wd�n1s�0YdSr)r2r"r9r'�weakref�refrrrErM�assertIs�r$�srD�wrr	r	r
�test_simple�s





z"SimpleFinalizationTest.test_simplecCs�t���zt�}t|�g}t�|�}~t��|�|�|�	|�|�
|�d�|��t��|�|�|�	g�Wd�n1s�0Y|�|�d�dSr)
r2r"r;r'rQrRrrrErM�assertIsNotrOrSrTr	r	r
�test_simple_resurrect�s





(z,SimpleFinalizationTest.test_simple_resurrectcCs�t���jt�}|�t�|��t|�g}~t��|�|�|�	g�t��|�|�|�	g�Wd�n1sx0YdSr)
r2r"r5�assertFalser�
is_trackedr'rrErM�r$rUrDr	r	r
�test_non_gc�s




z"SimpleFinalizationTest.test_non_gccCs�t���vt�}|�t�|��t|�g}~t��|�|�|�	|�|�
�t��|�|d�|�	|�Wd�n1s�0YdS�N�)r2r"r6rZrr[r'rrErMrOr\r	r	r
�test_non_gc_resurrect�s



z,SimpleFinalizationTest.test_non_gc_resurrectN)
r
rrr-rWrYr�cpython_onlyr]r`r	r	r	r
rP�s

rPcs(eZdZ�fdd�Z�fdd�Z�ZS)�
SelfCycleBasecst���||_dSr)�superr4rRr#��	__class__r	r
r4�s
zSelfCycleBase.__init__cst���|j|usJ�dSr)rcr%rRr#rdr	r
r%�s
zSelfCycleBase.check_sanity)r
rrr4r%�
__classcell__r	r	rdr
rb�srbc@seZdZdS)�SimpleSelfCycleNr:r	r	r	r
rg�srgc@seZdZdS)�SelfCycleResurrectorNr:r	r	r	r
rh�srhc@seZdZdd�ZdS)�SuicidalSelfCyclecCs
d|_dS)�7
        Explicitly break the reference cycle.
        N)rRr#r	r	r
r(�szSuicidalSelfCycle.side_effectNr<r	r	r	r
ri�sric@s(eZdZdZdd�Zdd�Zdd�ZdS)	�SelfCycleFinalizationTestzX
    Test finalization of an object having a single cyclic reference to
    itself.
    cCs�t���rt�}t|�g}t�|�}~t��|�|�|�	g�|�
|�d�t��|�|�|�	g�Wd�n1s�0YdSr)r2r"rgr'rQrRrrrErMrSrTr	r	r
rWs





z%SelfCycleFinalizationTest.test_simplecCs�t����t�}t|�g}t�|�}~t��|�|�|�	|�|�
|�d�|��t��|�|�|�	g�|�
|�d�Wd�n1s�0YdSr)r2r"rhr'rQrRrrrErMrSrOrTr	r	r
rYs






z/SelfCycleFinalizationTest.test_simple_resurrectcCs�t����t�}t|�g}t�|�}~t��|�|�|�	g�|�
|�d�t��|�|�|�	g�|�
|�d�Wd�n1s�0YdSr)r2r"rir'rQrRrrrErMrSrTr	r	r
�test_simple_suicide%s






z-SelfCycleFinalizationTest.test_simple_suicideN)r
rrr-rWrYrlr	r	r	r
rk�srkcs$eZdZdd�Z�fdd�Z�ZS)�ChainedBasecCsd|_||_||_dS)NF��suicided�left�right)r$rpr	r	r
�chain9szChainedBase.chaincs�t���|jr.|jdusJ�|jdus�J�nT|j}|jrJ|jdusXJ�n|j|usXJ�|j}|jrt|jdus�J�n|j|us�J�dSr)rcr%rorprq)r$rprqrdr	r
r%>s
zChainedBase.check_sanity)r
rrrrr%rfr	r	rdr
rm7srmc@seZdZdS)�
SimpleChainedNr:r	r	r	r
rsOsrsc@seZdZdS)�ChainedResurrectorNr:r	r	r	r
rtRsrtc@seZdZdd�ZdS)�SuicidalChainedcCsd|_d|_d|_dS)rjTNrnr#r	r	r
r(WszSuicidalChained.side_effectNr<r	r	r	r
ruUsruc@sheZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�CycleChainFinalizationTestz�
    Test finalization of a cyclic chain.  These tests are similar in
    spirit to the self-cycle tests above, but the collectable object
    graph isn't trivial anymore.
    cCs:dd�|D�}tt|��D]}||�||d�q|S)NcSsg|]
}|��qSr	r	)rIrr	r	r
�
<listcomp>hrLz:CycleChainFinalizationTest.build_chain.<locals>.<listcomp>�)�range�lenrr)r$�classes�nodes�ir	r	r
�build_chaingsz&CycleChainFinalizationTest.build_chaincCs�t|�}t����|�|�}dd�|D�}dd�|D�}~t��|�|�|�g�|�dd�|D�dg|�t��|�|�Wd�n1s�0YdS)NcSsg|]}t|��qSr	rG�rIrUr	r	r
rwqrLzKCycleChainFinalizationTest.check_non_resurrecting_chain.<locals>.<listcomp>cSsg|]}t�|��qSr	�rQrRrr	r	r
rwrrLcSsg|]
}|��qSr	r	�rIrVr	r	r
rwwrL)	rzr2r"r~rrrErMr@)r$r{�Nr|rD�wrsr	r	r
�check_non_resurrecting_chainms



z7CycleChainFinalizationTest.check_non_resurrecting_chaincCs�t|�}t����|�|�}t|�}dd�|D�}dd�|D�}dd�|D�}~t��|�|�|�|�|�dd�|D�dg|�|�	�t��|�|�|�g�Wd�n1s�0YdS)NcSsg|]}t|��qSr	rGrr	r	r
rw�rLzGCycleChainFinalizationTest.check_resurrecting_chain.<locals>.<listcomp>cSsg|]}t|t�rt|��qSr	)�
isinstancer;r'rr	r	r
rw�rLcSsg|]}t�|��qSr	r�rr	r	r
rw�rLcSsg|]
}|��qSr	r	r�r	r	r
rw�rL)
rzr2r"r~rrrErMr@rO)r$r{r�r|rDZsurvivor_idsr�r	r	r
�check_resurrecting_chain{s 




z3CycleChainFinalizationTest.check_resurrecting_chaincCs|�tgd�dS�N�)r�rsr#r	r	r
�test_homogenous�sz*CycleChainFinalizationTest.test_homogenouscCs|�tgd�dSr�)r�rtr#r	r	r
�test_homogenous_resurrect�sz4CycleChainFinalizationTest.test_homogenous_resurrectcCs|�tgd�dSr�)r�rur#r	r	r
�test_homogenous_suicidal�sz3CycleChainFinalizationTest.test_homogenous_suicidalcCs|�ttgd�dSr^�r�rursr#r	r	r
�test_heterogenous_suicidal_one�sz9CycleChainFinalizationTest.test_heterogenous_suicidal_onecCs|�tgdtgd�dSr^r�r#r	r	r
�test_heterogenous_suicidal_two�s�z9CycleChainFinalizationTest.test_heterogenous_suicidal_twocCs|�ttgd�dSr^)r�rtrsr#r	r	r
�test_heterogenous_resurrect_one�sz:CycleChainFinalizationTest.test_heterogenous_resurrect_onecCs|�tttgd�dSr^�r�rtrsrur#r	r	r
�test_heterogenous_resurrect_two�s�z:CycleChainFinalizationTest.test_heterogenous_resurrect_twocCs(|�tgdtgdtgd�dSr^r�r#r	r	r
�!test_heterogenous_resurrect_three�s�z<CycleChainFinalizationTest.test_heterogenous_resurrect_threeN)r
rrr-r~r�r�r�r�r�r�r�r�r�r�r	r	r	r
rv`srvc@seZdZdd�Zdd�ZdS)�
LegacyBasec
CsXz"|js |j�t|��|��Wn0tyR}z|j�|�WYd}~n
d}~00dSr)r!rr&r'r%r)rr*r	r	r
r,�szLegacyBase.__del__c
Cs`z*|js(|j�t|��|��|��Wn0tyZ}z|j�|�WYd}~n
d}~00dS)zJ
        Legacy (pre-PEP 442) finalizer, mapped to a tp_del slot.
        N)r!rr&r'r%r(r)rr*r	r	r
�
__tp_del__�szLegacyBase.__tp_del__N)r
rrr,r�r	r	r	r
r��s
r�c@seZdZdS)�LegacyNr:r	r	r	r
r��sr�c@seZdZdd�ZdS)�LegacyResurrectorcCs|j�|�dSr7r8r#r	r	r
r(�szLegacyResurrector.side_effectNr<r	r	r	r
r��sr�c@seZdZdS)�LegacySelfCycleNr:r	r	r	r
r��sr�cs8eZdZdZ�fdd�Zdd�Zdd�Zdd	�Z�ZS)
�LegacyFinalizationTestz5
    Test finalization of objects with a tp_del.
    cs tj��t��t���dSr)rrrrrcrAr#rdr	r
rA�s
zLegacyFinalizationTest.tearDowncCs�t���|t�}t|�g}t�|�}~t��|�|�|�	|�|�
g�|�|�d�t��|�|�|�	|�Wd�n1s�0YdSr)r2r"r�r'rQrRrrrErFrMrSrTr	r	r
�test_legacy�s






z"LegacyFinalizationTest.test_legacycCs�t����t�}t|�g}t�|�}~t��|�|�|�	|�|�
|�|�|�d�|��t��|�|�|�	|d�|�
|�Wd�n1s�0Y|�|�d�dSr^)
r2r"r�r'rQrRrrrErFrMrSrOrTr	r	r
�test_legacy_resurrect�s 






(z,LegacyFinalizationTest.test_legacy_resurrectcCs�t���vt�}t|�g}t�|�}~t��|�g�|�	g�|�
g�|�|�|�|�d�dtj
d_Wd�n1s�0Y|�g�|�|�d�dS)Nr)r2r"r�r'rQrRrrrErFrMrNrXrrSrTr	r	r
�test_legacy_self_cycles






*
z-LegacyFinalizationTest.test_legacy_self_cycle)	r
rrr-rAr�r�r�rfr	r	rdr
r��s
r��__main__)&r-r0rZunittestrQZ	_testcapir�ImportErrorrr"rrr2r5r6r9r;r=ZTestCaserPrbrgrhrirkrmrsrtrurvr�r�r�r�rar�r
�mainr	r	r	r
�<module>sXB			A
	:MA


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