
    Wdp              	          d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddl	m
Z dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d de          Z G d d edej        fi                     ZdS )z
Tests for greenlet.

    )absolute_import)division)print_functionN)collect)get_objects)active_count)sleep)time)greenlet)
getcurrent)get_pending_cleanup_count)get_total_main_greenlets   )	leakcheckc                       e Zd Zd ZdS )TestCaseMetaClassc                 6   d}t          |                                          D ]Y\  }}|                    d          r?t          |          r0|                    |           |rt          j        |          }|||<   Zt                              | |||          S )NTtest)	listitems
startswithcallablepopr   wrap_refcounttype__new__)cls	classnamebases	classDictcheck_totalrefcountkeyvalues          S/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/greenlet/tests/__init__.pyr   zTestCaseMetaClass.__new__   s    
 #
 y0011 	' 	'JC~~f%% '(5// 'c"""& ;%3E::E!&	#||CE9===    N)__name__
__module____qualname__r    r%   r$   r   r      s#        > > > > >r%   r   c                   ^     e Zd ZdZdZ	 	 ddZedfdZdZdZ	dZ
dZd	 Z fd
Z fdZ xZS )TestCasegMbP?r   Nc                 \   |p| j         }|p| j        }| j        }t          |           t	                      | j        z   }t                      s+t                      |k    s| j        st                      |k    rt          |           t	                      |k    rLt          d           t          d|dt                                 t          d|dt                                 n9t                      {t                      |k    | j        st                      |k    t                       d S )NzTime limit exceeded.zThreads: Waiting for onlyz-->zMGlets : Waiting for only)threads_before_testmain_greenlets_before_testcleanup_attempt_sleep_durationr	   r
   cleanup_max_sleep_secondsr   active_thread_countexpect_greenlet_leakr   printr   )selfinitial_active_threadsinitial_main_greenlets
sleep_time
quit_afters        r$   wait_for_pending_cleanupsz"TestCase.wait_for_pending_cleanups9   sO    "8!S4;S!7!Z4;Z8
 	jVVd<<
 *++	&((+AAA1 B0225KKK*vv
"",---13I0224 4 413I5779 9 9 *++	&((+AAA1 B0225KKK 						r%   Tc                     t          d          D ]}t                       |r't          fdt                      D                       S t          fdt                      D                       S )N   c              3   >   K   | ]}t          |          u d V  dS r   N)r   .0xkinds     r$   	<genexpr>z)TestCase.count_objects.<locals>.<genexpr>a   s;        77d?? "??? r%   c              3   <   K   | ]}t          |          d V  dS r=   )
isinstancer>   s     r$   rB   z)TestCase.count_objects.<locals>.<genexpr>g   sG       
 
!T""

 
 
 
 
 
r%   )ranger   sumr   )r4   rA   
exact_kind_s    `  r$   count_objectszTestCase.count_objects[   s     q 	 	AIIII 	    $       
 
 
 
 ]]
 
 
 
 
 	
r%   r   Fc                 8    |                      t          d          S )zJ
        Find all the greenlets and subclasses tracked by the GC.
        F)rI   RawGreenlet)r4   s    r$   count_greenletszTestCase.count_greenletsr   s     !!+u555r%   c                 0   t          t          |                                            t                       t	                      | _        t                      | _        |                     | j        | j                   | 	                                | _
        d S )N)superr+   setUpr   r1   r-   r   r.   r9   rL   greenlets_before_testr4   	__class__s    r$   rO   zTestCase.setUpx   s|     	h##%%%#6#8#8 *B*D*D'&&t'?A`aaa%)%9%9%;%;"""r%   c                     t          | dd          rd S |                     | j        | j                   t	          t
          |                                            d S )NskipTearDownF)getattrr9   r-   r.   rN   r+   tearDownrQ   s    r$   rV   zTestCase.tearDown   sZ    4// 	F&&t'?A`aaah&&(((((r%   )NN)r&   r'   r(   r/   r0   r9   r   rI   rP   r-   r.   r2   rL   rO   rV   __classcell__)rR   s   @r$   r+   r+   1   s        
 &+" ! :>9=       D "&$ 
 
 
 
$ !" 6 6 6< < < < <) ) ) ) ) ) ) ) )r%   r+   NewBase)__doc__
__future__r   r   r   unittestgcr   r   	threadingr   r1   r
   r	   r   rK   r   greenlet._greenletr   r    r   r   r   r+   r)   r%   r$   <module>r`      s    ' & & & & &       % % % % % %              9 9 9 9 9 9             , , , , , ,       8 8 8 8 8 8 7 7 7 7 7 7      > > > > > > > >,V) V) V) V) V)  		
  V) V) V) V) V)r%   