Sindbad~EG File Manager

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

a

��gNx�@s(dZddlZddlZddlZddlZddlmZmZddlZddl	Z	ddl
Z
ddlmZe	�
eed�d�Zdd�ZGd	d
�d
e�ZGdd�de	j�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZdS)z/
Various tests for synchronization primitives.
�N)�start_new_thread�TIMEOUT_MAX)�support�forkz9platform doesn't support fork (no _at_fork_reinit method)cCst�d�dS)N�{�G�z�?)�time�sleep�r	r	�+/usr/local/lib/python3.9/test/lock_tests.py�_waitsrc@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)
�Bunchz
    A bunch of threads.
    Fcsx��_|�_g�_g�_|�_t���_�j����fdd�}zt	|�D]}t
|d�qLWnd�_�Yn0dS)z�
        Construct a bunch of `n` threads running the same function `f`.
        If `wait_before_exit` is True, the threads won't terminate until
        do_finish() is called.
        c	sZt��}�j�|�z$��W�j�|��jsVt�q*n�j�|��jsTt�qF0dS�N)�	threading�	get_ident�started�append�finished�	_can_exitr)�tid��f�selfr	r
�task,s
�zBunch.__init__.<locals>.taskr	TN)r�nrrrr�wait_threads_exit�wait_thread�	__enter__�ranger)rrrZwait_before_exitr�ir	rr
�__init__s


zBunch.__init__cCst|j�|jkrt�qdSr
)�lenrrr�rr	r	r
�wait_for_started=szBunch.wait_for_startedcCs,t|j�|jkrt�q|j�ddd�dSr
)r rrrr�__exit__r!r	r	r
�wait_for_finishedAszBunch.wait_for_finishedcCs
d|_dS�NT)rr!r	r	r
�	do_finishGszBunch.do_finishN)F)�__name__�
__module__�__qualname__�__doc__rr"r$r&r	r	r	r
rs

rc@s$eZdZdd�Zdd�Zdd�ZdS)�BaseTestCasecCst��|_dSr
)rZthreading_setup�_threadsr!r	r	r
�setUpLszBaseTestCase.setUpcCstj|j�t��dSr
)rZthreading_cleanupr,�
reap_childrenr!r	r	r
�tearDownOszBaseTestCase.tearDowncCs$|�||d�|�||d�dS)Ng333333�?g$@)ZassertGreaterEqual�
assertLess)r�actualZexpectedr	r	r
�
assertTimeoutSszBaseTestCase.assertTimeoutN)r'r(r)r-r/r2r	r	r	r
r+Ksr+c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
BaseLockTestsz;
    Tests for both recursive and non-recursive locks.
    cCs|��}~dSr
)�locktype�r�lockr	r	r
�test_constructoraszBaseLockTests.test_constructorcCs|��}|�t|�d�~dS)Nz<unlocked .* object (.*)?at .*>)r4�assertRegex�reprr5r	r	r
�	test_represzBaseLockTests.test_reprcCs&|��}|��|�t|�d�~dS)Nz<locked .* object (.*)?at .*>)r4�acquirer8r9r5r	r	r
�test_locked_reprjszBaseLockTests.test_locked_reprcCs|��}|��~dSr
)r4r;r5r	r	r
�test_acquire_destroypsz"BaseLockTests.test_acquire_destroycCs|��}|��|��~dSr
�r4r;�releaser5r	r	r
�test_acquire_releaseusz"BaseLockTests.test_acquire_releasecCs$|��}|�|�d��|��dS�NF)r4�
assertTruer;r?r5r	r	r
�test_try_acquire{szBaseLockTests.test_try_acquirecsJ|������g���fdd�}t|d���|��d����dS)Ncs����d��dSrA�rr;r	�r6�resultr	r
r�sz3BaseLockTests.test_try_acquire_contended.<locals>.f�r)r4r;rr$�assertFalser?�rrr	rEr
�test_try_acquire_contended�sz(BaseLockTests.test_try_acquire_contendedcsp|������d}�fdd�}t||�}|��t�|�t|j�d����|�	�|�t|j�|�dS)N�cs������dSr
�r;r?r	�r6r	r
r�sz/BaseLockTests.test_acquire_contended.<locals>.fr)
r4r;rr"r�assertEqualr rr?r$�r�Nr�br	rMr
�test_acquire_contended�s
z$BaseLockTests.test_acquire_contendedcsV|����fdd�}d�fdd�	}|�t|d���|�t|t�t|d���dS)Ncs������dSr
rLr	rMr	r
r�sz"BaseLockTests.test_with.<locals>.fcs4��|dur|�Wd�n1s&0YdSr
r	��errrMr	r
�_with�sz&BaseLockTests.test_with.<locals>._withrG)N)r4rr$�assertRaises�	TypeError)rrrUr	rMr
�	test_with�szBaseLockTests.test_withcs`|����fdd�}tt���}t|d���tt���|kr\t�d�|�|tt����dS)Ncs������dSr
rLr	rMr	r
r�sz)BaseLockTests.test_thread_leak.<locals>.f�g�������?)	r4r r�	enumeraterr$rrrN)rrrr	rMr
�test_thread_leak�s
zBaseLockTests.test_thread_leakcs�|���|�t�jdd�|jt�jdd�|jt�jdd�|jt�jtdd��jtd����t��}|�	�jdd��t��}|�
||d�g���fdd�}t|d���|�
�d	�|��dd
�dS)NFrGi������timeoutg}Ô%�I�TrKcs4t��}���jdd��t��}��||�dS)N��?r\)r�	monotonicrr;)�t1�t2�r6�resultsr	r
r�sz%BaseLockTests.test_timeout.<locals>.frr^)r4rV�
ValueErrorr;�
OverflowErrorrr?rr_rBr0rr$rHr2)rr`rarr	rbr
�test_timeout�s zBaseLockTests.test_timeoutcCs"|��}t�|�}|�|��dSr
)r4�weakref�refZassertIsNotNone�rr6rhr	r	r
�test_weakref_exists�s
z!BaseLockTests.test_weakref_existscCs,|��}t�|�}~t��|�|��dSr
)r4rgrh�gcZcollectZassertIsNonerir	r	r
�test_weakref_deleted�s

z"BaseLockTests.test_weakref_deletedN)r'r(r)r*r7r:r<r=r@rCrJrRrXr[rfrjrlr	r	r	r
r3\s
r3c@s4eZdZdZdd�Zdd�Zdd�Zedd	��Zd
S)�	LockTestszn
    Tests for non-recursive, weak locks
    (which can be acquired and released from different threads).
    cs�|���g���fdd�}t���pt|d�t��dkrBt�q.t�|�t��d����t��dkrtt�q`|�t��d�Wd�n1s�0YdS)Ncs(�����d������d�dSr
�r;rr	�r6Zphaser	r
r�s
z#LockTests.test_reacquire.<locals>.fr	rrG�)r4rrrr rrNr?rIr	ror
�test_reacquire�s

zLockTests.test_reacquirecsB|�������fdd�}t|d�}|��������dS)Ncs���dSr
)r?r	rMr	r
rsz*LockTests.test_different_thread.<locals>.frG)r4r;rr$r?�rrrQr	rMr
�test_different_thread�s
zLockTests.test_different_threadcCsN|��}|��|�|jdd��|��|�|���|�|jdd��dS)Nrr\F)�blocking)r4r;rHr?�lockedrBr5r	r	r
�test_state_after_timeout
sz"LockTests.test_state_after_timeoutcCsDdd�}|��}|��||�|��}|��|��||�dS)NcSs|��|��dSr
rLrMr	r	r
�use_locksz/LockTests.test_at_fork_reinit.<locals>.use_lock)r4�_at_fork_reinitr;)rrwr6Zlock2r	r	r
�test_at_fork_reinitszLockTests.test_at_fork_reinitN)	r'r(r)r*rqrsrv�
requires_forkryr	r	r	r
rm�s
rmc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�
RLockTestsz$
    Tests for recursive locks.
    cCs<|��}|��|��|��|��|��|��dSr
r>r5r	r	r
rq,szRLockTests.test_reacquirecCsX|��}|�t|j�|��|��|��|��|��|��|�t|j�dSr
)r4rV�RuntimeErrorr?r;r5r	r	r
�test_release_unacquired5sz"RLockTests.test_release_unacquiredcCsX|��}|�t|j�|��|��|��|��|��|��|�t|j�dSr
)r4rVr|�
_release_saver;r?r5r	r	r
�test_release_save_unacquiredAsz'RLockTests.test_release_save_unacquiredcsR|����fdd�}t|dd�}z|�t�j�W|��n
|��0|��dS)Ncs���dSr
)r;r	rMr	r
rPsz+RLockTests.test_different_thread.<locals>.frGT)r4rrVr|r?r&r$rrr	rMr
rsMsz RLockTests.test_different_threadcs�|���|��������|��������|�����g���fdd�}t|d���|��d����|��������|�����dS)Ncs������dSr
)r�	_is_ownedr	rEr	r
rasz$RLockTests.test__is_owned.<locals>.frGr)r4rHr�r;rBrr$r?rIr	rEr
�test__is_ownedYszRLockTests.test__is_ownedN)	r'r(r)r*rqr}rrsr�r	r	r	r
r{(s	r{c@sDeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Ze	dd
��Z
dS)�
EventTestsz"
    Tests for Event objects.
    cCsr|��}|�|���|��|�|���|��|�|���|��|�|���|��|�|���dSr
)�	eventtyperH�is_set�setrB�clear�r�evtr	r	r
�test_is_setpszEventTests.test_is_setcs|d}g�g����fdd�}t||�}|��t�|�t��d����|��|��dg|�|��dg|�dS)NrKcs ������������dSr
�r�waitr	�r��results1�results2r	r
r�sz#EventTests._check_notify.<locals>.frT)rr"rrNr r�r$)rr�rPrrQr	r�r
�
_check_notify|s
zEventTests._check_notifycCs0|��}|�|�|��|��|�|�dSr
)r�r�r�r�r�r	r	r
�test_notify�s

zEventTests.test_notifycs�|���g�g�d}���fdd�}t||���|��dg|��D]\}}|�|�|�|d�qHg�g����t||���|��dg|��D]\}}|�|�q�dS)NrKcs@����d��t��}��d�}t��}��|||f�dS)Ngr^)rr�rr_)r`�rrar�r	r
r�s

z"EventTests.test_timeout.<locals>.fFr^T)r�rr$rNrHr2r�rB)rrPrr��dtr	r�r
rf�s"
zEventTests.test_timeoutcsn|���g�d�d}���fdd�}t||�}|��t���������|��|��dg|�dS)Ng�?rKcs�����d��dS�N�r�r	�r�rcr]r	r
r�sz(EventTests.test_set_and_clear.<locals>.fT)	r�rr"rrr�r�r$rNrOr	r�r
�test_set_and_clear�s

zEventTests.test_set_and_clearcCs�|��}|j�"|�|j�d��Wd�n1s60Y|��|j�"|�|j�d��Wd�n1sv0YdSrA)r��_condrHr;rxr�r	r	r
ry�s0zEventTests.test_at_fork_reinitN)r'r(r)r*r�r�r�rfr�rzryr	r	r	r
r�ksr�c@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�ConditionTestsz(
    Tests for condition variables.
    cCs�|��}|��|��|��|��t��}|�|�}|��|�|�d��|��|�|�d��|�|�d��|��|� |�|�d��Wd�n1s�0YdSrA)�condtyper;r?r�LockrHrB)r�condr6r	r	r
�test_acquire�s
zConditionTests.test_acquirecCs|��}|�t|j�dSr
)r�rVr|r��rr�r	r	r
�test_unacquired_wait�sz#ConditionTests.test_unacquired_waitcCs|��}|�t|j�dSr
)r�rVr|�notifyr�r	r	r
�test_unacquired_notify�sz%ConditionTests.test_unacquired_notifycs�d}g�g�g�d������fdd�}t||�}|��t��dkrNt�q:���|��g������d�t�d����t��dkr�t�q�|��dgd�|��g�t��dkr�t�q������d�t�d����t��t��d	k�rt�q�|��dgdd
gd�|��d
gd�t��dk�rTt��q<�����	�t�d����t��dk�r�t��qv|��dgdd
gd�|��d
gddgd�|�
�dS)NrKrcsd����������}�����|�f�����������}�����|�f�dSr
)r;rr�r?�rF�r��	phase_num�readyr�r�r	r
r�s

z'ConditionTests._check_notify.<locals>.f�rG)TrGrp�)Trp)Tr�)rr"r rr�rNr;r�r?�
notify_allr$)rr�rPrrQr	r�r
r��sX




zConditionTests._check_notifycCs |��}|�|�|�|�dSr
)r�r�r�r	r	r
r�4s
zConditionTests.test_notifycsd|���g�d}��fdd�}t||���|�t��|��D]\}}|�|d�|�|�q@dS)NrKcs@���t��}��d�}t��}�����|||f�dS)Nr^)r;rr_r�r?r)r`rFra�r�rcr	r
r>s
z&ConditionTests.test_timeout.<locals>.fr^)r�rr$rNr r2rH)rrPrr�rFr	r�r
rf:szConditionTests.test_timeoutc	s�����d����fdd�}t|d�}|��td�D]B}t�d��� �d7����Wd�q61sn0Yq6|��dS)NrcsP��8���fdd��}��|����d�Wd�n1sB0YdS)Ncs�dkSr�r	r	��stater	r
�<lambda>U�z8ConditionTests.test_waitfor.<locals>.f.<locals>.<lambda>r�)�wait_forrBrNr��r�rr�r	r
rSs
z&ConditionTests.test_waitfor.<locals>.frGr�r)r�rr"rrrr�r$�rrrQrr	r�r
�test_waitforPs

(zConditionTests.test_waitforc	s�����d�g�����fdd�}t|d�}|��td�D]B}t�d��� �d7����Wd�q<1st0Yq<|����t	��d�dS)Nrcsr��Zt��}�j�fdd�dd�}t��|}��|���|d���d�Wd�n1sd0YdS)Ncs�dkSr�r	r	r�r	r
r�hr�z@ConditionTests.test_waitfor_timeout.<locals>.f.<locals>.<lambda>g�������?r\)rr_r�rHr2r)r�rF�r�rr��successr	r
res
z.ConditionTests.test_waitfor_timeout.<locals>.frGr�r)
r�rr"rrrr�r$rNr r�r	r�r
�test_waitfor_timeoutas

(z#ConditionTests.test_waitfor_timeoutN)r'r(r)r*r�r�r�r�r�rfr�r�r	r	r	r
r��sJr�c@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�BaseSemaphoreTestszB
    Common tests for {bounded, unbounded} semaphore objects.
    cCs,|jt|jdd�|jt|jtjd�dS)N���)�value)rVrd�semtype�sys�maxsizer!r	r	r
r7~sz#BaseSemaphoreTests.test_constructorcCsH|�d�}|��|��|�d�}|��|��|��|��dS)NrGrp)r�r;r?�r�semr	r	r
r��s

zBaseSemaphoreTests.test_acquirecCs|��}|��~dSr
)r�r;r�r	r	r
r=�sz'BaseSemaphoreTests.test_acquire_destroycst|�d�����d}g�g�g�d������fdd�}t|d�}|��t��t��dkrht�qL|���dgd�d�td�D]}���q�t��t��dkr�t�q�|�t	���dgddgd�d	�td�D]}���q�t��t��d
k�rt�q�|�t	���dgddgdd	gd�|�
��d�����|��|��dgd
�dS)N��
rcs4��������������������dSr
rDr	�r�r�r�r�Zsem_resultsr	r
r�s
z4BaseSemaphoreTests.test_acquire_contended.<locals>.f�rG�
rp�FT�)r�r;rr"r rrNrr?�sortedrHr$)rrPrrQrr	r�r
rR�s:


$
.z)BaseSemaphoreTests.test_acquire_contendedcs>|�d�����g�g�d�����fdd�}t|d�}|��t��t��dkr^t�qB|���dgd�d���d�t��t��dkr�t�q�|�t���dgddgd�d	���d�t��t��d
kr�t�q�|�t���dgddgdd	gd�|�	��d�����|�
�dS)Nr�rcs(��������������dSr
rnr	�r�r�r�r�r	r
r�s
z/BaseSemaphoreTests.test_multirelease.<locals>.fr�r�rGr�rpr�F)r�r;rr"r rrNr?r�rHr$rrr	r�r
�test_multirelease�s0


$
.z$BaseSemaphoreTests.test_multireleasecCsV|�d�}|�|�d��|�|�d��|�|�d��|��|�|�d��dS)NrpF)r�rBr;rHr?r�r	r	r
rC�s
z#BaseSemaphoreTests.test_try_acquirecsV|�d�����g���fdd�}t|d���|�t��dgddgd�dS)	Nr�cs$����d������d��dSrArDr	�rcr�r	r
r�sz8BaseSemaphoreTests.test_try_acquire_contended.<locals>.frKFr�Tr�)r�r;rr$rNr�rIr	r�r
rJ�s
z-BaseSemaphoreTests.test_try_acquire_contendedcCs�|�d�}|jt|jddd�|�|jdd��|�|jdd��|�|jdd��|��|�|jdd��t��}|�|jdd��t��|}|�	|d�dS)NrpF��?r\g{�G�zt?r^)
r�rVrdr;rBrHr?rr_r2)rr��tr�r	r	r
�test_acquire_timeout�s
z'BaseSemaphoreTests.test_acquire_timeoutcsT|�������fdd�}t|d�}|��t�|�|j����|��dS)Ncs������dSr
rLr	�r�r	r
r�sz0BaseSemaphoreTests.test_default_value.<locals>.frG)	r�r;rr"rrHrr?r$rrr	r�r
�test_default_value�s
z%BaseSemaphoreTests.test_default_valuecsb��d��d��fdd�	}|�����d�������t|t�����d�����dS)Nrpc	s|��d����d�������(����d��|r<|�Wd�n1sP0YWd�n1sn0YdSrA)rBr;r?rHrSr�r	r
rUsz+BaseSemaphoreTests.test_with.<locals>._withF)N)r�rBr;r?rVrW)rrUr	r�r
rXs
zBaseSemaphoreTests.test_withN)r'r(r)r*r7r�r=rRr�rCrJr�r�rXr	r	r	r
r�ys
% 

r�c@seZdZdZdd�ZdS)�SemaphoreTestsz)
    Tests for unbounded semaphores.
    cCs.|�d�}|��|��|��|��dS�NrG)r�r?r;r�r	r	r
r}s

z&SemaphoreTests.test_release_unacquiredN�r'r(r)r*r}r	r	r	r
r�sr�c@seZdZdZdd�ZdS)�BoundedSemaphoreTestsz'
    Tests for bounded semaphores.
    cCs8|��}|�t|j�|��|��|�t|j�dSr
)r�rVrdr?r;r�r	r	r
r}*s
z-BoundedSemaphoreTests.test_release_unacquiredNr�r	r	r	r
r�%sr�c@s�eZdZdZdZdZdd�Zdd�Zdd	�Zd
d�Z	d"d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)#�BarrierTestsz$
    Tests for Barrier objects.
    rKg@cCs|j|j|jd�|_dS)Nr\)�barriertyperP�defaultTimeout�barrierr!r	r	r
r-:szBarrierTests.setUpcCs|j��dSr
)r��abortr!r	r	r
r/<szBarrierTests.tearDowncCs"t||jd�}|�|��dSr�)rrPr$rrr	r	r
�run_threads?szBarrierTests.run_threadscCs�|jj}|�||j�t|�D]h}|d�d�|�t|d�||�|j��|d�d�|�t|d�|d|�|j��q|�|jjd�|�	|jj
�dS)NrTrG)r��partiesrNrPrrr r��	n_waitingrH�broken)rrcr�mrr	r	r
�	multipassDs
zBarrierTests.multipassrGcs&ggg����fdd�}��|�dS)z;
        Test that a barrier is passed in lockstep
        cs�����dSr
)r�r	��passesrcrr	r
rVsz$BarrierTests.test_barrier.<locals>.fN�r�)rr�rr	r�r
�test_barrierQszBarrierTests.test_barriercCs
|�d�S)zC
        Test that a barrier works for 10 consecutive runs
        r�)r�r!r	r	r
�test_barrier_10ZszBarrierTests.test_barrier_10cs:g���fdd�}��|���t��tt�j���dS)z9
        test the return value from barrier.wait
        cs�j��}��|�dSr
)r�r�r)r��rcrr	r
res
z(BarrierTests.test_wait_return.<locals>.fN)r�rN�sumrrPrIr	r�r
�test_wait_return`s
zBarrierTests.test_wait_returncs<g��fdd�}���j|�����fdd�}��|�dS)z,
        Test the 'action' callback
        cs��d�dSr%)rr	)rcr	r
�actionqsz(BarrierTests.test_action.<locals>.actioncs�����t��d�dSr�)r�rNr r	�r�rcrr	r
rtsz#BarrierTests.test_action.<locals>.fN�r�rPr�)rr�rr	r�r
�test_actionls
zBarrierTests.test_actioncsZg�g����fdd�}��|���t��d���t���jd����jj�dS)zK
        Test that an abort will put the barrier in a broken state
        csrz4�j��}|�jdkrt��j����d�Wn8tjyR��d�Yntyl�j��Yn0dS�NrpT)r�r�rPr|rr�BrokenBarrierErrorr��r�r�r�rr	r
r�s


z"BarrierTests.test_abort.<locals>.frrGN)r�rNr rPrBr�r�rIr	r�r
�
test_abortzs
zBarrierTests.test_abortcsdg�g�g�����fdd�}��|���t��d���t���jd���t���j�dS)zL
        Test that a 'reset' on a barrier frees the waiting threads
        cs��j��}|�jdkrB�jj�jdkr6t�d�q�j��n8z�j����d�Wntj	yx��d�Yn0�j����d�dS)NrprGg����MbP?T)
r�r�rPr�rr�resetrrr�r��r�r��results3rr	r
r�s


z"BarrierTests.test_reset.<locals>.frrGN)r�rNr rPrIr	r�r
�
test_reset�s
zBarrierTests.test_resetcsrg�g�g����j�������fdd�}��|���t��d���t���jd���t���j�dS)zF
        Test that a barrier can be reset after being broken.
        cs�z4�j��}|�jdkrt��j����d�Wn8tjyR��d�Yntyl�j��Yn0����jdkr��j������j����d�dSr�)	r�r�rPr|rrr�r�r�r��Zbarrier2r�r�r�rr	r
r�s 




z,BarrierTests.test_abort_and_reset.<locals>.frrGN)r�rPr�rNr rIr	r�r
�test_abort_and_reset�s
z!BarrierTests.test_abort_and_resetcs�fdd�}��|�dS)z$
        Test wait(timeout)
        cs:�j��}|�jdkr"t�d���tj�jjd�dS)Nrpr�r^)r�r�rPrrrVrr�r�r!r	r
r�s

�z$BarrierTests.test_timeout.<locals>.fNr�rIr	r!r
rf�szBarrierTests.test_timeoutcs,�j�jdd����fdd�}��|�dS)z4
        Test the barrier's default timeout
        g333333�?r\cs4���}|�jdkr t�d���tj�j�dS)Nrpr�)r�rPrrrVrr�r��r�rr	r
r�s
z,BarrierTests.test_default_timeout.<locals>.fNr�rIr	r�r
�test_default_timeout�sz!BarrierTests.test_default_timeoutcCs|�d�}|��|��dSr�)r�r�)rrQr	r	r
�test_single_thread�s
zBarrierTests.test_single_threadN)rG)r'r(r)r*rPr�r-r/r�r�r�r�r�r�r�r�r�rfr�r�r	r	r	r
r�3s"
	"r�)r*�osrkr�r�_threadrrrZunittestrg�testrZ
skipUnless�hasattrrzr�objectrZTestCaser+r3rmr{r�r�r�r�r�r�r	r	r	r
�<module>s6�1	DC_0

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