
    <e{R                         d dl Z da G d de j                  Z G d de j                  Z G d de j                  Zedk    r e j                     dS dS )	    Nc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )NamedExpressionInvalidTestc                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzx := 0invalid syntaxassertRaisesRegexSyntaxErrorexecselfcodes     2/usr/lib/python3.11/test/test_named_expressions.py test_named_expression_invalid_01z;NamedExpressionInvalidTest.test_named_expression_invalid_01   s    ##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   =AAc                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz
x = y := 0r   r   r   s     r    test_named_expression_invalid_02z;NamedExpressionInvalidTest.test_named_expression_invalid_02   s    ##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz	y := f(x)r   r   r   s     r    test_named_expression_invalid_03z;NamedExpressionInvalidTest.test_named_expression_invalid_03   s    ##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzy0 = y1 := f(x)r   r   r   s     r    test_named_expression_invalid_04z;NamedExpressionInvalidTest.test_named_expression_invalid_04   s    $##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz((a, b) := (1, 2))z,cannot use assignment expressions with tupler   r   s     r    test_named_expression_invalid_06z;NamedExpressionInvalidTest.test_named_expression_invalid_06   s    '##K1_`` 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzdef spam(a = b := 42): passr   r   r   s     r    test_named_expression_invalid_07z;NamedExpressionInvalidTest.test_named_expression_invalid_07%   s    0##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzdef spam(a: b := 42 = 5): passr   r   r   s     r    test_named_expression_invalid_08z;NamedExpressionInvalidTest.test_named_expression_invalid_08+   s    3##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzspam(a=b := 'c')r   r   r   s     r    test_named_expression_invalid_09z;NamedExpressionInvalidTest.test_named_expression_invalid_091   s    %##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzspam(x = y := f(x))r   r   r   s     r    test_named_expression_invalid_10z;NamedExpressionInvalidTest.test_named_expression_invalid_107   s    (##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzspam(a=1, b := 2),positional argument follows keyword argumentr   r   s     r    test_named_expression_invalid_11z;NamedExpressionInvalidTest.test_named_expression_invalid_11=   s    &##K:< < 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S Nzspam(a=1, (b := 2))r"   r   r   s     r    test_named_expression_invalid_12z;NamedExpressionInvalidTest.test_named_expression_invalid_12D       (##K:< < 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S r%   r   r   s     r    test_named_expression_invalid_13z;NamedExpressionInvalidTest.test_named_expression_invalid_13K   r'   r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz(x := lambda: y := 1)r   r   r   s     r    test_named_expression_invalid_14z;NamedExpressionInvalidTest.test_named_expression_invalid_14R   s    *##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz(lambda: x := 1)z-cannot use assignment expressions with lambdar   r   s     r    test_named_expression_invalid_15z;NamedExpressionInvalidTest.test_named_expression_invalid_15X   s    %##K;= = 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz[i + 1 for i in i := [1,2]]r   r   r   s     r    test_named_expression_invalid_16z;NamedExpressionInvalidTest.test_named_expression_invalid_16_   s    ,##K1ABB 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz-[i := 0, j := 1 for i, j in [(1, 2), (3, 4)]]z;did you forget parentheses around the comprehension target?r   r   s     r    test_named_expression_invalid_17z;NamedExpressionInvalidTest.test_named_expression_invalid_17e   s    >##KMO O 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )NzNclass Foo():
            [(42, 1 + ((( j := i )))) for i in range(5)]
        zKassignment expression within a comprehension cannot be used in a class bodyr   r   s     r   +test_named_expression_invalid_in_class_bodyzFNamedExpressionInvalidTest.test_named_expression_invalid_in_class_bodyl   s     ##KY[ [ 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                    g d}|D ]~\  }}}d| d}|                      |          5  |                     t          |          5  t          |i i            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N))Local reuseiz[i := 0 for i in range(5)])Nested reusejz0[[(j := 0) for i in range(5)] for j in range(5)])Reuse inner loop targetr8   z.[(j := 0) for i in range(5) for j in range(5)])Unpacking reuser6   z[i := 0 for i, j in [(0, 1)]])Reuse in loop conditionr6   z#[i+1 for i in range(5) if (i := 0)])Unreachable reuser6   z#[False or (i:=0) for i in range(5)])Unreachable nested reuser6   z?[(i, j) for i in range(5) for j in range(5) if True or (i:=10)]Fassignment expression cannot rebind comprehension iteration variable ''casesubTestr   r	   r
   r   casesrA   targetr   msgs         r   Mtest_named_expression_invalid_rebinding_list_comprehension_iteration_variablezhNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_list_comprehension_iteration_variableu   -   	
 	
 	
 #( 	' 	'D&$d[adddC4(( ' '++K== ' 'r2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	'5   A:A#A:#A''A:*A'+A::A>	A>	c                 &   ddg}|D ]\  }}}d| d}|                      |          5  |                     t          |          5  t          |i            d d d            n# 1 swxY w Y   |                     t          |          5  t          |i i            d d d            n# 1 swxY w Y   |                     t          |          5  t          d| i            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   
d S )N)Inner reuser8   z3[i for i in range(5) if (j := 0) for j in range(5)])Inner unpacking reuser8   z6[i for i in range(5) if (j := 0) for j, k in [(0, 1)]]Ecomprehension inner loop cannot rebind assignment expression target 'r?   r@   lambda: rB   rD   s         r   Etest_named_expression_invalid_rebinding_list_comprehension_inner_loopz`NamedExpressionInvalidTest.test_named_expression_invalid_rebinding_list_comprehension_inner_loop   %   Wd
 #( 	0 	0D&$cZ`cccC4(( 0 0++K== # #rNNN# # # # # # # # # # # # # # #++K== ' 'r2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '++K== 0 0*D**B///0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0}   DA#D#A''D*A'+D	B'D'B++D.B+/DC-!D-C11D4C15DD	D	c                    g d}d}|D ]\  }}|                      |          5  |                     t          |          5  t          |i            d d d            n# 1 swxY w Y   |                     t          |          5  t          |i i            d d d            n# 1 swxY w Y   |                     t          |          5  t          d| i            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)	)	Top levelz[i for i in (i := range(5))])Inside tuplez"[i for i in (2, 3, i := range(5))])Inside listz"[i for i in [2, 3, i := range(5)]])Different namez[i for i in (j := range(5))])Lambda expressionz'[i for i in (lambda:(j := range(5)))()])
Inner loopz.[i for i in range(5) for j in (i := range(5))])Nested comprehensionz)[i for i in [j for j in (k := range(5))]])Nested comprehension conditionz1[i for i in [j for j in range(5) if (j := True)]])Nested comprehension bodyz,[i for i in [(j := True) for j in range(5)]]Kassignment expression cannot be used in a comprehension iterable expressionr@   rO   rB   r   rE   rG   rA   r   s        r   Dtest_named_expression_invalid_list_comprehension_iterable_expressionz_NamedExpressionInvalidTest.test_named_expression_invalid_list_comprehension_iterable_expression      

 

 

 \ 	0 	0JD$4(( 0 0++K== # #rNNN# # # # # # # # # # # # # # #++K== ' 'r2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '++K== 0 0*D**B///0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0}   C?AC?A""C?%A"&C?B"C?"B&&C?)B&*C?C(C?(C,,C?/C,0C??D	D	c                    g d}|D ]~\  }}}d| d}|                      |          5  |                     t          |          5  t          |i i            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N))r5   r6   z{i := 0 for i in range(5)})r7   r8   z0{{(j := 0) for i in range(5)} for j in range(5)})r9   r8   z.{(j := 0) for i in range(5) for j in range(5)})r:   r6   z{i := 0 for i, j in {(0, 1)}})r;   r6   z#{i+1 for i in range(5) if (i := 0)})r<   r6   z#{False or (i:=0) for i in range(5)})r=   r6   z?{(i, j) for i in range(5) for j in range(5) if True or (i:=10)}r>   r?   r@   rB   rD   s         r   Ltest_named_expression_invalid_rebinding_set_comprehension_iteration_variablezgNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_set_comprehension_iteration_variable   rI   rJ   c                 &   ddg}|D ]\  }}}d| d}|                      |          5  |                     t          |          5  t          |i            d d d            n# 1 swxY w Y   |                     t          |          5  t          |i i            d d d            n# 1 swxY w Y   |                     t          |          5  t          d| i            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   
d S )N)rL   r8   z3{i for i in range(5) if (j := 0) for j in range(5)})rM   r8   z6{i for i in range(5) if (j := 0) for j, k in {(0, 1)}}rN   r?   r@   rO   rB   rD   s         r   Dtest_named_expression_invalid_rebinding_set_comprehension_inner_loopz_NamedExpressionInvalidTest.test_named_expression_invalid_rebinding_set_comprehension_inner_loop   rQ   rR   c                    g d}d}|D ]\  }}|                      |          5  |                     t          |          5  t          |i            d d d            n# 1 swxY w Y   |                     t          |          5  t          |i i            d d d            n# 1 swxY w Y   |                     t          |          5  t          d| i            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)	)rT   z{i for i in (i := range(5))})rU   z"{i for i in (2, 3, i := range(5))})rV   z"{i for i in {2, 3, i := range(5)}})rW   z{i for i in (j := range(5))})rX   z'{i for i in (lambda:(j := range(5)))()})rY   z.{i for i in range(5) for j in (i := range(5))})rZ   z){i for i in {j for j in (k := range(5))}})r[   z1{i for i in {j for j in range(5) if (j := True)}})r\   z,{i for i in {(j := True) for j in range(5)}}r]   r@   rO   rB   r^   s        r   Ctest_named_expression_invalid_set_comprehension_iterable_expressionz^NamedExpressionInvalidTest.test_named_expression_invalid_set_comprehension_iterable_expression   r`   ra   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r    r#   r&   r)   r+   r-   r/   r1   r3   rH   rP   r_   rc   re   rg        r   r   r      sm                                         ' ' '"0 0 00 0 0,' ' '"0 0 00 0 0 0 0rl   r   c                   z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )NamedExpressionAssignmentTestc                 :    dx} |                      |d           d S )N
   assertEqualr   as     r   #test_named_expression_assignment_01zANamedExpressionAssignmentTest.test_named_expression_assignment_01   s'    Brl   c                 >    d}|x} |                      |d           d S N   rq   rs   s     r   #test_named_expression_assignment_02zANamedExpressionAssignmentTest.test_named_expression_assignment_02   s,    Brl   c                 :    dx} |                      |d           d S )N   rq   )r   totals     r   #test_named_expression_assignment_03zANamedExpressionAssignmentTest.test_named_expression_assignment_03   s'    """""rl   c                 :    dx} |                      |d           d S )N      r{   rq   )r   infos     r   #test_named_expression_assignment_04zANamedExpressionAssignmentTest.test_named_expression_assignment_04   s(    	y)))))rl   c                 >    dx}df |                      |d           d S Nr   r   rq   )r   xs     r   #test_named_expression_assignment_05zANamedExpressionAssignmentTest.test_named_expression_assignment_05   s+    Arl   c                     dx}x}x} |                      |d           |                      |d           |                      |d           d S )Nr   rq   )r   r   yzs       r   #test_named_expression_assignment_06zANamedExpressionAssignmentTest.test_named_expression_assignment_06   s\    VQ}q	AAArl   c                 :    dx} |                      |d           d S )Nr   r   rq   )r   locs     r   #test_named_expression_assignment_07zANamedExpressionAssignmentTest.test_named_expression_assignment_07  s'    f%%%%%rl   c                 h    dx}r|                      |d           d S |                     d           d S )Neggs0variable was not assigned using named expression)rr   failr   spams     r   #test_named_expression_assignment_08zANamedExpressionAssignmentTest.test_named_expression_assignment_08
  sD    >4 	LT6*****iiJKKKKKrl   c                 f    dx}r|                      |           d S |                     d           d S )NTr   )
assertTruer   r   s     r   #test_named_expression_assignment_09zANamedExpressionAssignmentTest.test_named_expression_assignment_09  s@    !\T 	LOOD!!!!!iiJKKKKKrl   c                 D    dx}dk    rd S |                      d           d S )Nrp   r   )r   )r   matchs     r   #test_named_expression_assignment_10zANamedExpressionAssignmentTest.test_named_expression_assignment_10  s/    KEBDiiJKKKKKrl   c                 f    d g d}fd|D             }|                      |g d           d S )Nc                     | S Nrk   rt   s    r   r   zONamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.spam      Hrl   r   c                 B    g | ]} |          xd k    ||z  fS r   rk   .0r   r   r   s     r   
<listcomp>zUNamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.<listcomp>  9    EEEqQ<112D2D1ac{2D2D2Drl   )r   r         ?)r   r   r   )r{   r{   r   rq   r   
input_dataresr   r   s      @@r   #test_named_expression_assignment_11zANamedExpressionAssignmentTest.test_named_expression_assignment_11  s[    	 	 	YY
EEEEEJEEEEEEFFFFFrl   c                     d fdt          dd          D             }|                     |ddgddgddgddgg           d S )	Nc                     | S r   rk   r   s    r   r   zONamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.spam"  r   rl   c                 4    g | ]} |          x|z  gS rk   rk   r   s     r   r   zUNamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.<listcomp>$  .    888qTT!WWac"888rl   r      r   r   r{      rangerr   r   r   r   r   s     @@r   #test_named_expression_assignment_12zANamedExpressionAssignmentTest.test_named_expression_assignment_12!  sl    	 	 	88888E!QKK8883x!SAs8aXFGGGGGrl   c                     t          ddgx}          }|                     |d           |                     |ddg           d S r   lenrr   )r   lineslengths      r   #test_named_expression_assignment_13zANamedExpressionAssignmentTest.test_named_expression_assignment_13(  sM    q!f_U%%###1&&&&&rl   c                     	 d}d}d}||||dz
  z  z  x}k    r|dz
  |z  |z   |z  }||||dz
  z  z  x}k    |                      |d           d S )N	   r   r{   r   rq   )r   rt   nr   ds        r   #test_named_expression_assignment_14zANamedExpressionAssignmentTest.test_named_expression_assignment_14.  s    	 Q1X%1&&A#q1"A Q1X%1&& 	Arl   c                 D    dx}r	 dx}|                      |d           d S )NFrq   rs   s     r   #test_named_expression_assignment_15zANamedExpressionAssignmentTest.test_named_expression_assignment_15>  s=    ja 	 ja 	 	E"""""rl   c           
          d\  fdt          d          D             }|                     |dddddd	d
           d S )Nr   c                 4    i | ]}xxz   xz   z
  S rk   rk   )r   __rt   bcs     r   
<dictcomp>zUNamedExpressionAssignmentTest.test_named_expression_assignment_16.<locals>.<dictcomp>F  s5    HHHQq&!!a%ZQ014HHHrl      r   r{   r            )r   r   r{   r   r   r   r   )r   fibrt   r   r   s     @@@r   #test_named_expression_assignment_16zANamedExpressionAssignmentTest.test_named_expression_assignment_16D  s_    1HHHHHHuQxxHHH!aA""EEFFFFFrl   c                     dg}|dx}         }|                      |d           |                      ||d                    d S )Nr   r   rq   )r   rt   r   elements       r   #test_named_expression_assignment_17zANamedExpressionAssignmentTest.test_named_expression_assignment_17I  sL    CqDA'A!A$'''''rl   c                      G d d          } |dgdgg          }|dx}dx}f         }|                      |d           |                      |d           |                      ||j        |         |                    d S )Nc                       e Zd Zd Zd ZdS )]NamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalListc                     || _         d S r   two_dimensional_list)r   r   s     r   __init__zfNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__init__Q  s    ,@)))rl   c                 @    | j         |d                  |d                  S )Nr   r   r   )r   indexs     r   __getitem__ziNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__getitem__T  s    0q:58DDrl   N)rh   ri   rj   r   r   rk   rl   r   TwoDimensionalListr   P  s:        A A AE E E E Erl   r   r   r   r   )rr   r   )r   r   rt   r   r   r   s         r   #test_named_expression_assignment_18zANamedExpressionAssignmentTest.test_named_expression_assignment_18O  s    	E 	E 	E 	E 	E 	E 	E 	E aSz**qDAQ$!J-AA!"8";A">?????rl   N)rh   ri   rj   ru   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rk   rl   r   rn   rn      s9            
     # # #
* * *
  
  & & &
L L L
L L L
L L L
G G GH H H' ' '   # # #G G G
( ( (@ @ @ @ @rl   rn   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )NamedExpressionScopeTestc                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nz!def spam():
    (a := 5)
print(a)zname 'a' is not defined)r   	NameErrorr
   r   s     r   test_named_expression_scope_01z7NamedExpressionScopeTest.test_named_expression_scope_01a  s     ##I/HII 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     dfdt          d          D             }|                     |g d           |                     d           d S )Nr   c                     g | ]	}|z   x
S rk   rk   )r   vr|   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_02.<locals>.<listcomp>k  s"    ===q*===rl   r   r   r   r{   r   rp   rp   r   )r   partial_sumsr|   s     @r   test_named_expression_scope_02z7NamedExpressionScopeTest.test_named_expression_scope_02i  s`    ====E!HH==='7'7'7888#####rl   c                     t          fddD                       }|                     |           |                     d           d S )Nc              3   (   K   | ]}|xd k    V  dS )r   Nrk   )r   numlastNums     r   	<genexpr>zJNamedExpressionScopeTest.test_named_expression_scope_03.<locals>.<genexpr>q  s,      EECc>7a/EEEEEErl   r   r   )anyr   rr   )r   containsOner   s     @r   test_named_expression_scope_03z7NamedExpressionScopeTest.test_named_expression_scope_03p  sS    EEEE9EEEEE$$$!$$$$$rl   c                 v    d fdt          dd          D             }|                     d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_04.<locals>.spamw  r   rl   c                 4    g | ]} |          x|z  gS rk   rk   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_04.<locals>.<listcomp>y  r   rl   r   r   r   r   r   s     @@r   test_named_expression_scope_04z7NamedExpressionScopeTest.test_named_expression_scope_04v  sS    	 	 	88888E!QKK888Arl   c                     d g d}fd|D             }|                      |g d           |                      d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_05.<locals>.spam~  r   rl   r   c                 B    g | ]} |          xd k    ||z  fS r   rk   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_05.<locals>.<listcomp>  r   rl   r   r{   rq   r   s      @@r   test_named_expression_scope_05z7NamedExpressionScopeTest.test_named_expression_scope_05}  sq    	 	 	YY
EEEEEJEEEEEEFFFArl   c                     fdt          d          D             }|                     |g dg dg           |                     d           d S )Nc                 F    g | ]}fd t          d          D             S )c                     g | ]}|xS rk   rk   )r   r6   r   s     r   r   zVNamedExpressionScopeTest.test_named_expression_scope_06.<locals>.<listcomp>.<listcomp>  s    ,,,a	,,,rl   r{   r   )r   r8   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_06.<locals>.<listcomp>  s4    ???,,,,588,,,???rl   r   r   r   r   r   )r   r   r   s     @r   test_named_expression_scope_06z7NamedExpressionScopeTest.test_named_expression_scope_06  sa    ????eAhh???yyy)))4555q!!!!!rl   c                 \    t          ddgx}           |                     |ddg           d S r   r   )r   r   s     r   test_named_expression_scope_07z7NamedExpressionScopeTest.test_named_expression_scope_07  s8    aVOEA'''''rl   c                     d d fdt          d          D             }|                     |ddg           |                     d           |                     d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.spam  r   rl   c                     | dz  S Nr   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.eggs      q5Lrl   c                 @    g | ]}  |x          x          S rk   rk   )r   hrt   r   r   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_08.<locals>.<listcomp>  4    9991tt1fa%A&&999rl   r   r   r   r   )r   r   rt   r   r   r   s     @@@@r   test_named_expression_scope_08z7NamedExpressionScopeTest.test_named_expression_scope_08  s    	 	 		 	 	 :999999a999q!f%%%AArl   c                     d d fdt          d          D             }|                     |ddg           |                     d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.spam  r   rl   c                     | dz  S r  rk   r  s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.eggs  r  rl   c                 @    g | ]}  |x          x          S rk   rk   )r   r
  rt   r   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_09.<locals>.<listcomp>  r  rl   r   r   r   )r   r   rt   r   r   s     @@@r   test_named_expression_scope_09z7NamedExpressionScopeTest.test_named_expression_scope_09  s    	 	 		 	 	 :99999a999q!f%%%Arl   c                     fdt          d          D             }|                     |ddgddgg           |                     d           |                     ddg           d S )Nc                 J    g | ]}fd t          d          D             x S )c                     g | ]}d xS )r   rk   )r   r6   rt   s     r   r   zVNamedExpressionScopeTest.test_named_expression_scope_10.<locals>.<listcomp>.<listcomp>  s    ...!VQ...rl   r   r   )r   r8   rt   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_10.<locals>.<listcomp>  s9    AAA1....U1XX....qAAArl   r   r   r   )r   r   rt   r   s     @@r   test_named_expression_scope_10z7NamedExpressionScopeTest.test_named_expression_scope_10  s    AAAAAaAAA1v1v.///AQF#####rl   c                     fdt          d          D             }|                     |g d           |                     d           d S )Nc                     g | ]}|xS rk   rk   )r   r6   r8   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_11.<locals>.<listcomp>  s    (((!Avq(((rl   r   )r   r   r   r{   r   r   r   )r   r   r8   s     @r   test_named_expression_scope_11z7NamedExpressionScopeTest.test_named_expression_scope_11  sX    ((((uQxx(((ooo...Arl   c                     dfdt          d          D             }|                     |g d           |                     d           d S )Nr   c                     g | ]	}|z   x
S rk   rk   )r   r6   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_17.<locals>.<listcomp>  s!    ,,,aAEzq,,,rl   r   r   rp   r   )r   r   r   s     @r   test_named_expression_scope_17z7NamedExpressionScopeTest.test_named_expression_scope_17  s`    ,,,,588,,,...///Brl   c                 ~    d } |dx}          }|                      |d           |                      |d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_18.<locals>.spam  r   rl   r   rq   r   r   r   r   s       r   test_named_expression_scope_18z7NamedExpressionScopeTest.test_named_expression_scope_18  sV    	 	 	 d61lla   Arl   c                 ~    d } |dx}          }|                      |d           |                      |d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_19.<locals>.spam  r   rl   r   rq   r  s       r   test_named_expression_scope_19z7NamedExpressionScopeTest.test_named_expression_scope_19  sV    	 	 	 dFAnna   Arl   c                     d } |dx}          }|                      |d           |                      |d           d S )Nc                     | S r   rk   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_20.<locals>.spam  r   rl   r   r   rq   r  s       r   test_named_expression_scope_20z7NamedExpressionScopeTest.test_named_expression_scope_20  s[    	 	 	 d1faa   Arl   c                     d } |dx}d          }|                      |d           |                      |d           d S )Nc                     | |z   S r   rk   rt   r   s     r   r   zENamedExpressionScopeTest.test_named_expression_scope_21.<locals>.spam  r  rl   r   r   r  r{   rq   r   r   r   r   s       r   test_named_expression_scope_21z7NamedExpressionScopeTest.test_named_expression_scope_21  s]    	 	 	 d61Qa   Arl   c                     d } |dx}d          }|                      |d           |                      |d           d S )Nc                     | |z   S r   rk   r(  s     r   r   zENamedExpressionScopeTest.test_named_expression_scope_22.<locals>.spam  r  rl   r   r   r  r{   rq   r)  s       r   test_named_expression_scope_22z7NamedExpressionScopeTest.test_named_expression_scope_22  s]    	 	 	 dFAq!!!a   Arl   c                     d } |dx}d          }|                      |d           |                      |d           d S )Nc                     | |z   S r   rk   r(  s     r   r   zENamedExpressionScopeTest.test_named_expression_scope_23.<locals>.spam  r  rl   r   r   )r   rt   r{   rq   r)  s       r   test_named_expression_scope_23z7NamedExpressionScopeTest.test_named_expression_scope_23  s]    	 	 	 d1fa###a   Arl   c                 V    dfd} |             |                      d           d S )Nrp   c                      dx  d S rw   rk   r   s   r   r   zENamedExpressionScopeTest.test_named_expression_scope_24.<locals>.spam  s    WQQQQrl   rx   rq   )r   r   rt   s     @r   test_named_expression_scope_24z7NamedExpressionScopeTest.test_named_expression_scope_24  sJ    	 	 	 	 	 	Brl   c                 h    i }d}t          ||i            |                     |d         d           d S )Nz4a = 10
def spam():
    global a
    (a := 20)
spam()rt   rx   )r
   rr   )r   nsr   s      r   test_named_expression_scope_25z7NamedExpressionScopeTest.test_named_expression_scope_25  sB    
 	T2rC"%%%%%rl   c                    d}d}d}d}dd| fdd| d	fd
d| fdd| d	fdd| fdd| d	fdd| fdd| d	fg}|D ]\  }}|                      |          5  i }t          ||           |                     |d         d           |                     |d         g d           d d d            n# 1 swxY w Y   d S )Nz/[x := i for i in range(3) if (x := i) or not x]z([x := i for i in range(3) if x or not x]z*[x for i in range(3) if (x := i) or not x]zF[j for i in range(3) if x or not x for j in range(3) if (x := i)][:-3]zRebind globalzx = 1; result = zRebind nonlocalzresult, x = (lambda x=1: (z, x))()zFilter globalzFilter nonlocalzBody globalzBody nonlocalzNested globalzNested nonlocalr@   r   r   resultr   )rC   r
   rr   )	r   	rebinding
filter_refbody_ref
nested_refrE   rA   r   r5  s	            r   6test_named_expression_variable_reuse_in_comprehensionszONamedExpressionScopeTest.test_named_expression_variable_reuse_in_comprehensions	  s    F	?
?]
<<<= OY O O OP===> PZ P P PQ9x99:L8LLLM===> PZ P P PQ	
   	: 	:JD$4(( : :T2  C!,,,  Hyyy999	: : : : : : : : : : : : : : :	: 	:s   AB55B9	<B9	c                      t                       fd}	  |                                  t                     d ad S # d aw xY w)Nc                  t    fdt          d          D                                   t                     d S )Nc                     g | ]}xa S rk   )
GLOBAL_VAR)r   _sentinels     r   r   zZNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f.<locals>.<listcomp>*      6668#Z666rl   r   )r   rr   rA  )r   rC  s   r   fzFNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f(  s?    6666U1XX6666Z22222rl   objectrr   rA  r   rE  rC  s   ` @r   "test_named_expression_global_scopez;NamedExpressionScopeTest.test_named_expression_global_scope%  sk    88	3 	3 	3 	3 	3 	3	ACCCZ222JJJJs   %A Ac                 |     t                       fd} |                                  t          d            d S )Nc                  r     d   fdt          d          D                                              d S )Nc                     g | ]}xS rk   rk   )r   rB  rA  rC  s     r   r   zlNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f.<locals>.<listcomp>6  rD  rl   r   r   )rA  r   rC  s   @r   rE  zXNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f4  sH    J66666U1XX6666Z22222rl   rF  rH  s   ` @r   4test_named_expression_global_scope_no_global_keywordzMNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword2  sT    88	3 	3 	3 	3 	3 	3 	
T*****rl   c                 F     t                       fd} |             d S )Nc                  Z    d fd}  |                                              d S )Nc                  @     fdt          d          D              d S )Nc                     g | ]}xS rk   rk   r   rB  nonlocal_varrC  s     r   r   zgNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.g.<locals>.<listcomp>A      <<<a)<<<rl   r   r   rS  rC  s   r   gzSNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.g?  s,    <<<<<588<<<<<<rl   rq   )rV  rS  r   rC  s    @r   rE  zHNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f=  sP    L= = = = = = ACCC\844444rl   rG  rH  s   ` @r   $test_named_expression_nonlocal_scopez=NamedExpressionScopeTest.test_named_expression_nonlocal_scope;  s<    88	5 	5 	5 	5 	5 	5 	
rl   c                 F     t                       fd} |             d S )Nc                  V    d } fd} |                                  | d            d S )Nc                  B      fdt          d          D              d S )Nc                     g | ]}xS rk   rk   rR  s     r   r   z{NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.g.<locals>.<listcomp>K  rT  rl   r   r   rU  s   @r   rV  zgNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.gJ  s-    <<<<<588<<<<<<rl   rq   )rS  rV  r   rC  s     r   rE  z\NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.fH  sH    L= = = = =ACCC\400000rl   rW  rH  s   ` @r   8test_named_expression_nonlocal_scope_no_nonlocal_keywordzQNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keywordF  s<    88	1 	1 	1 	1 	1 	1 	
rl   c                     dg d}fd|D             }|                      dt                                 t          |          D ]$\  }}|                     |||         z              %d S )Nr   )r   r   r{   r   c              3   &   K   | ]}|z   xV  d S r   rk   )r   r6   rt   r   s     r   r   zQNamedExpressionScopeTest.test_named_expression_scope_in_genexp.<locals>.<genexpr>S  s+      ((q1u*!((((((rl   r   )assertNotInlocals	enumeraterr   )r   r   genexpidxelemrt   r   s        @@r   %test_named_expression_scope_in_genexpz>NamedExpressionScopeTest.test_named_expression_scope_in_genexpP  s    LL(((((a(((fhh'''"6** 	/ 	/ICT1S6A:....	/ 	/rl   N)rh   ri   rj   r   r   r   r   r   r   r  r  r  r  r  r  r  r"  r%  r*  r-  r0  r3  r6  r=  rI  rM  rX  r]  rf  rk   rl   r   r   r   _  s         $ $ $% % %    " " "( ( (
  
 
 
$ $ $                        
& 
& 
&: : :8  + + +	 	 	  / / / / /rl   r   __main__)unittestrA  TestCaser   rn   r   rh   mainrk   rl   r   <module>rk     s    
Z0 Z0 Z0 Z0 Z0!2 Z0 Z0 Z0zy@ y@ y@ y@ y@H$5 y@ y@ y@zx/ x/ x/ x/ x/x0 x/ x/ x/v zHMOOOOO rl   