
    [h                     $   d dl m Z  ddlmZ ddlmZ  G d de           ZddZd Zd	 Zd
 Z	 ee	          Z	d Z
d Z ee          Zd Z ee          Zd Z ee          Zd Z ee          Zd Z ee          Z G d de          ZdS )    )greenlet   )TestCase)fails_leakcheckc                   4    e Zd ZdZd Zd Zd Zd Zd ZeZ	dS )genletNc                 0    || _         || _        d | _        d S N)argskwdschild)selfr   r   s      s/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/greenlet/tests/test_generator_nested.py__init__zgenlet.__init__   s    		


    c                 <    | j         \  } || j        i | j         d S r
   )fnr   r   )r   r   s     r   runz
genlet.run   s,     g
DI######r   c                     | S r
    r   s    r   __iter__zgenlet.__iter__   s    r   c                     || _         d S r
   )r   )r   r   s     r   	set_childzgenlet.set_child   s    


r   c                     | j         r:| j         }|j         r|}|j         }d |_         |j         |                                }n,t          j                    | _        |                                 }| r|S t
          r
   )r   switchr   
getcurrentparentStopIteration)r   r   tmpresults       r   __next__zgenlet.__next__   s}    : 
	#JE+ ! 	 + !
 \\^^FF"-//DK[[]]F 	Mr   )
__name__
__module____qualname__r   r   r   r   r   r"   nextr   r   r   r   r      se        F  
$ $ $      $ DDDr   r   c                    t          j                    }|dk    rVt          |t                    st	          d          |dk    r|j                            |           |j        }|dz  }|dk    V|                    |            d S )Nr   zyield outside a genletr   )r   r   
isinstancer   RuntimeErrorr   r   r   )valuelevelgs      r   Yieldr-   -   s    A
1**!V$$ 	97888199Hq!!!H
 1** HHUOOOOOr   c                 2      G  fddt                     }|S )Nc                       e Zd Z fZdS )Genlet.<locals>.TheGenletN)r#   r$   r%   r   )funcs   r   	TheGenletr0   <   s        Wr   r2   )r   )r1   r2   s   ` r   Genletr3   ;   s=          F   r   c              #   f   K   t          |           D ]}|                    |dz              |V  d S Nr   )rangeappendnseenis      r   g1r<   C   sF      1XX  AE r   c                 x    t          |           D ])}|                    |dz              t          |           *d S r5   )r6   r7   r-   r8   s      r   g2r>   I   sD    1XX  AEa r   c                 $    t          |            d S r
   r-   )r;   s    r   nestedrA   Q   s    	!HHHHHr   c                 x    t          |           D ])}|                    |dz              t          |           *d S r5   )r6   r7   rA   r8   s      r   g3rC   U   sD    1XX  AEq				 r   c                 |    | dk    rd S t          | dz
            D ]}t          |           t          |            d S )Nr   r   )axr-   r9   iis     r   arH   \   sE    AvvQii  b					!HHHHHr   c                     t          |           dk    r2| D ]-fdt          fd| D                       D             }|sJ .d S t          |            d S )Nr   c                 6    g | ]}t          g|z             S r   r@   ).0pes     r   
<listcomp>zperms.<locals>.<listcomp>i   s%    IIIAsQwIIIr   c                      g | ]
}|k    |S r   r   )rK   xrM   s     r   rN   zperms.<locals>.<listcomp>i   s    /G/G/GaQr   )lenpermsr-   )lrP   rM   s     @r   rR   rR   e   s}    
1vvzz 	 	AIIII/G/G/G/G1/G/G/G)H)HIIIAHHHH	 	
 	ar   c                 p    t          d|           D ]$}t          |           t          ||z  d           %d S )Nr      )r6   r-   rF   s     r   gr1rV   p   sE    Aqkk  b			b2gq r   c                 T    t          |           D ]}|                    |           d S r
   )rV   r7   )r9   r:   rG   s      r   gr2rX   x   s2    !ff  B r   c                   <    e Zd Zd Zed             Zd Zd Zd ZdS )NestedGeneratorTestsc                     g }t          d|          D ]}|                    |           |                     |g d           d S )N   )r   r   rU         	   r]      )rX   r7   assertEqualr   r:   rG   s      r   test_layered_genletsz)NestedGeneratorTests.test_layered_genlets   sR    a,, 	 	BKKOOOO88899999r   c                    t          t          t          d                              }t          |          }|                     t	          |          d           |                     g d|           |                     g d|           g }t          t          t          t          d                              t          t          t          d                                        D ]}|                    |           |                     |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 )Nr]      )r   r   rU   r^   )r^   rU   r   r   r^   )r   r   rU   )r   r   r^   rU   )r   rU   r   )r   rU   r   r^   )r   r   rU   )r   rU   r^   r   )r   rU   r   )r   r^   r   rU   )rU   r   r   )r   r^   rU   r   )rU   r   r   )rR   listr6   ra   rQ   assertInzipr7   )r   	gen_permspermutationsresrG   s        r   test_permutationsz&NestedGeneratorTests.test_permutations   sX   $uQxx..))	I\**M:::lllL111lllL111eDqNN++U4a>>-B-BCC 	 	BJJrNNNNllIII&yyy(AllIII&yyy(AllIII&yyy(AC	D 	D 	D 	D 	Dr   c                     t           t          t          fD ]U}g }t          d          D ]&} |d|          D ]}|                    |           '|                     |dg dz             Vd S )Nr^   r\   )
r   r   rU   r   r^   rU   r]   r^   r\   r]   )r<   r>   rC   r6   r7   ra   )r   r,   r:   _js        r   test_genlet_simplez'NestedGeneratorTests.test_genlet_simple   s    R 	G 	GAD1XX # #1d # #AKKNNNN#T1'E'E'E#EFFFF	G 	Gr   c                 H    	 t          d           d S # t          $ r Y d S w xY w)N
   )r-   r)   r   s    r   test_genlet_badz$NestedGeneratorTests.test_genlet_bad   s8    	"IIIII 	 	 	DD	s    
!!c                 X    g }t          d          D ]}|                    |           d S )Nr\   )rE   r7   rb   s      r   test_nested_genletsz(NestedGeneratorTests.test_nested_genlets   s7    Q%% 	 	BKKOOOO	 	r   N)	r#   r$   r%   rc   r   rl   rp   rs   ru   r   r   r   rZ   rZ      sq        : : : D D _D G G G      r   rZ   N)r   )r    r   	leakcheckr   r   r-   r3   r<   r>   rA   rC   rH   rE   rR   rV   rX   rZ   r   r   r   <module>rx      s               & & & & & &% % % % %X % % %N         
 VBZZ     VBZZ   VAYY   	u  
 fSkk   fSkk) ) ) ) )8 ) ) ) ) )r   