
    Yh                         S SK J r   SSKJr  SSKJr   " S S\ 5      rSS jrS rS	 rS
 r	\" \	5      r	S r
S r\" \5      rS r\" \5      rS r\" \5      rS r\" \5      rS r\" \5      r " S S\5      rg)    )greenlet   )TestCase)fails_leakcheckc                   :    \ rS rSrSrS rS rS rS rS r	\	r
Srg)	genlet   Nc                 *    Xl         X l        S U l        g N)argskwdschild)selfr   r   s      V/var/www/html/env/lib/python3.13/site-packages/greenlet/tests/test_generator_nested.py__init__genlet.__init__   s    		
    c                 X    U R                   u  nU" U R                  0 U R                  D6  g r   )fnr   r   )r   r   s     r   run
genlet.run   s$     gg
DII##r   c                     U $ r    r   s    r   __iter__genlet.__iter__   s    r   c                     Xl         g r   )r   )r   r   s     r   	set_childgenlet.set_child   s    
r   c                 B   U R                   (       aV  U R                   nUR                   (       a(  UnUR                   nS Ul         UR                   (       a  M(  UR                  5       nO*[        R                  " 5       U l        U R                  5       nU (       a  U$ [
        er   )r   switchr   
getcurrentparentStopIteration)r   r   tmpresults       r   __next__genlet.__next__   so    ::JJE++ 	 +++
 \\^F"--/DK[[]FMr   )r   r   r   r#   )__name__
__module____qualname____firstlineno__r#   r   r   r   r   r'   next__static_attributes__r   r   r   r   r      s'    F
$$ Dr   r   c                    [         R                  " 5       nUS:w  aZ  [        U[        5      (       d  [	        S5      eUS:  a  UR
                  R                  U5        UR
                  nUS-  nUS:w  a  MZ  UR                  U 5        g )Nr   zyield outside a genletr   )r   r"   
isinstancer   RuntimeErrorr#   r   r!   )valuelevelgs      r   Yieldr5   -   sq    A
1*!V$$78819HHq!HH
 1* HHUOr   c                 ,   ^   " U 4S jS[         5      nU$ )Nc                      > \ rS rSr Y 4rSrg)Genlet.<locals>.TheGenlet<   r   N)r)   r*   r+   r,   r   r.   )funcs   r   	TheGenletr8   <   s
    Wr   r;   )r   )r:   r;   s   ` r   Genletr<   ;   s    F r   c              #   `   #    [        U 5       H  nUR                  US-   5        Uv   M     g 7fNr   )rangeappendnseenis      r   g1rE   C   s(     1XAE s   ,.c                 f    [        U 5       H"  nUR                  US-   5        [        U5        M$     g r>   )r?   r@   r5   rA   s      r   g2rG   I   s'    1XAEa r   c                     [        U 5        g r   )r5   )rD   s    r   nestedrI   Q   s	    	!Hr   c                 f    [        U 5       H"  nUR                  US-   5        [        U5        M$     g r>   )r?   r@   rI   rA   s      r   g3rK   U   s'    1XAEq	 r   c                 h    U S:X  a  g [        U S-
  5       H  n[        U5        M     [        U 5        g )Nr   r   )axr5   rB   iis     r   arP   \   s,    AvQib	 	!Hr   c                     [        U 5      S:  aS  U  HL  n[        U  Vs/ s H  o"U:w  d  M
  UPM     sn5       Vs/ s H  n[        U/U-   5      PM     nnU(       a  ML   e   g [        U 5        g s  snf s  snf r>   )lenpermsr5   )lexps       r   rS   rS   e   sj    
1vzA).1/G1aQ1/G)HI)HAsQw)HAI1H1 
 	a 0HIs   	A/
A/
A4c                 \    [        SU 5       H  n[        U5        [        X-  S5        M     g )Nr      )r?   r5   rN   s     r   gr1rZ   p   s%    Aqkb	bgq r   c                 J    [        U 5       H  nUR                  U5        M     g r   )rZ   r@   )rB   rC   rO   s      r   gr2r\   x   s    !fB r   c                   <    \ rS rSrS r\S 5       rS rS rS r	Sr
g)	NestedGeneratorTests   c                 x    / n[        SU5       H  nUR                  U5        M     U R                  U/ SQ5        g )N   )r   r   rY         	   rb      )r\   r@   assertEqualr   rC   rO   s      r   test_layered_genlets)NestedGeneratorTests.test_layered_genlets   s3    a,BKKO 89r   c                 
   [        [        [        S5      5      5      n[        U5      nU R                  [	        U5      S5        U R                  / SQU5        U R                  / SQU5        / n[        [        [        [        S5      5      5      [        [        [        S5      5      5      5       H  nUR                  U5        M     U R                  U/ SQ/ SQ4/ SQ/ SQ4/ S	Q/ S
Q4/ SQ/ SQ4/ SQ/ SQ4/ SQ/ SQ4/5        g )Nrb      )r   r   rY   rc   )rc   rY   r   r   rc   )r   r   rY   )r   r   rc   rY   )r   rY   r   )r   rY   r   rc   )r   r   rY   )r   rY   rc   r   )r   rY   r   )r   rc   r   rY   )rY   r   r   )r   rc   rY   r   )rY   r   r   )rS   listr?   rf   rR   assertInzipr@   )r   	gen_permspermutationsresrO   s        r   test_permutations&NestedGeneratorTests.test_permutations   s    $uQx.)	I\*M:lL1lL1eDqN+U4a>-BCBJJrN DI&y(AI&y(AI&y(AC	Dr   c                     [         [        [        4 HO  n/ n[        S5       H$  nU" SU5       H  nUR	                  U5        M     M&     U R                  US/ SQ-  5        MQ     g )Nrc   ra   )
r   r   rY   r   rc   rY   rb   rc   ra   rb   )rE   rG   rK   r?   r@   rf   )r   r4   rC   _js        r   test_genlet_simple'NestedGeneratorTests.test_genlet_simple   sX    RAD1X1dAKKN $  T1'E#EF r   c                 <     [        S5        g ! [         a     g f = f)N
   )r5   r1   r   s    r   test_genlet_bad$NestedGeneratorTests.test_genlet_bad   s     	"I 		s    
c                 N    / n[        S5       H  nUR                  U5        M     g )Nra   )rM   r@   rg   s      r   test_nested_genlets(NestedGeneratorTests.test_nested_genlets   s     Q%BKKO r   r   N)r)   r*   r+   r,   rh   r   rr   rw   r{   r~   r.   r   r   r   r^   r^      s-    : D D Gr   r^   N)r   )r    r   	leakcheckr   r   r5   r<   rE   rG   rI   rK   rP   rM   rS   rZ   r\   r^   r   r   r   <module>r      s      &%X %N
 BZ BZ AY 	u
 Sk Sk)8 )r   