
    0hh}v                         S SK r Sq " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r\S:X  a  \ R                  " 5         gg)	    Nc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r Sr!g )!NamedExpressionInvalidTest   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzx := 0invalid syntaxassertRaisesRegexSyntaxErrorexecselfcodes     D/opt/python-3.13.8/usr/lib/python3.13/test/test_named_expressions.py test_named_expression_invalid_01;NamedExpressionInvalidTest.test_named_expression_invalid_01   s1    ##K1ABr2 CBB   0
>c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz
x = y := 0r   r   r   s     r    test_named_expression_invalid_02;NamedExpressionInvalidTest.test_named_expression_invalid_02   s1    ##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz	y := f(x)r   r   r   s     r    test_named_expression_invalid_03;NamedExpressionInvalidTest.test_named_expression_invalid_03   s1    ##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzy0 = y1 := f(x)r   r   r   s     r    test_named_expression_invalid_04;NamedExpressionInvalidTest.test_named_expression_invalid_04   s1    $##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz((a, b) := (1, 2))z,cannot use assignment expressions with tupler   r   s     r    test_named_expression_invalid_06;NamedExpressionInvalidTest.test_named_expression_invalid_06   s1    '##K1_`r2 a``r   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzdef spam(a = b := 42): passr   r   r   s     r    test_named_expression_invalid_07;NamedExpressionInvalidTest.test_named_expression_invalid_07%   s1    0##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzdef spam(a: b := 42 = 5): passr   r   r   s     r    test_named_expression_invalid_08;NamedExpressionInvalidTest.test_named_expression_invalid_08+   s1    3##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzspam(a=b := 'c')r   r   r   s     r    test_named_expression_invalid_09;NamedExpressionInvalidTest.test_named_expression_invalid_091   s1    %##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzspam(x = y := f(x))r   r   r   s     r    test_named_expression_invalid_10;NamedExpressionInvalidTest.test_named_expression_invalid_107   s1    (##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nzspam(a=1, b := 2),positional argument follows keyword argumentr   r   s     r    test_named_expression_invalid_11;NamedExpressionInvalidTest.test_named_expression_invalid_11=   s6    &##K:<r2< < <r   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = fNzspam(a=1, (b := 2))r,   r   r   s     r    test_named_expression_invalid_12;NamedExpressionInvalidTest.test_named_expression_invalid_12D   6    (##K:<r2< < <r   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = fr0   r   r   s     r    test_named_expression_invalid_13;NamedExpressionInvalidTest.test_named_expression_invalid_13K   r3   r   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz(x := lambda: y := 1)r   r   r   s     r    test_named_expression_invalid_14;NamedExpressionInvalidTest.test_named_expression_invalid_14R   s1    *##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz(lambda: x := 1)z-cannot use assignment expressions with lambdar   r   s     r    test_named_expression_invalid_15;NamedExpressionInvalidTest.test_named_expression_invalid_15X   s6    %##K;=r2= = =r   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz[i + 1 for i in i := [1,2]]r   r   r   s     r    test_named_expression_invalid_16;NamedExpressionInvalidTest.test_named_expression_invalid_16_   s1    ,##K1ABr2 CBBr   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)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_17;NamedExpressionInvalidTest.test_named_expression_invalid_17e   s:    >##KMOr2O O Or   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)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_bodyFNamedExpressionInvalidTest.test_named_expression_invalid_in_class_bodyl   s>     ##KY[r2[ [ [r   c           	         / SQnU H  u  p#S H  u  pEUR                  XE5      nU R                  X$US9   U R                  [        5         [	        U0 5        S S S 5        U R                  [        5         [	        U0 0 5        S S S 5        [	        SU 30 5        S S S 5        M     M     g ! , (       d  f       NY= f! , (       d  f       N?= f! , (       d  f       M  = f)N))zComplex expression: cz2{0}(c := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: dz2{0}(d := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: ez2{0}(e := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: fz2{0}(f := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: gz2{0}(g := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: hz2{0}(h := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: iz2{0}(i := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})zComplex expression: jz2{0}(j := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})())[]){}caselparrparlambda: )formatsubTestassertRaises	NameErrorr   )r   cases	test_caser   rP   rQ   s         r   8test_named_expression_valid_rebinding_iteration_variableSNamedExpressionInvalidTest.test_named_expression_valid_rebinding_iteration_variableu   s    
&  %OIB
{{4.\\y$\G
 **95T2 6**95T2r* 68D6*B/ HG C  % 6555 HGs;   C
B*	C4B;	C*
B84C;
C	C
Cc           	      .   SS/nU H  u  p#nSU S3nS H  u  pgUR                  Xg5      nU R                  X&US9   U R                  [        U5         [	        U0 5        S S S 5        U R                  [        U5         [	        U0 0 5        S S S 5        U R                  [        U5         [	        SU 30 5        S S S 5        S S S 5        M     M     g ! , (       d  f       Ny= f! , (       d  f       N^= f! , (       d  f       NA= f! , (       d  f       M  = f)N)Complex expression: aaz2{0}(a := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1})Complex expression: bbz2{0}(b := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}Fassignment expression cannot rebind comprehension iteration variable ''rG   rN   rR   )rS   rT   r	   r
   r   )r   rW   rX   targetr   msgrP   rQ   s           r   :test_named_expression_invalid_rebinding_iteration_variableUNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_iteration_variable   s    
FF	
 (-#ItZ[aZbbcdCB
{{4.\\y$\G
 //SAT2 B//SAT2r* B//SAxv.3 B HG C (- BAAAAA HGsS   DC	D=C#	D)C4	9D
C D#
C1-D4
D>D
Dc                    / SQnU H  u  p#nSU S3nU R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)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 targetrj   z.[(j := 0) for i in range(5) for j in range(5)])Unpacking reuserh   z[i := 0 for i, j in [(0, 1)]])Reuse in loop conditionrh   z#[i+1 for i in range(5) if (i := 0)])Unreachable reuserh   z#[False or (i:=0) for i in range(5)])Unreachable nested reuserh   z?[(i, j) for i in range(5) for j in range(5) if True or (i:=10)]r`   ra   rO   rR   rT   r	   r
   r   r   rW   rO   rb   r   rc   s         r   Mtest_named_expression_invalid_rebinding_list_comprehension_iteration_variablehNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_list_comprehension_iteration_variable   s    	
 #(D$Z[aZbbcdC4(++K=rN >++K=r2& >++K=8D6*B/ > )( #( >===== )(R   C(B5C($C2C(C C(5
C?C(
CC(
C%!C((
C7	c                    SS/nU H  u  p#nSU S3nU R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N)Inner reuserj   z3[i for i in range(5) if (j := 0) for j in range(5)])Inner unpacking reuserj   z6[i for i in range(5) if (j := 0) for j, k in [(0, 1)]]Ecomprehension inner loop cannot rebind assignment expression target 'ra   rp   rR   rq   rr   s         r   Etest_named_expression_invalid_rebinding_list_comprehension_inner_loop`NamedExpressionInvalidTest.test_named_expression_invalid_rebinding_list_comprehension_inner_loop       Wd
 #(D$YZ`YaabcC4(++K=rN >++K=r2& >++K=8D6*B/ > )( #( >===== )(ru   c                    / SQnSnU H  u  p4U R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)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 expressionrp   rR   rq   r   rW   rc   rO   r   s        r   Dtest_named_expression_invalid_list_comprehension_iterable_expression_NamedExpressionInvalidTest.test_named_expression_invalid_list_comprehension_iterable_expression       

 \JD4(++K=rN >++K=r2& >++K=8D6*B/ > )(  ====== )(R   C#B0C#C-C#CC#0
B>:C#
CC#
C C##
C2	c                    / SQnU H  u  p#nSU S3nU R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N)	)rg   rh   z{i := 0 for i in range(5)})ri   rj   z0{{(j := 0) for i in range(5)} for j in range(5)})rk   rj   z.{(j := 0) for i in range(5) for j in range(5)})rl   rh   z{i := 0 for i, j in {(0, 1)}})rm   rh   z#{i+1 for i in range(5) if (i := 0)})rn   rh   z#{False or (i:=0) for i in range(5)})ro   rh   z?{(i, j) for i in range(5) for j in range(5) if True or (i:=10)})r\   r]   z.{(a := 1) for a, (*b, c[d+e::f(g)], h.i) in j})r^   r_   z.{(b := 1) for a, (*b, c[d+e::f(g)], h.i) in j}r`   ra   rp   rR   rq   rr   s         r   Ltest_named_expression_invalid_rebinding_set_comprehension_iteration_variablegNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_set_comprehension_iteration_variable   s    
 #(D$Z[aZbbcdC4(++K=rN >++K=r2& >++K=8D6*B/ > )( #( >===== )(ru   c                    SS/nU H  u  p#nSU S3nU R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N)rw   rj   z3{i for i in range(5) if (j := 0) for j in range(5)})rx   rj   z6{i for i in range(5) if (j := 0) for j, k in {(0, 1)}}ry   ra   rp   rR   rq   rr   s         r   Dtest_named_expression_invalid_rebinding_set_comprehension_inner_loop_NamedExpressionInvalidTest.test_named_expression_invalid_rebinding_set_comprehension_inner_loop  r|   ru   c                    / SQnSnU H  u  p4U R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N)	)r~   z{i for i in (i := range(5))})r   z"{i for i in (2, 3, i := range(5))})r   z"{i for i in {2, 3, i := range(5)}})r   z{i for i in (j := range(5))})r   z'{i for i in (lambda:(j := range(5)))()})r   z.{i for i in range(5) for j in (i := range(5))})r   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   rp   rR   rq   r   s        r   Ctest_named_expression_invalid_set_comprehension_iterable_expression^NamedExpressionInvalidTest.test_named_expression_invalid_set_comprehension_iterable_expression  r   r   c                    / SQnU H  u  p#nSU S3nU R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N))z	Key reuserh   z{(i := 0): 1 for i in range(5)})zValue reuserh   z{1: (i := 0) for i in range(5)})z
Both reuserh   z&{(i := 0): (i := 0) for i in range(5)})ri   rj   z3{{(j := 0): 1 for i in range(5)} for j in range(5)})rk   rj   z1{(j := 0): 1 for i in range(5) for j in range(5)})zUnpacking key reuserh   z"{(i := 0): 1 for i, j in {(0, 1)}})zUnpacking value reuserh   z"{1: (i := 0) for i, j in {(0, 1)}})rm   rh   z&{i+1: 1 for i in range(5) if (i := 0)})rn   rh   z({(False or (i:=0)): 1 for i in range(5)})ro   rh   z={i: j for i in range(5) for j in range(5) if True or (i:=10)})r\   r]   z1{(a := 1): 1 for a, (*b, c[d+e::f(g)], h.i) in j})r^   r_   z1{(b := 1): 1 for a, (*b, c[d+e::f(g)], h.i) in j}r`   ra   rp   rR   rq   rr   s         r   Mtest_named_expression_invalid_rebinding_dict_comprehension_iteration_variablehNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_dict_comprehension_iteration_variable-  s    
$ #(D$Z[aZbbcdC4(++K=rN >++K=r2& >++K=8D6*B/ > )( #( >===== )(ru   c                    SS/nU H  u  p#nSU S3nU R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N)rw   rj   z6{i: 1 for i in range(5) if (j := 0) for j in range(5)})rx   rj   z9{i: 1 for i in range(5) if (j := 0) for j, k in {(0, 1)}}ry   ra   rp   rR   rq   rr   s         r   Etest_named_expression_invalid_rebinding_dict_comprehension_inner_loop`NamedExpressionInvalidTest.test_named_expression_invalid_rebinding_dict_comprehension_inner_loopJ  s    Zg
 #(D$YZ`YaabcC4(++K=rN >++K=r2& >++K=8D6*B/ > )( #( >===== )(ru   c                    / SQnSnU H  u  p4U R                  US9   U R                  [        U5         [        U0 5        S S S 5        U R                  [        U5         [        U0 0 5        S S S 5        U R                  [        U5         [        SU 30 5        S S S 5        S S S 5        M     g ! , (       d  f       Nu= f! , (       d  f       NZ= f! , (       d  f       N== f! , (       d  f       M  = f)N)	)r~   z{i: 1 for i in (i := range(5))})r   z%{i: 1 for i in (2, 3, i := range(5))})r   z%{i: 1 for i in [2, 3, i := range(5)]})r   z{i: 1 for i in (j := range(5))})r   z*{i: 1 for i in (lambda:(j := range(5)))()})r   z1{i: 1 for i in range(5) for j in (i := range(5))})r   z/{i: 1 for i in {j: 2 for j in (k := range(5))}})r   z7{i: 1 for i in {j: 2 for j in range(5) if (j := True)}})r   z/{i: 1 for i in {(j := True) for j in range(5)}}r   rp   rR   rq   r   s        r   Dtest_named_expression_invalid_dict_comprehension_iterable_expression_NamedExpressionInvalidTest.test_named_expression_invalid_dict_comprehension_iterable_expressionY  r   r   c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)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_variablesPNamedExpressionInvalidTest.test_named_expression_invalid_mangled_class_variableso  s>    
 ##KXZr2Z Z Zr    N)"__name__
__module____qualname____firstlineno__r   r   r   r   r   r    r#   r&   r)   r-   r1   r5   r8   r;   r>   rA   rD   rY   rd   rs   rz   r   r   r   r   r   r   r   r   __static_attributes__r       r   r   r      s    #0J440*00,0400,0:00,r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)NamedExpressionAssignmentTestiz  c                 0    S=n  U R                  US5        g )N
   assertEqualr   r]   s     r   #test_named_expression_assignment_01ANamedExpressionAssignmentTest.test_named_expression_assignment_01|  s    Br   c                 4    SnU=n  U R                  US5        g N   r   r   s     r   #test_named_expression_assignment_02ANamedExpressionAssignmentTest.test_named_expression_assignment_02  s    Br   c                 0    S=n  U R                  US5        g )N   r   )r   totals     r   #test_named_expression_assignment_03ANamedExpressionAssignmentTest.test_named_expression_assignment_03  s    "r   c                 0    S=n  U R                  US5        g )N      r   r   )r   infos     r   #test_named_expression_assignment_04ANamedExpressionAssignmentTest.test_named_expression_assignment_04  s    	y)r   c                 4    S=nS4  U R                  US5        g Nr   r   r   )r   xs     r   #test_named_expression_assignment_05ANamedExpressionAssignmentTest.test_named_expression_assignment_05  s    Ar   c                     S=n=n=n  U R                  US5        U R                  US5        U R                  US5        g )Nr   r   )r   r   yzs       r   #test_named_expression_assignment_06ANamedExpressionAssignmentTest.test_named_expression_assignment_06  sB    VQ}q	AAAr   c                 0    S=n  U R                  US5        g )Nr   r   r   )r   locs     r   #test_named_expression_assignment_07ANamedExpressionAssignmentTest.test_named_expression_assignment_07  s    f%r   c                 ^    S=n(       a  U R                  US5        g U R                  S5        g )Neggs0variable was not assigned using named expressionr   failr   spams     r   #test_named_expression_assignment_08ANamedExpressionAssignmentTest.test_named_expression_assignment_08  s(    >4>T6*iiJKr   c                 \    S=n(       a  U R                  U5        g U R                  S5        g )NTr   )
assertTruer   r   s     r   #test_named_expression_assignment_09ANamedExpressionAssignmentTest.test_named_expression_assignment_09  s$    !\T\OOD!iiJKr   c                 \    S=nS:X  a  U R                  US5        g U R                  S5        g )Nr   r   r   )r   matchs     r   #test_named_expression_assignment_10ANamedExpressionAssignmentTest.test_named_expression_assignment_10  s+    KEBUB'iiJKr   c                     S n/ SQnU Vs/ s H  o1" U5      =nS:  d  M  X4X4-  4PM     nnU R                  U/ SQ5        g s  snf )Nc                     U $ Nr   r]   s    r   r   ONamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.spam      Hr   r   r   )r   r         ?)r   r   r   )r   r   r   r   r   r   
input_datar   r   ress         r   #test_named_expression_assignment_11ANamedExpressionAssignmentTest.test_named_expression_assignment_11  sN    	
$.EJqQ<112D{ac{JEEF Fs
   A
Ac                     S n[        SS5       Vs/ s H  o!" U5      =o2U-  /PM     nnU R                  USS/SS/SS/SS//5        g s  snf )Nc                     U $ r   r   r   s    r   r   ONamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.spam  r   r   r   r   r   r   r      ranger   r   r   r   r   r   s        r   #test_named_expression_assignment_12ANamedExpressionAssignmentTest.test_named_expression_assignment_12  s^    	,1!QK8KqT!Wc"K83x!SAs8aXFG 9s   A
c                 n    [        SS/=n5      nU R                  US5        U R                  USS/5        g r   lenr   )r   lineslengths      r   #test_named_expression_assignment_13ANamedExpressionAssignmentTest.test_named_expression_assignment_13  s8    q!f_U%#1&r   c                     SnSnSnXXS-
  -  -  =n:  a  US-
  U-  U-   U-  nXXS-
  -  -  =n:  a  M  U R                  US5        g)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   Nr   )r   r]   nr   ds        r   #test_named_expression_assignment_14ANamedExpressionAssignmentTest.test_named_expression_assignment_14  sg     Q1X%1&A#q1"A Q1X%1& 	Ar   c                 r    S=n(       a  U R                  S5        S=n(       a  M  U R                  US5        g )NFzWhile body executed)r   r   r   s     r   #test_named_expression_assignment_15ANamedExpressionAssignmentTest.test_named_expression_assignment_15  s5    jajII+, jaj 	E"r   c           
          Su  p[        S5       Vs0 s H  o1=oB=oU-   =n-   U-
  _M     nnU R                  USSSSSSS	.5        g s  snf )
Nr      r   r   r            )r   r   r   r   r  r  r   )r   r]   r_   __cfibs         r   #test_named_expression_assignment_16ANamedExpressionAssignmentTest.test_named_expression_assignment_16  s]    ?DQxHx&!a%ZQ0144xH!aA""EF Is   Ac                 d    S/nUS=n   nU R                  US5        U R                  X1S   5        g )Nr   r   r   )r   r]   r_   elements       r   #test_named_expression_assignment_17ANamedExpressionAssignmentTest.test_named_expression_assignment_17  s8    CqDA'AA$'r   c                      " S S5      nU" S/S//5      nUS=nS=n4   nU R                  US5        U R                  US5        U R                  XRR                  U   U   5        g )Nc                        \ rS rSrS rS rSrg)]NamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalListi  c                     Xl         g r   two_dimensional_list)r   r  s     r   __init__fNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__init__  s    ,@)r   c                 2    U R                   US      US      $ )Nr   r   r  )r   indexs     r   __getitem__iNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__getitem__  s     00q:58DDr   r  N)r   r   r   r   r  r!  r   r   r   r   TwoDimensionalListr    s    AEr   r#  r   r   r   )r   r  )r   r#  r]   r_   r  r  s         r   #test_named_expression_assignment_18ANamedExpressionAssignmentTest.test_named_expression_assignment_18  su    	E 	E aSz*qDAQ$!J-AA"8"8";A">?r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r   r   r   r   r   r   z  sc     
 #
*

&
L
L
L
GH' #G
(@r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)NamedExpressionScopeTesti  c                     SnU R                  [        S5         [        U0 0 5        S S S 5        g ! , (       d  f       g = f)Nz!def spam():
    (a := 5)
print(a)zname 'a' is not defined)r	   rV   r   r   s     r   test_named_expression_scope_017NamedExpressionScopeTest.test_named_expression_scope_01  s5     ##I/HIr2 JIIr   c                     Sn[        S5       Vs/ s H	  o!U-   =nPM     nnU R                  U/ SQ5        U R                  US5        g s  snf Nr   r   )r   r   r   r
  r   r   r   )r   r   vpartial_sumss       r   test_named_expression_scope_027NamedExpressionScopeTest.test_named_expression_scope_02  sO    49!H=Hq**H='78# >   A	c                 v   ^ [        U4S jS 5       5      nU R                  U5        U R                  TS5        g )Nc              3   0   >#    U  H  o=mS :H  v   M     g7f)r   Nr   ).0numlastNums     r   	<genexpr>JNamedExpressionScopeTest.test_named_expression_scope_03.<locals>.<genexpr>	  s     E9C>7a/9   r   r   )anyr   r   )r   containsOner6  s     @r   test_named_expression_scope_037NamedExpressionScopeTest.test_named_expression_scope_03  s/    E9EE$!$r   c                     S n[        SS5       Vs/ s H  o!" U5      =o2U-  /PM     nnU R                  WS5        g s  snf )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_04.<locals>.spam  r   r   r   r   r   r   r   s        r   test_named_expression_scope_047NamedExpressionScopeTest.test_named_expression_scope_04  sE    	,1!QK8KqT!Wc"K8A 9s   >c                     S n/ SQnU Vs/ s H  o1" U5      =nS:  d  M  X4X4-  4PM     nnU R                  U/ SQ5        U R                  WS5        g s  snf )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_05.<locals>.spam  r   r   r   r   r   r   r   r   s         r   test_named_expression_scope_057NamedExpressionScopeTest.test_named_expression_scope_05  s^    	
$.EJqQ<112D{ac{JEEFA Fs
   A
Ac           	          [        S5       VVs/ s H   n[        S5       Vs/ s H  o"=nPM     snPM"     nnnU R                  U/ SQ/ SQ/5        U R                  WS5        g s  snf s  snnf )Nr   r   r   r   r   r   )r   rj   rh   r   r   s        r   test_named_expression_scope_067NamedExpressionScopeTest.test_named_expression_scope_06  s^    6;Ah?h58,8a		8,h?y)45q! -?s   A)A$A)$A)c                 J    [        SS/=n5        U R                  USS/5        g r   r   )r   r   s     r   test_named_expression_scope_077NamedExpressionScopeTest.test_named_expression_scope_07$  s&    aVOEA'r   c           	          S nS n[        S5       Vs/ s H  o1" U" U=n5      =n5      PM     nnU R                  USS/5        U R                  WS5        U R                  WS5        g s  snf )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.spam*  r   r   c                     U S-  $ Nr   r   r_   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.eggs-      q5Lr   r   r   r   r   )r   r   r   hr_   r]   r   s          r   test_named_expression_scope_087NamedExpressionScopeTest.test_named_expression_scope_08)  sq    		 16a91t1fa%A&9q!f%AA	 :s   A*c           	          S nS n[        S5       Vs/ s H  o1" U" U=n5      =n5      PM     nnU R                  USS/5        U R                  WS5        g s  snf )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.spam7  r   r   c                     U S-  $ rS  r   rT  s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.eggs:  rV  r   r   r   r   )r   r   r   rW  r]   r   s         r   test_named_expression_scope_097NamedExpressionScopeTest.test_named_expression_scope_096  sa    		 16a91t1fa%A&9q!f%A :s   Ac           	         [        S5       VVs/ s H#  n[        S5       Vs/ s H  nS=nPM	     sn=nPM%     nnnU R                  USS/SS//5        U R                  WS5        U R                  WSS/5        g s  snf s  snnf )Nr   r   r   )r   rj   rh   r]   r_   r   s         r   test_named_expression_scope_107NamedExpressionScopeTest.test_named_expression_scope_10B  s    8=aA1U1X.X!VQVX..q.A1v1v./AQF#	 /As   B A;	B ;B c                     [        S5       Vs/ s H  o=nPM     nnU R                  U/ SQ5        U R                  WS5        g s  snf )Nr   )r   r   r   r   r   r   r   )r   rh   rj   r   s       r   test_named_expression_scope_117NamedExpressionScopeTest.test_named_expression_scope_11I  sC    $Qx(x!vqvx(o.A )s   Ac                     Sn[        S5       Vs/ s H	  o"U-   =nPM     nnU R                  U/ SQ5        U R                  US5        g s  snf r,  r   )r   r_   rh   r   s       r   test_named_expression_scope_177NamedExpressionScopeTest.test_named_expression_scope_17O  sM    #(8,8aEzqz8,./B -r1  c                 f    S nU" S=n5      nU R                  US5        U R                  US5        g )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_18.<locals>.spamW  r   r   r   r   r   r   r_   r   s       r   test_named_expression_scope_187NamedExpressionScopeTest.test_named_expression_scope_18V  s6    	 61la Ar   c                 f    S nU" S=n5      nU R                  US5        U R                  US5        g )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_19.<locals>.spam`  r   r   r   r   rm  s       r   test_named_expression_scope_197NamedExpressionScopeTest.test_named_expression_scope_19_  s6    	 FAna Ar   c                 b    S nU" S=nS9nU R                  US5        U R                  US5        g )Nc                     U $ r   r   r   s    r   r   ENamedExpressionScopeTest.test_named_expression_scope_20.<locals>.spami  r   r   r   r   r   rm  s       r   test_named_expression_scope_207NamedExpressionScopeTest.test_named_expression_scope_20h  s7    	 1faa Ar   c                 d    S nU" S=nSS9nU R                  US5        U R                  US5        g )Nc                 
    X-   $ r   r   r]   r_   s     r   r   ENamedExpressionScopeTest.test_named_expression_scope_21.<locals>.spamr  	    5Lr   r   r   rT  r   r   r   r   r  r   s       r   test_named_expression_scope_217NamedExpressionScopeTest.test_named_expression_scope_21q  s9    	 61Qa Ar   c                 d    S nU" S=nSS9nU R                  US5        U R                  US5        g )Nc                 
    X-   $ r   r   r|  s     r   r   ENamedExpressionScopeTest.test_named_expression_scope_22.<locals>.spam{  r~  r   r   r   rT  r   r   r  s       r   test_named_expression_scope_227NamedExpressionScopeTest.test_named_expression_scope_22z  s9    	 FAq!a Ar   c                 d    S nU" S=nSS9nU R                  US5        U R                  US5        g )Nc                 
    X-   $ r   r   r|  s     r   r   ENamedExpressionScopeTest.test_named_expression_scope_23.<locals>.spam  r~  r   r   r   )r_   r]   r   r   r  s       r   test_named_expression_scope_237NamedExpressionScopeTest.test_named_expression_scope_23  s9    	 1fa#a Ar   c                 H   ^ SmU4S jnU" 5         U R                  TS5        g )Nr   c                     > S=m   g r   r   r   s   r   r   ENamedExpressionScopeTest.test_named_expression_scope_24.<locals>.spam  s
    WQr   r   r   )r   r   r]   s     @r   test_named_expression_scope_247NamedExpressionScopeTest.test_named_expression_scope_24  s$    	 	Br   c                 N    0 nSn[        X!0 5        U R                  US   S5        g )Nz4a = 10
def spam():
    global a
    (a := 20)
spam()r]   r   )r   r   )r   nsr   s      r   test_named_expression_scope_257NamedExpressionScopeTest.test_named_expression_scope_25  s.    
 	TrC"%r   c                 \   SnSnSnSnSSU 34SSU S	34S
SU 34SSU S	34SSU 34SSU S	34SSU 34SSU S	34/nU HV  u  pgU R                  US9   0 n[        Xx5        U R                  US   S5        U R                  US   / SQ5        S S S 5        MX     g ! , (       d  f       Mj  = f)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 nonlocalrp   r   r   resultrI  )rT   r   r   )	r   	rebinding
filter_refbody_ref
nested_refrW   rO   r   r  s	            r   6test_named_expression_variable_reuse_in_comprehensionsONamedExpressionScopeTest.test_named_expression_variable_reuse_in_comprehensions  s    F	?
?]
 0<="<YKw OP 0=>"<ZL PQ.xj9: :8*GLM 0=>"<ZL PQ	
  JD4(T  C!,  Hy9	 )(  ((s   :B
B+	c                 x   ^ ^ [        5       mU U4S jn U" 5         T R                  [        T5        S qg ! S qf = f)Nc                  |   > [        S5       V Vs/ s H  n T=qPM	       n nTR                  [        T5        g s  snn f Nr   )r   
GLOBAL_VARr   )_r  r   sentinels     r   fFNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f  s6    -21X6X8#Z#X6Z2 7s   8objectr   r  r   r  r  s   ` @r   "test_named_expression_global_scope;NamedExpressionScopeTest.test_named_expression_global_scope  s4    8	3	CZ2JJs   5 9c                 d   ^ ^ [        5       mU U4S jnU" 5         T R                  [        S 5        g )Nc                  r   > S n [        S5       Vs/ s H  nT=n PM	       nTR                  U T5        g s  snf r  r   )r  r  r   r  s     r   r  XNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f  s;    J-21X6X8#Z#X6Z2 7s   4r  r  s   ` @r   4test_named_expression_global_scope_no_global_keywordMNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword  s&    8	3 	
T*r   c                 8   ^ ^ [        5       mU U4S jnU" 5         g )Nc                  L   >^ S mUU4S jn U " 5         TR                  TT5        g )Nc                  J   > [        S5       V s/ s H  n T=mPM	       n g s  sn f r  r   r  nonlocal_varr  s    r   gSNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.g  s$    388<8a))8<<    r   )r  r  r   r  s    @r   r  HNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f  s$    L= C\84r   r  r  s   ` @r   $test_named_expression_nonlocal_scope=NamedExpressionScopeTest.test_named_expression_nonlocal_scope  s    8	5 	
r   c                 8   ^ ^ [        5       mU U4S jnU" 5         g )Nc                  H   > S n U4S jnU" 5         TR                  U S 5        g )Nc                  J   > [        S5       V s/ s H  n T=nPM	       n g s  sn f r  r  r  s     r   r  gNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.g  s$    388<8a))8<<r  r   )r  r  r   r  s     r   r  \NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f  s"    L=C\40r   r  r  s   ` @r   8test_named_expression_nonlocal_scope_no_nonlocal_keywordQNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword  s    8	1 	
r   c                    ^^ Sm/ SQnUU4S jU 5       nU R                  S[        5       5        [        U5       H  u  p4U R                  XAU   T-   5        M     g )Nr   )r   r   r   r   c              3   0   >#    U  H  oT-   =mv   M     g 7fr   r   )r4  rh   r]   r  s     r   r7  QNamedExpressionScopeTest.test_named_expression_scope_in_genexp.<locals>.<genexpr>  s     (a1u*!*ar9  r  )assertNotInlocals	enumerater   )r   r_   genexpidxelemr]   r  s        @@r   %test_named_expression_scope_in_genexp>NamedExpressionScopeTest.test_named_expression_scope_in_genexp  sP    (a(fh'"6*ICTS6A:. +r   c                 v   ^   " U 4S jS5      nU" 5       R                  5         T R                  [        S5        g )Nc                   "   > \ rS rSrU 4S jrSrg)ONamedExpressionScopeTest.test_named_expression_scope_mangled_names.<locals>.Fooi  c                    > Sq S VVs/ s H  nS=q PM	       nnTR                  [         S5        S VVs/ s H  nS=q PM	       nnTR                  [         S5        g s  snnf s  snnf )Nr   )r   r   )r   r   )_Foo__x1r   )self_r]   r  r   s      r   r  QNamedExpressionScopeTest.test_named_expression_scope_mangled_names.<locals>.Foo.f  s`    (+,1Q,  q)$'(CqC(  q) -(s
   AA#r   N)r   r   r   r   r  r   )r   s   r   Foor    s    * *r   r  r   )r  r   r  )r   r  s   ` r   )test_named_expression_scope_mangled_namesBNamedExpressionScopeTest.test_named_expression_scope_mangled_names  s*    	* 	* 		1%r   r   N) r   r   r   r   r)  r/  r<  rA  rF  rJ  rM  rX  r_  rb  re  rh  rn  rs  rx  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r'  r'    s    $%"(

$  
&:8+	/&r   r'  __main__)unittestr  TestCaser   r   r'  r   mainr   r   r   <module>r     sf    
r!2!2 rjy@H$5$5 y@zE&x00 E&N zMMO r   