o
    E6dp                     @   s   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 deZG d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                   @   s   e Zd Zdd ZdS )TestCaseMetaClassc                 C   s\   d}t | D ]\}}|dr%t|r%|| |r!t|}|||< qt| |||S )NTtest)	listitems
startswithcallablepopr   Zwrap_refcounttype__new__)cls	classnamebasesZ	classDictZcheck_totalrefcountkeyvalue r   nC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\greenlet/tests/__init__.pyr      s   

zTestCaseMetaClass.__new__N)__name__
__module____qualname__r   r   r   r   r   r      s    r   c                       sd   e Zd ZdZdZ		dddZedfddZd	Zd	Z	d	Z
d
Zdd Z fddZ fddZ  ZS )TestCasegMbP?r   Nc                 C   s   |p| j }|p	| j}| j}t| t | j }t s't |ks'| jsUt	 |krUt| t |krEt
d t
d|dt  t
d|dt	  nt s't |ks'| jsUt	 |ks'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   )selfZinitial_active_threadsZinitial_main_greenletsZ
sleep_timeZ
quit_afterr   r   r   wait_for_pending_cleanups9   s8   








	z"TestCase.wait_for_pending_cleanupsTc                    sH   t dD ]}t  q|rt fddt D S t fddt D S )N   c                 3   s     | ]}t | u rd V  qdS r   N)r   .0xkindr   r   	<genexpr>a   s    z)TestCase.count_objects.<locals>.<genexpr>c                 3   s    | ]
}t | rd V  qdS r.   )
isinstancer/   r2   r   r   r4   g   s    
)ranger   sumr   )r+   r3   Z
exact_kind_r   r2   r   count_objects[   s   zTestCase.count_objectsr   Fc                 C   s   |  tdS )zJ
        Find all the greenlets and subclasses tracked by the GC.
        F)r9   RawGreenletr+   r   r   r   count_greenletsr   s   zTestCase.count_greenletsc                    sB   t t|   t  t | _t | _| | j| j | 	 | _
d S )N)superr#   setUpr   r(   r$   r   r%   r,   r<   greenlets_before_testr;   	__class__r   r   r>   x   s   zTestCase.setUpc                    s2   t | ddrd S | | j| j tt|   d S )NZskipTearDownF)getattrr,   r$   r%   r=   r#   tearDownr;   r@   r   r   rC      s   zTestCase.tearDown)NN)r    r!   r"   r&   r'   r,   r   r9   r?   r$   r%   r)   r<   r>   rC   __classcell__r   r   r@   r   r#   1   s    
"
r#   ZNewBase)__doc__
__future__r   r   r   Zunittestgcr   r   	threadingr   r(   r	   r   r
   r:   r   Zgreenlet._greenletr   r    r   r   r   r#   r   r   r   r   <module>   s*   
