o
    2c                     @   s   d dl Z d dlmZ G dd deZdddZdd	 Zd
d Zdd ZeeZdd Zdd ZeeZdd Z	ee	Z
dd ZeeZdd ZeeZdd ZeeZG dd de jZdS )    N)greenletc                   @   s8   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZeZdS )genletc                 O   s   || _ || _d | _d S N)argskwdschild)selfr   r    r	   Z/var/www/html/gps/gps/lib/python3.10/site-packages/greenlet/tests/test_generator_nested.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
   || _ d S r   )r   )r   r   r	   r	   r
   	set_child   s   
zgenlet.set_childc                 C   sP   | j r| j }|j r|}|j }d |_ |j s	| }n	t | _|  }| r&|S tr   )r   switchr   
getcurrentparentStopIteration)r   r   tmpresultr	   r	   r
   __next__   s   

zgenlet.__next__N)	__name__
__module____qualname__r   r   r   r   r   nextr	   r	   r	   r
   r      s    r      c                 C   sZ   t  }|dkr&t|tstd|dkr|j| |j}|d8 }|dks||  d S )Nr   zyield outside a genletr   )r   r   
isinstancer   RuntimeErrorr   r   r   )valuelevel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Genlet.<locals>.GenletN)r   r   r   r   r	   funcr	   r
   Genlet;   s    
r%   )r   )r$   r%   r	   r#   r
   r%   :   s   r%   c                 c   s(    t | D ]}||d  |V  qd S Nr   )rangeappendnseenir	   r	   r
   g1B   s
   r-   c                 C   (   t | D ]}||d  t| qd S r&   )r'   r(   r"   r)   r	   r	   r
   g2H      
r/   c                 C   s   t |  d S r   r"   )r,   r	   r	   r
   nestedP   s   r2   c                 C   r.   r&   )r'   r(   r2   r)   r	   r	   r
   g3T   r0   r3   c                 C   s2   | dkrd S t | d D ]}t| qt|  d S )Nr   r   )axr"   r*   iir	   r	   r
   a[   s
   
r7   c                    sJ   t | dkr| D ]  fddt fdd| D D  qd S t|  d S )Nr   c                    s   g | ]	}t  g| qS r	   r1   ).0per	   r
   
<listcomp>h   s    zperms.<locals>.<listcomp>c                    s   g | ]}| kr|qS r	   r	   )r8   xr:   r	   r
   r<   h   s    )lenpermsr"   )lr	   r:   r
   r?   d   s
   &r?   c                 C   s*   t d| D ]}t| t|| d qd S )Nr      )r'   r"   r5   r	   r	   r
   gr1n   s   rB   c                 C   s   t | D ]}|| qd S r   )rB   r(   )r*   r+   r6   r	   r	   r
   gr2v   s   rC   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )NestedGeneratorTestsc                 C   s2   g }t d|D ]}|| q| |g d d S )N   )r   r   rA         	   rF      )rC   r(   assertEqualr   r+   r6   r	   r	   r
   test_layered_genlets~   s   z)NestedGeneratorTests.test_layered_genletsc                 C   s   t ttd}t|}| t|d | g d|v  | g d|v  g }tt ttdt ttdD ]}|| q9| |g dg dfg dg dfg d	g d
fg dg dfg dg dfg dg dfg d S )NrF      )r   r   rA   rG   )rG   rA   r   r   rG   )r   r   rA   )r   r   rG   rA   )r   rA   r   )r   rA   r   rG   )r   r   rA   )r   rA   rG   r   )r   rA   r   )r   rG   r   rA   )rA   r   r   )r   rG   rA   r   )rA   r   r   )r?   listr'   rJ   r>   
assertTruezipr(   )r   	gen_permspermutationsresr6   r	   r	   r
   test_permutations   s   &z&NestedGeneratorTests.test_permutationsc                 C   sT   t ttfD ]"}g }tdD ]}|d|D ]}|| qq| |dg d  qd S )NrG   rE   )
r   r   rA   r   rG   rA   rF   rG   rE   rF   )r-   r/   r3   r'   r(   rJ   )r   r!   r+   kjr	   r	   r
   test_genlet_simple   s   z'NestedGeneratorTests.test_genlet_simplec                 C   s$   zt d W d S  ty   Y d S w )N
   )r"   r   r   r	   r	   r
   test_genlet_bad   s
   z$NestedGeneratorTests.test_genlet_badc                 C   s    g }t dD ]}|| qd S )NrE   )r4   r(   rK   r	   r	   r
   test_nested_genlets   s   z(NestedGeneratorTests.test_nested_genletsN)r   r   r   rL   rT   rW   rY   rZ   r	   r	   r	   r
   rD   }   s    rD   )r   )unittestr   r   r"   r%   r-   r/   r2   r3   r7   r4   r?   rB   rC   TestCaserD   r	   r	   r	   r
   <module>   s(    
'