
    +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y)    )greenlet   )TestCase)fails_leakcheckc                   2    e Zd ZdZd Zd Zd Zd Zd ZeZ	y)genletNc                 .    || _         || _        d | _        y N)argskwdschild)selfr   r   s      W/var/www/html/venv/lib/python3.12/site-packages/greenlet/tests/test_generator_nested.py__init__zgenlet.__init__   s    		
    c                 X    | j                   \  } || j                  i | j                   y r
   )fnr   r   )r   r   s     r   runz
genlet.run   s$     gg
DII##r   c                     | S r
    r   s    r   __iter__zgenlet.__iter__   s    r   c                     || _         y r
   )r   )r   r   s     r   	set_childzgenlet.set_child   s	    
r   c                    | j                   rK| j                   }|j                   r"|}|j                   }d |_         |j                   r"|j                         }n)t        j                         | _        | j                         }| r|S t
        r
   )r   switchr   
getcurrentparentStopIteration)r   r   tmpresults       r   __next__zgenlet.__next__   sm    ::JJE++ 	 ++
 \\^F"--/DK[[]FMr   )
__name__
__module____qualname__r   r   r   r   r   r"   nextr   r   r   r   r      s'    F
$$ Dr   r   c                     t        j                         }|dk7  rRt        |t              st	        d      |dkD  r|j
                  j                  |       |j
                  }|dz  }|dk7  rR|j                  |        y )Nr   zyield outside a genletr   )r   r   
isinstancer   RuntimeErrorr   r   r   )valuelevelgs      r   Yieldr-   -   sn    A
1*!V$78819HHq!HH
 1* HHUOr   c                 *      G  fddt               }|S )Nc                       e Zd ZW  fZy)Genlet.<locals>.TheGenletN)r#   r$   r%   r   )funcs   r   	TheGenletr0   <   s
    Wr   r2   )r   )r1   r2   s   ` r   Genletr3   ;   s    F r   c              #   \   K   t        |       D ]  }|j                  |dz          |  y wNr   )rangeappendnseenis      r   g1r<   C   s.     1X AEs   *,c                 b    t        |       D ]!  }|j                  |dz          t        |       # y r5   )r6   r7   r-   r8   s      r   g2r>   I   s,    1X AEar   c                     t        |        y r
   )r-   )r;   s    r   nestedr@   Q   s	    	!Hr   c                 b    t        |       D ]!  }|j                  |dz          t        |       # y r5   )r6   r7   r@   r8   s      r   g3rB   U   s,    1X AEq	r   c                 b    | dk(  ry t        | dz
        D ]  }t        |        t        |        y )Nr   r   )axr-   r9   iis     r   arG   \   s1    AvQi b		!Hr   c                     t        |       dkD  rE| D ]?  }t        | D cg c]
  }||k7  s	| c}      D cg c]  }t        |g|z          }}|r?J  y t        |        y c c}w c c}w r5   )lenpermsr-   )lexps       r   rJ   rJ   e   sh    
1vz 	A).1/GaQ/G)HIAsQwIAIH1	
 	a 0HIs   
A 
A 
A%c                 Z    t        d|       D ]  }t        |       t        ||z  d        y )Nr      )r6   r-   rE   s     r   gr1rQ   p   s,    Aqk b	b2gqr   c                 F    t        |       D ]  }|j                  |        y r
   )rQ   r7   )r9   r:   rF   s      r   gr2rS   x   s     !f Br   c                   4    e Zd Zd Zed        Zd Zd Zd Zy)NestedGeneratorTestsc                 t    g }t        d|      D ]  }|j                  |        | j                  |g d       y )N   )r   r   rP         	   rX      )rS   r7   assertEqualr   r:   rF   s      r   test_layered_genletsz)NestedGeneratorTests.test_layered_genlets   s8    a, 	BKKO	89r   c                    t        t        t        d                  }t        |      }| j                  t	        |      d       | j                  g d|       | j                  g d|       g }t        t        t        t        d                  t        t        t        d                        D ]  }|j                  |        | j                  |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       y )NrX      )r   r   rP   rY   )rY   rP   r   r   rY   )r   r   rP   )r   r   rY   rP   )r   rP   r   )r   rP   r   rY   )r   r   rP   )r   rP   rY   r   )r   rP   r   )r   rY   r   rP   )rP   r   r   )r   rY   rP   r   )rP   r   r   )rJ   listr6   r\   rI   assertInzipr7   )r   	gen_permspermutationsresrF   s        r   test_permutationsz&NestedGeneratorTests.test_permutations   s    $uQx.)	I\*M:lL1lL1eDqN+U4a>-BC 	BJJrN	I&y(AI&y(AI&y(AC	Dr   c                     t         t        t        fD ]J  }g }t        d      D ]!  } |d|      D ]  }|j	                  |        # | j                  |dg dz         L y )NrY   rW   )
r   r   rP   r   rY   rP   rX   rY   rW   rX   )r<   r>   rB   r6   r7   r\   )r   r,   r:   _js        r   test_genlet_simplez'NestedGeneratorTests.test_genlet_simple   si    R 	GAD1X #1d #AKKN## T1'E#EF	Gr   c                 :    	 t        d       y # t        $ r Y y w xY w)N
   )r-   r)   r   s    r   test_genlet_badz$NestedGeneratorTests.test_genlet_bad   s     	"I 		s    	c                 J    g }t        d      D ]  }|j                  |        y )NrW   )rD   r7   r]   s      r   test_nested_genletsz(NestedGeneratorTests.test_nested_genlets   s%    Q% 	BKKO	r   N)	r#   r$   r%   r^   r   rg   rk   rn   rp   r   r   r   rU   rU      s-    : D D Gr   rU   N)r   )r    r   	leakcheckr   r   r-   r3   r<   r>   r@   rB   rG   rD   rJ   rQ   rS   rU   r   r   r   <module>rs      s      &%X %N
 BZ BZ AY 	u
 Sk Sk)8 )r   