
    5\hrU                         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 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     E/opt/python-3.11.14/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   c                     d}|                      t          d          5  t          |i i            d d d            d S # 1 swxY w Y   d S )Nzqclass Foo:
            def bar(self):
                [[(__x:=2) for _ in range(2)] for __x in range(2)]
        zJassignment expression cannot rebind comprehension iteration variable '__x'r   r   s     r   5test_named_expression_invalid_mangled_class_variableszPNamedExpressionInvalidTest.test_named_expression_invalid_mangled_class_variables   s    
 ##KXZ Z 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   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   ri        r   r   r      s|                                         ' ' '"0 0 00 0 0,' ' '"0 0 00 0 0,    rn   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rn   c                 >    d}|x} |                      |d           d S N   rs   ru   s     r   #test_named_expression_assignment_02zANamedExpressionAssignmentTest.test_named_expression_assignment_02   s,    Brn   c                 :    dx} |                      |d           d S )N   rs   )r   totals     r   #test_named_expression_assignment_03zANamedExpressionAssignmentTest.test_named_expression_assignment_03   s'    """""rn   c                 :    dx} |                      |d           d S )N      r}   rs   )r   infos     r   #test_named_expression_assignment_04zANamedExpressionAssignmentTest.test_named_expression_assignment_04   s(    	y)))))rn   c                 >    dx}df |                      |d           d S Nr   r   rs   )r   xs     r   #test_named_expression_assignment_05zANamedExpressionAssignmentTest.test_named_expression_assignment_05  s+    Arn   c                     dx}x}x} |                      |d           |                      |d           |                      |d           d S )Nr   rs   )r   r   yzs       r   #test_named_expression_assignment_06zANamedExpressionAssignmentTest.test_named_expression_assignment_06  s\    VQ}q	AAArn   c                 :    dx} |                      |d           d S )Nr   r   rs   )r   locs     r   #test_named_expression_assignment_07zANamedExpressionAssignmentTest.test_named_expression_assignment_07  s'    f%%%%%rn   c                 h    dx}r|                      |d           d S |                     d           d S )Neggs0variable was not assigned using named expression)rt   failr   spams     r   #test_named_expression_assignment_08zANamedExpressionAssignmentTest.test_named_expression_assignment_08  sD    >4 	LT6*****iiJKKKKKrn   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Krn   c                 D    dx}dk    rd S |                      d           d S )Nrr   r   )r   )r   matchs     r   #test_named_expression_assignment_10zANamedExpressionAssignmentTest.test_named_expression_assignment_10  s/    KEBDiiJKKKKKrn   c                 f    d g d}fd|D             }|                      |g d           d S )Nc                     | S Nrm   rv   s    r   r   zONamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.spam$      Hrn   r   c                 B    g | ]} |          xd k    ||z  fS r   rm   .0r   r   r   s     r   
<listcomp>zUNamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.<listcomp>'  9    EEEqQ<112D2D1ac{2D2D2Drn   )r   r         ?)r   r   r   )r}   r}   r   rs   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Frn   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   rm   r   s    r   r   zONamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.spam,  r   rn   c                 4    g | ]} |          x|z  gS rm   rm   r   s     r   r   zUNamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.<listcomp>.  .    888qTT!WWac"888rn   r      r   r   r}      rangert   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Grn   c                     t          ddgx}          }|                     |d           |                     |ddg           d S r   lenrt   )r   lineslengths      r   #test_named_expression_assignment_13zANamedExpressionAssignmentTest.test_named_expression_assignment_132  sM    q!f_U%%###1&&&&&rn   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 )z
        Where all variables are positive integers, and a is at least as large
        as the n'th root of x, this algorithm returns the floor of the n'th
        root of x (and roughly doubling the number of accurate bits per
        iteration):
        	   r   r}   r   Nrs   )r   rv   nr   ds        r   #test_named_expression_assignment_14zANamedExpressionAssignmentTest.test_named_expression_assignment_148  s     Q1X%1&&A#q1"A Q1X%1&& 	Arn   c                 D    dx}r	 dx}|                      |d           d S )NFrs   ru   s     r   #test_named_expression_assignment_15zANamedExpressionAssignmentTest.test_named_expression_assignment_15H  s=    ja 	 ja 	 	E"""""rn   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 rm   rm   )r   __rv   bcs     r   
<dictcomp>zUNamedExpressionAssignmentTest.test_named_expression_assignment_16.<locals>.<dictcomp>P  s5    HHHQq&!!a%ZQ014HHHrn      r   r}   r            )r   r   r}   r   r   r   r   )r   fibrv   r   r   s     @@@r   #test_named_expression_assignment_16zANamedExpressionAssignmentTest.test_named_expression_assignment_16N  s_    1HHHHHHuQxxHHH!aA""EEFFFFFrn   c                     dg}|dx}         }|                      |d           |                      ||d                    d S )Nr   r   rs   )r   rv   r   elements       r   #test_named_expression_assignment_17zANamedExpressionAssignmentTest.test_named_expression_assignment_17S  sL    CqDA'A!A$'''''rn   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__[  s    ,@)))rn   c                 @    | j         |d                  |d                  S )Nr   r   r   )r   indexs     r   __getitem__ziNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__getitem__^  s    0q:58DDrn   N)rj   rk   rl   r   r   rm   rn   r   TwoDimensionalListr   Z  s:        A A AE E E E Ern   r   r   r   r   )rt   r   )r   r   rv   r   r   r   s         r   #test_named_expression_assignment_18zANamedExpressionAssignmentTest.test_named_expression_assignment_18Y  s    	E 	E 	E 	E 	E 	E 	E 	E aSz**qDAQ$!J-AA!"8";A">?????rn   N)rj   rk   rl   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rn   r   rp   rp      s9            
     # # #
* * *
  
  & & &
L L L
L L L
L L L
G G GH H H' ' '   # # #G G G
( ( (@ @ @ @ @rn   rp   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 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_01k  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 rm   rm   )r   vr~   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_02.<locals>.<listcomp>u  s"    ===q*===rn   r   r   r   r}   r   rr   rr   r   )r   partial_sumsr~   s     @r   test_named_expression_scope_02z7NamedExpressionScopeTest.test_named_expression_scope_02s  s`    ====E!HH==='7'7'7888#####rn   c                     t          fddD                       }|                     |           |                     d           d S )Nc              3   (   K   | ]}|xd k    V  dS )r   Nrm   )r   numlastNums     r   	<genexpr>zJNamedExpressionScopeTest.test_named_expression_scope_03.<locals>.<genexpr>{  s,      EECc>7a/EEEEEErn   r   r   )anyr   rt   )r   containsOner   s     @r   test_named_expression_scope_03z7NamedExpressionScopeTest.test_named_expression_scope_03z  sS    EEEE9EEEEE$$$!$$$$$rn   c                 v    d fdt          dd          D             }|                     d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_04.<locals>.spam  r   rn   c                 4    g | ]} |          x|z  gS rm   rm   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_04.<locals>.<listcomp>  r   rn   r   r   r   r   r   s     @@r   test_named_expression_scope_04z7NamedExpressionScopeTest.test_named_expression_scope_04  sS    	 	 	88888E!QKK888Arn   c                     d g d}fd|D             }|                      |g d           |                      d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_05.<locals>.spam  r   rn   r   c                 B    g | ]} |          xd k    ||z  fS r   rm   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_05.<locals>.<listcomp>  r   rn   r   r}   rs   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rn   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 rm   rm   )r   r6   r   s     r   r   zVNamedExpressionScopeTest.test_named_expression_scope_06.<locals>.<listcomp>.<listcomp>  s    ,,,a	,,,rn   r}   r   )r   r8   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_06.<locals>.<listcomp>  s4    ???,,,,588,,,???rn   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!!!!!rn   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'''''rn   c                     d d fdt          d          D             }|                     |ddg           |                     d           |                     d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.spam  r   rn   c                     | dz  S Nr   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.eggs      q5Lrn   c                 @    g | ]}  |x          x          S rm   rm   )r   hrv   r   r   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_08.<locals>.<listcomp>  4    9991tt1fa%A&&999rn   r   r   r   r   )r   r   rv   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rn   c                     d d fdt          d          D             }|                     |ddg           |                     d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.spam  r   rn   c                     | dz  S r  rm   r	  s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.eggs  r
  rn   c                 @    g | ]}  |x          x          S rm   rm   )r   r  rv   r   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_09.<locals>.<listcomp>  r  rn   r   r   r   )r   r   rv   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rn   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   rm   )r   r6   rv   s     r   r   zVNamedExpressionScopeTest.test_named_expression_scope_10.<locals>.<listcomp>.<listcomp>  s    ...!VQ...rn   r   r   )r   r8   rv   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_10.<locals>.<listcomp>  s9    AAA1....U1XX....qAAArn   r   r   r   )r   r   rv   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#####rn   c                     fdt          d          D             }|                     |g d           |                     d           d S )Nc                     g | ]}|xS rm   rm   )r   r6   r8   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_11.<locals>.<listcomp>  s    (((!Avq(((rn   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rn   c                     dfdt          d          D             }|                     |g d           |                     d           d S )Nr   c                     g | ]	}|z   x
S rm   rm   )r   r6   r   s     r   r   zKNamedExpressionScopeTest.test_named_expression_scope_17.<locals>.<listcomp>  s!    ,,,aAEzq,,,rn   r   r   rr   r   )r   r   r   s     @r   test_named_expression_scope_17z7NamedExpressionScopeTest.test_named_expression_scope_17  s`    ,,,,588,,,...///Brn   c                 ~    d } |dx}          }|                      |d           |                      |d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_18.<locals>.spam  r   rn   r   rs   r   r   r   r   s       r   test_named_expression_scope_18z7NamedExpressionScopeTest.test_named_expression_scope_18  sV    	 	 	 d61lla   Arn   c                 ~    d } |dx}          }|                      |d           |                      |d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_19.<locals>.spam  r   rn   r   rs   r!  s       r   test_named_expression_scope_19z7NamedExpressionScopeTest.test_named_expression_scope_19  sV    	 	 	 dFAnna   Arn   c                     d } |dx}          }|                      |d           |                      |d           d S )Nc                     | S r   rm   r   s    r   r   zENamedExpressionScopeTest.test_named_expression_scope_20.<locals>.spam  r   rn   r   r   rs   r!  s       r   test_named_expression_scope_20z7NamedExpressionScopeTest.test_named_expression_scope_20  s[    	 	 	 d1faa   Arn   c                     d } |dx}d          }|                      |d           |                      |d           d S )Nc                     | |z   S r   rm   rv   r   s     r   r   zENamedExpressionScopeTest.test_named_expression_scope_21.<locals>.spam  r
  rn   r   r   r	  r}   rs   r   r   r   r   s       r   test_named_expression_scope_21z7NamedExpressionScopeTest.test_named_expression_scope_21  s]    	 	 	 d61Qa   Arn   c                     d } |dx}d          }|                      |d           |                      |d           d S )Nc                     | |z   S r   rm   r+  s     r   r   zENamedExpressionScopeTest.test_named_expression_scope_22.<locals>.spam  r
  rn   r   r   r	  r}   rs   r,  s       r   test_named_expression_scope_22z7NamedExpressionScopeTest.test_named_expression_scope_22  s]    	 	 	 dFAq!!!a   Arn   c                     d } |dx}d          }|                      |d           |                      |d           d S )Nc                     | |z   S r   rm   r+  s     r   r   zENamedExpressionScopeTest.test_named_expression_scope_23.<locals>.spam  r
  rn   r   r   )r   rv   r}   rs   r,  s       r   test_named_expression_scope_23z7NamedExpressionScopeTest.test_named_expression_scope_23  s]    	 	 	 d1fa###a   Arn   c                 V    dfd} |             |                      d           d S )Nrr   c                      dx  d S ry   rm   r   s   r   r   zENamedExpressionScopeTest.test_named_expression_scope_24.<locals>.spam   s    WQQQQrn   rz   rs   )r   r   rv   s     @r   test_named_expression_scope_24z7NamedExpressionScopeTest.test_named_expression_scope_24  sJ    	 	 	 	 	 	Brn   c                 h    i }d}t          ||i            |                     |d         d           d S )Nz4a = 10
def spam():
    global a
    (a := 20)
spam()rv   rz   )r
   rt   )r   nsr   s      r   test_named_expression_scope_25z7NamedExpressionScopeTest.test_named_expression_scope_25  sB    
 	T2rC"%%%%%rn   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
   rt   )	r   	rebinding
filter_refbody_ref
nested_refrE   rA   r   r8  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 rm   )
GLOBAL_VAR)r   _sentinels     r   r   zZNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f.<locals>.<listcomp>4      6668#Z666rn   r   )r   rt   rD  )r   rF  s   r   fzFNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f2  s?    6666U1XX6666Z22222rn   objectrt   rD  r   rH  rF  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 rm   rm   )r   rE  rD  rF  s     r   r   zlNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f.<locals>.<listcomp>@  rG  rn   r   r   )rD  r   rF  s   @r   rH  zXNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f>  sH    J66666U1XX6666Z22222rn   rI  rK  s   ` @r   4test_named_expression_global_scope_no_global_keywordzMNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword<  sT    88	3 	3 	3 	3 	3 	3 	
T*****rn   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 rm   rm   r   rE  nonlocal_varrF  s     r   r   zgNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.g.<locals>.<listcomp>K      <<<a)<<<rn   r   r   rV  rF  s   r   gzSNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.gI  s,    <<<<<588<<<<<<rn   rs   )rY  rV  r   rF  s    @r   rH  zHNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.fG  sP    L= = = = = = ACCC\844444rn   rJ  rK  s   ` @r   $test_named_expression_nonlocal_scopez=NamedExpressionScopeTest.test_named_expression_nonlocal_scopeE  s<    88	5 	5 	5 	5 	5 	5 	
rn   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 rm   rm   rU  s     r   r   z{NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.g.<locals>.<listcomp>U  rW  rn   r   r   rX  s   @r   rY  zgNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.gT  s-    <<<<<588<<<<<<rn   rs   )rV  rY  r   rF  s     r   rH  z\NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.fR  sH    L= = = = =ACCC\400000rn   rZ  rK  s   ` @r   8test_named_expression_nonlocal_scope_no_nonlocal_keywordzQNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keywordP  s<    88	1 	1 	1 	1 	1 	1 	
rn   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   rm   )r   r6   rv   r   s     r   r   zQNamedExpressionScopeTest.test_named_expression_scope_in_genexp.<locals>.<genexpr>]  s+      ((q1u*!((((((rn   r   )assertNotInlocals	enumeratert   )r   r   genexpidxelemrv   r   s        @@r   %test_named_expression_scope_in_genexpz>NamedExpressionScopeTest.test_named_expression_scope_in_genexpZ  s    LL(((((a(((fhh'''"6** 	/ 	/ICT1S6A:....	/ 	/rn   c                       G  fdd          } |                                                                   t          d           d S )Nc                       e Zd Z fdZdS )ONamedExpressionScopeTest.test_named_expression_scope_mangled_names.<locals>.Fooc                     da d dD                                  t           d           d dD                                  t           d           d S )Nr   c                     g | ]}d xa S r  _Foo__x1r   rv   s     r   r   zeNamedExpressionScopeTest.test_named_expression_scope_mangled_names.<locals>.Foo.f.<locals>.<listcomp>h  s    ,,,1Q,,,rn   r   r   c                     g | ]}d xa S rr  ro  rq  s     r   r   zeNamedExpressionScopeTest.test_named_expression_scope_mangled_names.<locals>.Foo.f.<locals>.<listcomp>j  s    (((q(((rn   )r}   r   )rp  rt   )self_r   s    r   rH  zQNamedExpressionScopeTest.test_named_expression_scope_mangled_names.<locals>.Foo.fe  sb    ,,,,,,  q)))((C((((  q)))))rn   N)rj   rk   rl   rH  )r   s   r   Foorl  d  s.        * * * * * * *rn   ru  r   )rH  rt   rp  )r   ru  s   ` r   )test_named_expression_scope_mangled_nameszBNamedExpressionScopeTest.test_named_expression_scope_mangled_namesc  sf    	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 				1%%%%%rn   N)rj   rk   rl   r   r   r   r   r   r  r  r  r  r  r  r  r"  r%  r(  r-  r0  r3  r6  r9  r@  rL  rP  r[  r`  ri  rv  rm   rn   r   r   r   i  s         $ $ $% % %    " " "( ( (
  
 
 
$ $ $                        
& 
& 
&: : :8  + + +	 	 	  / / /& & & & &rn   r   __main__)unittestrD  TestCaser   rp   r   rj   mainrm   rn   r   <module>r{     s    
d d d d d!2 d d dNy@ y@ y@ y@ y@H$5 y@ y@ y@zE& E& E& E& E&x0 E& E& E&N zHMOOOOO rn   