o
    h                     @   sL   d dl m Z  ddlmZ G dd de Zdd Zdd	 ZG d
d deZdS )    )greenlet   )TestCasec                   @   s4   e Zd ZdZdd Zdd Zdd Zdd	 ZeZdS )
genletNc                 O   s   || _ || _d S N)argskwds)selfr   r    r
   P/var/www/html/venv/lib/python3.10/site-packages/greenlet/tests/test_generator.py__init__   s   
zgenlet.__init__c                 C   s   | j \}|| ji | j d S r   )fnr   r   )r	   r   r
   r
   r   run   s   z
genlet.runc                 C   s   | S r   r
   )r	   r
   r
   r   __iter__   s   zgenlet.__iter__c                 C   s   t  | _|  }| r|S tr   )r   
getcurrentparentswitchStopIteration)r	   resultr
   r
   r   __next__   s
   
zgenlet.__next__)	__name__
__module____qualname__r   r   r   r   r   nextr
   r
   r
   r   r      s    r   c                 C   sB   t  }t|ts|d u rtd|j}t|tr	|j|  d S )Nzyield outside a genlet)r   r   
isinstancer   RuntimeErrorr   r   )valuegr
   r
   r   Yield   s   

r   c                    s   G  fdddt }|S )Nc                       s   e Zd Z fZdS )zgenerator.<locals>.GeneratorN)r   r   r   r   r
   funcr
   r   	Generator(   s    
r!   )r   )r    r!   r
   r   r   	generator'   s   r"   c                   @   s   e Zd Zdd ZdS )GeneratorTestsc                    sV   g   fdd}t |}tdD ]}|dD ]} | qq|  dg d  d S )Nc                    s$   t | D ]} | t| qd S r   )rangeappendr   )niseenr
   r   r   3   s   

z(GeneratorTests.test_generator.<locals>.g      )
r   r   r   r      r,   r*   r*      r-   )r"   r$   r%   assertEqual)r	   r   _jr
   r(   r   test_generator0   s   zGeneratorTests.test_generatorN)r   r   r   r1   r
   r
   r
   r   r#   /   s    r#   N)r    r   r   r   r"   r#   r
   r
   r
   r   <module>   s   	