Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_named_expressions.cpython-311.pyc
�

�Ke{R���ddlZdaGd�dej��ZGd�dej��ZGd�dej��Zedkrej��dSdS)	�Nc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�NamedExpressionInvalidTestc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzx := 0�invalid syntax��assertRaisesRegex�SyntaxError�exec��self�codes  �E/usr/local/apps/python3/lib/python3.11/test/test_named_expressions.py� test_named_expression_invalid_01z;NamedExpressionInvalidTest.test_named_expression_invalid_01s�����
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��=�A�Ac��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz
x = y := 0rrrs  r� test_named_expression_invalid_02z;NamedExpressionInvalidTest.test_named_expression_invalid_02
s�����
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz	y := f(x)rrrs  r� test_named_expression_invalid_03z;NamedExpressionInvalidTest.test_named_expression_invalid_03s�����
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzy0 = y1 := f(x)rrrs  r� test_named_expression_invalid_04z;NamedExpressionInvalidTest.test_named_expression_invalid_04s���$��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz((a, b) := (1, 2))z,cannot use assignment expressions with tuplerrs  r� test_named_expression_invalid_06z;NamedExpressionInvalidTest.test_named_expression_invalid_06s���'��
�
#�
#�K�1_�
`�
`�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzdef spam(a = b := 42): passrrrs  r� test_named_expression_invalid_07z;NamedExpressionInvalidTest.test_named_expression_invalid_07%s���0��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzdef spam(a: b := 42 = 5): passrrrs  r� test_named_expression_invalid_08z;NamedExpressionInvalidTest.test_named_expression_invalid_08+s���3��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzspam(a=b := 'c')rrrs  r� test_named_expression_invalid_09z;NamedExpressionInvalidTest.test_named_expression_invalid_091s���%��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzspam(x = y := f(x))rrrs  r� test_named_expression_invalid_10z;NamedExpressionInvalidTest.test_named_expression_invalid_107s���(��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nzspam(a=1, b := 2)�,positional argument follows keyword argumentrrs  r� test_named_expression_invalid_11z;NamedExpressionInvalidTest.test_named_expression_invalid_11=s���&��
�
#�
#�K�:�<�<�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS�Nzspam(a=1, (b := 2))r"rrs  r� test_named_expression_invalid_12z;NamedExpressionInvalidTest.test_named_expression_invalid_12D���(��
�
#�
#�K�:�<�<�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdSr%rrs  r� test_named_expression_invalid_13z;NamedExpressionInvalidTest.test_named_expression_invalid_13Kr'rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz(x := lambda: y := 1)rrrs  r� test_named_expression_invalid_14z;NamedExpressionInvalidTest.test_named_expression_invalid_14Rs���*��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz(lambda: x := 1)z-cannot use assignment expressions with lambdarrs  r� test_named_expression_invalid_15z;NamedExpressionInvalidTest.test_named_expression_invalid_15Xs���%��
�
#�
#�K�;�=�=�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz + 1 for i in i := [1,2]]rrrs  r� test_named_expression_invalid_16z;NamedExpressionInvalidTest.test_named_expression_invalid_16_s���,��
�
#�
#�K�1A�
B�
B�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz-[i := 0, j := 1 for i, j in [(1, 2), (3, 4)]]z;did you forget parentheses around the comprehension target?rrs  r� test_named_expression_invalid_17z;NamedExpressionInvalidTest.test_named_expression_invalid_17es���>��
�
#�
#�K�M�O�O�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)NzNclass Foo():
            [(42, 1 + ((( j := i )))) for i in range(5)]
        zKassignment expression within a comprehension cannot be used in a class bodyrrs  r�+test_named_expression_invalid_in_class_bodyzFNamedExpressionInvalidTest.test_named_expression_invalid_in_class_bodyls������
#�
#�K�Y�[�[�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc��gd�}|D]~\}}}d|�d�}|�|���5|�t|��5t|ii��ddd��n#1swxYwYddd��n#1swxYwY�dS)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 targetr8z.[(j := 0) for i in range(5) for j in range(5)])�Unpacking reuser6z[i := 0 for i, j in [(0, 1)]])�Reuse in loop conditionr6z#[i+1 for i in range(5) if (i := 0)])�Unreachable reuser6z#[False or (i:=0) for i in range(5)])�Unreachable nested reuser6z?[(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��subTestrr	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�d�C����4��(�(�
'�
'��+�+�K��=�=�'�'���r�2�&�&�&�'�'�'�'�'�'�'�'�'�'�'����'�'�'�'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��	'�	'�5�A:�A#�A:�#A'�'A:�*A'�+A:�:A>	�A>	c�&�ddg}|D�]\}}}d|�d�}|�|���5|�t|��5t|i��ddd��n#1swxYwY|�t|��5t|ii��ddd��n#1swxYwY|�t|��5td|��i��ddd��n#1swxYwYddd��n#1swxYwY��
dS)N)�Inner reuser8z3[i for i in range(5) if (j := 0) for j in range(5)])�Inner unpacking reuser8z6[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: rBrDs      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�&�$�c�Z`�c�c�c�C����4��(�(�
0�
0��+�+�K��=�=�#�#���r�N�N�N�#�#�#�#�#�#�#�#�#�#�#����#�#�#�#��+�+�K��=�=�'�'���r�2�&�&�&�'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��+�+�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�1D�4C1�5D�D	�D	c��gd�}d}|D�]\}}|�|���5|�t|��5t|i��ddd��n#1swxYwY|�t|��5t|ii��ddd��n#1swxYwY|�t|��5td|��i��ddd��n#1swxYwYddd��n#1swxYwY��dS)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@rOrB�rrErGrAr
s     r�Dtest_named_expression_invalid_list_comprehension_iterable_expressionz_NamedExpressionInvalidTest.test_named_expression_invalid_list_comprehension_iterable_expression����

�

�

��\���	0�	0�J�D�$����4��(�(�
0�
0��+�+�K��=�=�#�#���r�N�N�N�#�#�#�#�#�#�#�#�#�#�#����#�#�#�#��+�+�K��=�=�'�'���r�2�&�&�&�'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��+�+�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,�0C?�?D	�D	c��gd�}|D]~\}}}d|�d�}|�|���5|�t|��5t|ii��ddd��n#1swxYwYddd��n#1swxYwY�dS)N))r5r6z{i := 0 for i in range(5)})r7r8z0{{(j := 0) for i in range(5)} for j in range(5)})r9r8z.{(j := 0) for i in range(5) for j in range(5)})r:r6z{i := 0 for i, j in {(0, 1)}})r;r6z#{i+1 for i in range(5) if (i := 0)})r<r6z#{False or (i:=0) for i in range(5)})r=r6z?{(i, j) for i in range(5) for j in range(5) if True or (i:=10)}r>r?r@rBrDs      r�Ltest_named_expression_invalid_rebinding_set_comprehension_iteration_variablezgNamedExpressionInvalidTest.test_named_expression_invalid_rebinding_set_comprehension_iteration_variable�rIrJc�&�ddg}|D�]\}}}d|�d�}|�|���5|�t|��5t|i��ddd��n#1swxYwY|�t|��5t|ii��ddd��n#1swxYwY|�t|��5td|��i��ddd��n#1swxYwYddd��n#1swxYwY��
dS)N)rLr8z3{i for i in range(5) if (j := 0) for j in range(5)})rMr8z6{i for i in range(5) if (j := 0) for j, k in {(0, 1)}}rNr?r@rOrBrDs      r�Dtest_named_expression_invalid_rebinding_set_comprehension_inner_loopz_NamedExpressionInvalidTest.test_named_expression_invalid_rebinding_set_comprehension_inner_loop�rQrRc��gd�}d}|D�]\}}|�|���5|�t|��5t|i��ddd��n#1swxYwY|�t|��5t|ii��ddd��n#1swxYwY|�t|��5td|��i��ddd��n#1swxYwYddd��n#1swxYwY��dS)N)	)rTz{i for i in (i := range(5))})rUz"{i for i in (2, 3, i := range(5))})rVz"{i for i in {2, 3, i := range(5)}})rWz{i for i in (j := range(5))})rXz'{i for i in (lambda:(j := range(5)))()})rYz.{i for i in range(5) for j in (i := range(5))})rZz){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@rOrBr^s     r�Ctest_named_expression_invalid_set_comprehension_iterable_expressionz^NamedExpressionInvalidTest.test_named_expression_invalid_set_comprehension_iterable_expression�r`raN)�__name__�
__module__�__qualname__rrrrrrrrr r#r&r)r+r-r/r1r3rHrPr_rcrerg��rrrsm���������������������������������������������������������'�'�'�"
0�
0�
0�0�0�0�,'�'�'�"
0�
0�
0�0�0�0�0�0rlrc�z�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�ZdS)�NamedExpressionAssignmentTestc�:�dx}|�|d��dS)N�
��assertEqual�r�as  r�#test_named_expression_assignment_01zANamedExpressionAssignmentTest.test_named_expression_assignment_01�s'����������B�����rlc�>�d}|x}|�|d��dS�N�rqrss  r�#test_named_expression_assignment_02zANamedExpressionAssignmentTest.test_named_expression_assignment_02�s,������������B�����rlc�:�dx}|�|d��dS)N�rq)r�totals  r�#test_named_expression_assignment_03zANamedExpressionAssignmentTest.test_named_expression_assignment_03�s'�����������"�"�"�"�"rlc�:�dx}|�|d��dS)N���r{rq)r�infos  r�#test_named_expression_assignment_04zANamedExpressionAssignmentTest.test_named_expression_assignment_04�s(���	�������y�)�)�)�)�)rlc�>�dx}df|�|d��dS�Nr�r�rq)r�xs  r�#test_named_expression_assignment_05zANamedExpressionAssignmentTest.test_named_expression_assignment_05�s+������������A�����rlc��dx}x}x}|�|d��|�|d��|�|d��dS)Nrrq)rr��y�zs    r�#test_named_expression_assignment_06zANamedExpressionAssignmentTest.test_named_expression_assignment_06�s\���V�Q�}�q�	�������A��������A��������A�����rlc�:�dx}|�|d��dS)N�r�r�rq)r�locs  r�#test_named_expression_assignment_07zANamedExpressionAssignmentTest.test_named_expression_assignment_07s'����������f�%�%�%�%�%rlc�h�dx}r|�|d��dS|�d��dS)N�eggs�0variable was not assigned using named expression)rr�fail�r�spams  r�#test_named_expression_assignment_08zANamedExpressionAssignmentTest.test_named_expression_assignment_08
sD���>�4�	L����T�6�*�*�*�*�*��i�i�J�K�K�K�K�Krlc�f�dx}r|�|��dS|�d��dS)NTr�)�
assertTruer�r�s  r�#test_named_expression_assignment_09zANamedExpressionAssignmentTest.test_named_expression_assignment_09s@��!�\�T�	L��O�O�D�!�!�!�!�!��i�i�J�K�K�K�K�Krlc�D�dx}dkrdS|�d��dS)Nrpr�)r�)r�matchs  r�#test_named_expression_assignment_10zANamedExpressionAssignmentTest.test_named_expression_assignment_10s/���K�E�B����D��i�i�J�K�K�K�K�Krlc�f���d��gd�}��fd�|D��}|�|gd���dS)Nc��|S�Nrk�rts rr�zONamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.spam����Hrlrc�B��g|]}�|��x�dk�|�|�zf��S�rrk��.0r�r�r�s  ��r�
<listcomp>zUNamedExpressionAssignmentTest.test_named_expression_assignment_11.<locals>.<listcomp>�9���E�E�E�q���Q���<�1�1�2D�2D��1�a��c�{�2D�2D�2Drl�)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_11s[����	�	�	��Y�Y�
�E�E�E�E�E�J�E�E�E������E�E�E�F�F�F�F�Frlc����d����fd�tdd��D��}|�|ddgddgddgddgg��dS)	Nc��|Sr�rkr�s rr�zONamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.spam"r�rlc�4��g|]}�|��x�|�zg��Srkrkr�s  ��rr�zUNamedExpressionAssignmentTest.test_named_expression_assignment_12.<locals>.<listcomp>$�.���8�8�8�q�T�T�!�W�W���a��c�"�8�8�8rlr��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�8�E�!�Q�K�K�8�8�8�������3�x�!�S��A�s�8�a��X�F�G�G�G�G�Grlc��tddgx}��}|�|d��|�|ddg��dSr���lenrr)r�lines�lengths   r�#test_named_expression_assignment_13zANamedExpressionAssignmentTest.test_named_expression_assignment_13(sM���q�!�f�_�U�%�%�������#�#�#������1��&�&�&�&�&rlc��d}d}d}||||dz
zzx}kr|dz
|z|z|z}||||dz
zzx}k�|�|d��dS)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�Nrq)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�����rlc�D�dx}r	dx}�|�|d��dS)NFrqrss  r�#test_named_expression_assignment_15zANamedExpressionAssignmentTest.test_named_expression_assignment_15>s=���j�a�	���j�a�	�	
����E�"�"�"�"�"rlc
�����d\�����fd�td��D��}|�|dddddd	d
���dS)Nr�c�4��i|]}�x��x���zx�z�z
��Srkrk)r��__rt�b�cs  ���r�
<dictcomp>zUNamedExpressionAssignmentTest.test_named_expression_assignment_16.<locals>.<dictcomp>Fs5���H�H�H��Q���q�&�!�!�a�%�Z�Q�0�1�4�H�H�Hrl�r�r{r���
�)r�r�r{r�r�r�r�)r�fibrtr�r�s  @@@r�#test_named_expression_assignment_16zANamedExpressionAssignmentTest.test_named_expression_assignment_16Ds_��������1�H�H�H�H�H�H�u�Q�x�x�H�H�H������!��a�A�"�"�E�E�F�F�F�F�Frlc��dg}|dx}}|�|d��|�||d��dS)Nr�rrq)rrtr��elements    r�#test_named_expression_assignment_17zANamedExpressionAssignmentTest.test_named_expression_assignment_17IsL��
�C���q�D�A�'������A��������!�A�$�'�'�'�'�'rlc��Gd�d��}|dgdgg��}|dx}dx}f}|�|d��|�|d��|�||j||��dS)Nc��eZdZd�Zd�ZdS)�]NamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalListc��||_dSr���two_dimensional_list)rr�s  r�__init__zfNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__init__Qs��,@��)�)�)rlc�@�|j|d|dS)Nrr�r�)r�indexs  r�__getitem__ziNamedExpressionAssignmentTest.test_named_expression_assignment_18.<locals>.TwoDimensionalList.__getitem__Ts���0��q��:�5��8�D�DrlN)rhrirjr�r�rkrlr�TwoDimensionalListr�Ps:������
A�
A�
A�
E�
E�
E�
E�
Erlr�r�r�r)rrr�)rr�rtr�r�r�s      r�#test_named_expression_assignment_18zANamedExpressionAssignmentTest.test_named_expression_assignment_18Os���	E�	E�	E�	E�	E�	E�	E�	E�
����a�S�z�*�*���q�D�A�Q�$�!�J�-������A��������A��������!�"8��";�A�">�?�?�?�?�?rlN)rhrirjruryr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rkrlrrnrn�s9������ � � �
 � � �#�#�#�
*�*�*�
���
���&�&�&�
L�L�L�
L�L�L�
L�L�L�
G�G�G�H�H�H�'�'�'���� #�#�#�G�G�G�
(�(�(�@�@�@�@�@rlrnc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�NamedExpressionScopeTestc��d}|�td��5t|ii��ddd��dS#1swxYwYdS)Nz!def spam():
    (a := 5)
print(a)zname 'a' is not defined)r�	NameErrorr
rs  r�test_named_expression_scope_01z7NamedExpressionScopeTest.test_named_expression_scope_01as������
#�
#�I�/H�
I�
I�	�	���r�2����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rc���d��fd�td��D��}|�|gd���|��d��dS)Nrc���g|]	}�|zx���
Srkrk)r��vr|s  �rr�zKNamedExpressionScopeTest.test_named_expression_scope_02.<locals>.<listcomp>ks"���=�=�=�q����*��=�=�=rlr��rr�r{r�rprpr�)r�partial_sumsr|s  @r�test_named_expression_scope_02z7NamedExpressionScopeTest.test_named_expression_scope_02is`�����=�=�=�=�E�!�H�H�=�=�=������'7�'7�'7�8�8�8������#�#�#�#�#rlc���t�fd�dD����}|�|��|��d��dS)Nc3�(�K�|]}|x�dkV��
dS)r�Nrk)r��num�lastNums  �r�	<genexpr>zJNamedExpressionScopeTest.test_named_expression_scope_03.<locals>.<genexpr>qs,�����E�E�C�c�>�7�a�/�E�E�E�E�E�Erlrr�)�anyr�rr)r�containsOner�s  @r�test_named_expression_scope_03z7NamedExpressionScopeTest.test_named_expression_scope_03psS����E�E�E�E�9�E�E�E�E�E������$�$�$�����!�$�$�$�$�$rlc�v���d����fd�tdd��D��}|��d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_04.<locals>.spamwr�rlc�4��g|]}�|��x�|�zg��Srkrkr�s  ��rr�zKNamedExpressionScopeTest.test_named_expression_scope_04.<locals>.<listcomp>yr�rlr�r�r�r�r�s  @@r�test_named_expression_scope_04z7NamedExpressionScopeTest.test_named_expression_scope_04vsS����	�	�	�8�8�8�8�8�E�!�Q�K�K�8�8�8������A�����rlc����d��gd�}��fd�|D��}|�|gd���|��d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_05.<locals>.spam~r�rlrc�B��g|]}�|��x�dk�|�|�zf��Sr�rkr�s  ��rr�zKNamedExpressionScopeTest.test_named_expression_scope_05.<locals>.<listcomp>�r�rlr�r{rqr�s   @@r�test_named_expression_scope_05z7NamedExpressionScopeTest.test_named_expression_scope_05}sq����	�	�	��Y�Y�
�E�E�E�E�E�J�E�E�E������E�E�E�F�F�F�����A�����rlc����fd�td��D��}|�|gd�gd�g��|��d��dS)Nc�F��g|]}�fd�td��D����S)c���g|]}|x���Srkrk)r�r6r�s  �rr�zVNamedExpressionScopeTest.test_named_expression_scope_06.<locals>.<listcomp>.<listcomp>�s���,�,�,�a��	��,�,�,rlr{�r�)r�r8r�s  �rr�zKNamedExpressionScopeTest.test_named_expression_scope_06.<locals>.<listcomp>�s4���?�?�?��,�,�,�,�5��8�8�,�,�,�?�?�?rlr��rr�r�r�)rr�r�s  @r�test_named_expression_scope_06z7NamedExpressionScopeTest.test_named_expression_scope_06�sa���?�?�?�?�e�A�h�h�?�?�?������y�y�y�)�)�)�4�5�5�5�����q�!�!�!�!�!rlc�\�tddgx}��|�|ddg��dSr�r�)rr�s  r�test_named_expression_scope_07z7NamedExpressionScopeTest.test_named_expression_scope_07�s8���a��V�O�E���������A��'�'�'�'�'rlc�������d��d������fd�td��D��}|�|ddg��|��d��|��d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.spam�r�rlc��|dzS�Nr�rk�r�s rr�zENamedExpressionScopeTest.test_named_expression_scope_08.<locals>.eggs�����q�5�Lrlc�@��g|]}��|x���x�����Srkrk)r��hrtr�r�r�s  ����rr�zKNamedExpressionScopeTest.test_named_expression_scope_08.<locals>.<listcomp>��4���9�9�9�1�t�t���1�f�a���%�A�&�&�9�9�9rlr�rr�r�)rr�rtr�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�����rlc�����d��d�����fd�td��D��}|�|ddg��|��d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.spam�r�rlc��|dzSrrkrs rr�zENamedExpressionScopeTest.test_named_expression_scope_09.<locals>.eggs�rrlc�@��g|]}��|x���x�����Srkrk)r�r
rtr�r�s  ���rr�zKNamedExpressionScopeTest.test_named_expression_scope_09.<locals>.<listcomp>�rrlr�rr�)rr�rtr�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�����rlc�������fd�td��D��}|�|ddgddgg��|��d��|��ddg��dS)Nc�J��g|]}�fd�td��D��x��� S)c���g|]}dx���S)r�rk)r�r6rts  �rr�zVNamedExpressionScopeTest.test_named_expression_scope_10.<locals>.<listcomp>.<listcomp>�s���.�.�.��!�V�Q�.�.�.rlr�r�)r�r8rtr�s  ��rr�zKNamedExpressionScopeTest.test_named_expression_scope_10.<locals>.<listcomp>�s9���A�A�A�1�.�.�.�.�U�1�X�X�.�.�.�.�q�A�A�Arlr�r�r�)rr�rtr�s  @@r�test_named_expression_scope_10z7NamedExpressionScopeTest.test_named_expression_scope_10�s����A�A�A�A�A��a���A�A�A�������1�v��1�v�.�/�/�/�����A��������Q��F�#�#�#�#�#rlc����fd�td��D��}|�|gd���|��d��dS)Nc���g|]}|x���Srkrk)r�r6r8s  �rr�zKNamedExpressionScopeTest.test_named_expression_scope_11.<locals>.<listcomp>�s���(�(�(�!�A�v�q�(�(�(rlr�)rr�r�r{r�r�r�)rr�r8s  @r�test_named_expression_scope_11z7NamedExpressionScopeTest.test_named_expression_scope_11�sX���(�(�(�(�u�Q�x�x�(�(�(������o�o�o�.�.�.�����A�����rlc���d��fd�td��D��}|�|gd���|��d��dS)Nrc���g|]	}|�zx���
Srkrk)r�r6r�s  �rr�zKNamedExpressionScopeTest.test_named_expression_scope_17.<locals>.<listcomp>�s!���,�,�,�a�A��E�z�q�,�,�,rlr�r�rpr�)rr�r�s  @r�test_named_expression_scope_17z7NamedExpressionScopeTest.test_named_expression_scope_17�s`���
��,�,�,�,�5��8�8�,�,�,������.�.�.�/�/�/�����B�����rlc�~�d�}|dx}��}|�|d��|�|d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_18.<locals>.spam�r�rlr�rq�rr�r�r�s    r�test_named_expression_scope_18z7NamedExpressionScopeTest.test_named_expression_scope_18�sV��	�	�	��d��6�1�l�l������a� � � �����A�����rlc�~�d�}|dx}��}|�|d��|�|d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_19.<locals>.spam�r�rlr�rqrs    r�test_named_expression_scope_19z7NamedExpressionScopeTest.test_named_expression_scope_19�sV��	�	�	��d��F�A�n�n������a� � � �����A�����rlc��d�}|dx}���}|�|d��|�|d��dS)Nc��|Sr�rkr�s rr�zENamedExpressionScopeTest.test_named_expression_scope_20.<locals>.spam�r�rlr�r�rqrs    r�test_named_expression_scope_20z7NamedExpressionScopeTest.test_named_expression_scope_20�s[��	�	�	��d�1�f�a���������a� � � �����A�����rlc��d�}|dx}d���}|�|d��|�|d��dS)Nc��||zSr�rk�rtr�s  rr�zENamedExpressionScopeTest.test_named_expression_scope_21.<locals>.spam�rrlr�r�rr{rq�rr�r�r�s    r�test_named_expression_scope_21z7NamedExpressionScopeTest.test_named_expression_scope_21�s]��	�	�	��d��6�1�Q���������a� � � �����A�����rlc��d�}|dx}d���}|�|d��|�|d��dS)Nc��||zSr�rkr(s  rr�zENamedExpressionScopeTest.test_named_expression_scope_22.<locals>.spam�rrlr�r�rr{rqr)s    r�test_named_expression_scope_22z7NamedExpressionScopeTest.test_named_expression_scope_22�s]��	�	�	��d��F�A�q�!�!�!������a� � � �����A�����rlc��d�}|dx}d���}|�|d��|�|d��dS)Nc��||zSr�rkr(s  rr�zENamedExpressionScopeTest.test_named_expression_scope_23.<locals>.spam�rrlr�r�)r�rtr{rqr)s    r�test_named_expression_scope_23z7NamedExpressionScopeTest.test_named_expression_scope_23�s]��	�	�	��d�1�f�a��#�#�#������a� � � �����A�����rlc�V��d��fd�}|��|��d��dS)Nrpc���dx�dSrwrkr�s�rr�zENamedExpressionScopeTest.test_named_expression_scope_24.<locals>.spam�s����W�Q�Q�Q�Qrlrxrq)rr�rts  @r�test_named_expression_scope_24z7NamedExpressionScopeTest.test_named_expression_scope_24�sJ�����	�	�	�	�	�	
���������B�����rlc�h�i}d}t||i��|�|dd��dS)Nz4a = 10
def spam():
    global a
    (a := 20)
spam()rtrx)r
rr)r�nsr
s   r�test_named_expression_scope_25z7NamedExpressionScopeTest.test_named_expression_scope_25�sB��
��
��	
�T�2�r��������C��"�%�%�%�%�%rlc��d}d}d}d}dd|��fdd|�d	�fd
d|��fdd|�d	�fdd|��fd
d|�d	�fdd|��fdd|�d	�fg}|D]\}}|�|���5i}t||��|�|dd��|�|dgd���ddd��n#1swxYwY��dS)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 globalzx = 1; result = zRebind nonlocalzresult, x = (lambda x=1: (z, x))()z
Filter globalzFilter nonlocalzBody globalz
Body nonlocalz
Nested globalzNested nonlocalr@r�r��resultr�)rCr
rr)	r�	rebinding�
filter_ref�body_ref�
nested_refrErAr
r5s	         r�6test_named_expression_variable_reuse_in_comprehensionszONamedExpressionScopeTest.test_named_expression_variable_reuse_in_comprehensions	s���F�	�?�
�?��]�
�
�<��<�<�=�
� O�Y� O� O� O�P�
�=��=�=�>�
� P�Z� P� P� P�Q�
�9�x�9�9�:�
�L�8�L�L�L�M�
�=��=�=�>�
� P�Z� P� P� P�Q�	
�� �	:�	:�J�D�$����4��(�(�
:�
:����T�2����� � ��C��!�,�,�,�� � ��H��y�y�y�9�9�9�	
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:��	:�	:s�A
B5�5B9	�<B9	c����t�����fd�}	|����t���dadS#dawxYw)Nc�t���fd�td��D����t���dS)Nc���g|]}�xa��Srk)�
GLOBAL_VAR)r��_�sentinels  �rr�zZNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f.<locals>.<listcomp>*����6�6�6��8�
#�Z�6�6�6rlr�)r�rrrA)rrCs��r�fzFNamedExpressionScopeTest.test_named_expression_global_scope.<locals>.f(s?���6�6�6�6�U�1�X�X�6�6�6�6����Z��2�2�2�2�2rl��objectrrrA�rrErCs` @r�"test_named_expression_global_scopez;NamedExpressionScopeTest.test_named_expression_global_scope%sk�����8�8��	3�	3�	3�	3�	3�	3�	�
�A�C�C�C����Z��2�2�2��J�J�J���J����s�%A�Ac�|���t�����fd�}|����td��dS)Nc�r���d���fd�td��D��������dS)Nc���g|]}�x���Srkrk)r�rBrArCs  ��rr�zlNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f.<locals>.<listcomp>6rDrlr�r�)rArrCs@��rrEzXNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword.<locals>.f4sH�����J�6�6�6�6�6�U�1�X�X�6�6�6�6����Z��2�2�2�2�2rlrFrHs` @r�4test_named_expression_global_scope_no_global_keywordzMNamedExpressionScopeTest.test_named_expression_global_scope_no_global_keyword2sT�����8�8��	3�	3�	3�	3�	3�	3�	
���������T�*�*�*�*�*rlc�F���t�����fd�}|��dS)Nc�Z���d���fd�}|��������dS)Nc�@����fd�td��D��dS)Nc���g|]}�x���Srkrk�r�rB�nonlocal_varrCs  ��rr�zgNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.g.<locals>.<listcomp>A����<�<�<�a��)��<�<�<rlr�r��rSrCs��r�gzSNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f.<locals>.g?s,���<�<�<�<�<�5��8�8�<�<�<�<�<�<rlrq)rVrSrrCs @��rrEzHNamedExpressionScopeTest.test_named_expression_nonlocal_scope.<locals>.f=sP�����L�
=�
=�
=�
=�
=�
=�
�A�C�C�C����\�8�4�4�4�4�4rl�rGrHs` @r�$test_named_expression_nonlocal_scopez=NamedExpressionScopeTest.test_named_expression_nonlocal_scope;s<�����8�8��	5�	5�	5�	5�	5�	5�	
������rlc�F���t�����fd�}|��dS)Nc�V��d}�fd�}|����|d��dS)Nc�B�����fd�td��D��dS)Nc���g|]}�x���SrkrkrRs  ��rr�z{NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.g.<locals>.<listcomp>KrTrlr�r�rUs@�rrVzgNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.f.<locals>.gJs-����<�<�<�<�<�5��8�8�<�<�<�<�<�<rlrq)rSrVrrCs  ��rrEz\NamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keyword.<locals>.fHsH����L�
=�
=�
=�
=�
=�
�A�C�C�C����\�4�0�0�0�0�0rlrWrHs` @r�8test_named_expression_nonlocal_scope_no_nonlocal_keywordzQNamedExpressionScopeTest.test_named_expression_nonlocal_scope_no_nonlocal_keywordFs<�����8�8��	1�	1�	1�	1�	1�	1�	
������rlc�����d�gd�}��fd�|D��}|�dt����t|��D]$\}}|�|||�z���%dS)Nr�)r�r�r{r�c3�&�K�|]}|�zx�V��dSr�rk)r�r6rtr�s  ��rr�zQNamedExpressionScopeTest.test_named_expression_scope_in_genexp.<locals>.<genexpr>Ss+�����(�(��q�1�u�*�!�(�(�(�(�(�(rlr�)�assertNotIn�locals�	enumeraterr)rr��genexp�idx�elemrtr�s     @@r�%test_named_expression_scope_in_genexpz>NamedExpressionScopeTest.test_named_expression_scope_in_genexpPs�����
���L�L��(�(�(�(�(�a�(�(�(������f�h�h�'�'�'�"�6�*�*�	/�	/�I�C�����T�1�S�6�A�:�.�.�.�.�	/�	/rlN)rhrirjr�r�r�r�r�rrrrrrrrr"r%r*r-r0r3r6r=rIrMrXr]rfrkrlrr�r�_s����������$�$�$�%�%�%�������"�"�"�(�(�(�
���
�
�
�$�$�$���� � � ������������������� � � �
&�
&�
&�:�:�:�8���+�+�+�	�	�	����/�/�/�/�/rlr��__main__)�unittestrA�TestCaserrnr�rh�mainrkrlr�<module>rks�������
�
�Z0�Z0�Z0�Z0�Z0��!2�Z0�Z0�Z0�zy@�y@�y@�y@�y@�H�$5�y@�y@�y@�zx/�x/�x/�x/�x/�x�0�x/�x/�x/�v�z����H�M�O�O�O�O�O��rl