Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 13.58.247.196
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_fstring.cpython-310.pyc
o

`b���@svddlZddlZddlZddlZddlZddlZddlmZddlm	Z	dZ
Gdd�dej�Zedkr9e�
�dSdS)�N)�temp_cwd)�assert_python_failurezglobal variablec@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgdh�Z6didj�Z7dkdl�Z8dmdn�Z9dodp�Z:dqdr�Z;dsdt�Z<dudv�Z=dwdx�Z>dydz�Z?d{d|�Z@d}d~�ZAdd��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�S)��TestCasec
Csn|D]2}|j|d��"|�||��t|�Wd�n1s wYWd�n1s/wYqdS)N��str)ZsubTest�assertRaisesRegex�eval)�selfZexception_typeZregexZ
error_stringsr�r
�:/usr/local/python-3.10/lib/python3.10/test/test_fstring.py�assertAllRaises
�����zTestCase.assertAllRaisecCs�Gdd�d�}|�}|�}t�dd�|�|_|�|�t|��|�|�d�|�t|�t|��|�|�d�d�|�|�d�d�|�t|��|d�d�|�t|��|d�d�dS)Nc@�eZdZdd�ZdS)z(TestCase.test__format__lookup.<locals>.XcS�dS)N�classr
�r	�specr
r
r�
__format__&�z3TestCase.test__format__lookup.<locals>.X.__format__N��__name__�
__module__�__qualname__rr
r
r
r�X%�rcSr)N�instancer
rr
r
r�<lambda>.sz/TestCase.test__format__lookup.<locals>.<lambda>r�r)�types�
MethodTyper�assertEqual�format�type)r	r�x�yr
r
r�test__format__lookup#szTestCase.test__format__lookupcCsRGdd�d�}|�}d}t�|�}t|dd�}|�|j�t|�|�|j�dS)Nc@�eZdZdd�Zdd�ZdS)zTestCase.test_ast.<locals>.XcS�
d|_dS)NF��called�r	r
r
r�__init__A�
z%TestCase.test_ast.<locals>.X.__init__cSs
d|_dS)NT�r'r)r
r
r�__call__Csz%TestCase.test_ast.<locals>.X.__call__N)rrrr*r-r
r
r
rr@�r�
a = 10
f'{a * x()}'r�exec)�ast�parse�compileZassertFalser(r0Z
assertTrue)r	rr"�expr�t�cr
r
r�test_ast>s
zTestCase.test_astcCs�d}t�|�}|�t|�tj�|�t|j�d�|�t|jd�tj�|�|jdjd�|�t|jd�tj	�|�t|jdj
�tj�|�t|jdj
j�d�|�t|jdj
jd�tj
�|�|jdjd�|�|jdj
jd�|�|jdj
jdjd�|jdj
jdj
}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|jd�|�|jjd�|�|jjd�|�|jd�|�|jjd�|�|jjd�dS)Nr/�r���)r1r2rr!�Module�len�body�Assign�lineno�Expr�value�	JoinedStr�values�FormattedValue�BinOp�left�Name�op�Mult�right�Call�
col_offset�r	r4r5�binopr
r
r�test_ast_line_numbersVs0
 zTestCase.test_ast_line_numberscCs�d}t�|�}|�t|�tj�|�t|j�d�|�t|jd�tj�|�t|jdj�tj	�|�|jdj
d�|�t|jd�tj�|�t|jdj�tj	�|�t|jdjj�d�|�t|jdjjd�tj�|�t|jdjjdj�t
�|�t|jdjjd�tj�|�t|jdjjd�tj�|�t|jdjjdj�t
�|�t|jdjjd�tj�|�|jdj
d�|�|jdjj
d�|�|jdjjdj
d�|�|jdjjdj
d�|�|jdjjdj
d�|�|jdjjdj
d�|jdjjdj}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|j
d�|�|jj
d�|�|jj
d�|�|jd�|�|jjd�|�|jjd�|jdjjdj}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|j
d�|�|jj
d�|�|jj
d�|�|jd	�|�|jjd	�|�|jjd
�dS)Nz8
f'no formatted values'
f'eggs {a * x()} spam {b + y()}'r8rr9r,r:����)r1r2rr!r<r=r>rArBrCr@rD�ConstantrrErFrGrHrIrJrKrLrMZAdd)r	r4r5Zbinop1Zbinop2r
r
r�.test_ast_line_numbers_multiple_formattedvaluesusX
      z7TestCase.test_ast_line_numbers_multiple_formattedvaluescCs�d}t�|�}|�t|�tj�|�t|j�d�|�t|jd�tj�|�|jdjd�|�t|jd�tj	�|�t|jdj
�tj�|�t|jdj
j�d�|�t|jdj
jd�tj
�|�|jdjd�|�|jdj
jd�|�|jdj
jdjd�|jdj
jdj
}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|jd�|�|jjd�|�|jjd�|�|jd�|�|jjd�|�|jjd�|�t|jj�d�|�t|jjd�tj�|�t|jjdj
�t�|�t|jjd�tj
�|�t|jjd�tj�|�t|jjdj
�t�|�|jjdjd�|�|jjdjd�|�|jjdjd�|jjdj
}|�t|�tj�|�|jd�|�|jd�dS)Nz
a = 10
f'{a * f"-{x()}-"}'r8rr9r:r;�)r1r2rr!r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrMrUrrL)r	r4r5rO�callr
r
r�test_ast_line_numbers_nested�sJ
 z%TestCase.test_ast_line_numbers_nestedcCs~d}t�|�}|�t|�tj�|�t|j�d�|�t|jd�tj�|�|jdjd�|�t|jd�tj	�|�t|jdj
�tj�|�t|jdj
j�d�|�t|jdj
jd�tj
�|�t|jdj
jd�tj�|�t|jdj
jdj
�t�|�t|jdj
jd�tj
�|�t|jdj
jd�tj�|�t|jdj
jdj
�t�|�t|jdj
jd�tj
�|�|jdjd�|�|jdj
jd�|�|jdj
jdjd�|�|jdj
jdjd�|�|jdj
jdjd�|�|jdj
jdjd�|�|jdj
jdjd�|jdj
jdj
}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|jd�|�|jjd�|�|jjd�|�|jd�|�|jjd�|�|jjd�|jdj
jdj
}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|jd�|�|jjd�|�|jjd�|�|jd	�|�|jjd	�|�|jjd
�|jdj
jdj
}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|jd�|�|jjd�|�|jjd�|�|jd�|�|jjd�|�|jjd�dS)
Nz)
a = 10
f'{a * x()} {a * x()} {a * x()}'
r8rr9�r:r,r;�
�rSrT)r1r2rr!r<r=r>r?r@rArBrCrDrErUrrFrGrHrIrJrKrLrMrNr
r
r�*test_ast_line_numbers_duplicate_expression�sp
       z3TestCase.test_ast_line_numbers_duplicate_expressioncCsDt�d�}|�t|j�d�|�|jdjd�|�t|jd�tj�|�t|jdj�tj	�|�t|jdjj
�d�|�t|jdjj
d�tj�|�t|jdjj
d�tj�|�t|jdjj
d�tj�|jdjj
\}}}|j}|�t|�tj
�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nz%f"Here is that pesky {xxx:.3f} again"r9rr:r8��)r1r2rr=r>r@r!rArBrCrDrUrErH�
end_linenorM�end_col_offset)r	r5�_r4�namer
r
r�(test_ast_numbers_fstring_with_formattings 
   z1TestCase.test_ast_numbers_fstring_with_formattingcCsd}t�|�}|�t|�tj�|�t|j�d�|�t|jd�tj�|�|jdjd�|�t|jd�tj	�|�t|jdj
�tj�|�t|jdj
j�d�|�t|jdj
jd�tj
�|�t|jdj
jdj
�t�|�t|jdj
jd�tj�|�t|jdj
jd�tj
�|�t|jdj
jdj
�t�|�|jdjd�|�|jdj
jd�|�|jdj
jdjd�|�|jdj
jdjd�|�|jdj
jdjd�|�|jdjd�|�|jdj
jd�|�|jdj
jdjd�|�|jdj
jdjd�|�|jdj
jdjd�|jdj
jdj
}|�t|�tj�|�t|j�tj�|�t|j�tj�|�t|j�tj�|�|jd�|�|jjd�|�|jjd�|�|jd�|�|jjd�|�|jjd�dS)	Nz?
a = 10
f'''
  {a
     *
       x()}
non-important content
'''
r8rr9r:r,�r;)r1r2rr!r<r=r>r?r@rArBrCrDrUrrErMrFrGrHrIrJrKrLrNr
r
r�'test_ast_line_numbers_multiline_fstring/sF
	     z0TestCase.test_ast_line_numbers_multiline_fstringcCs�d}t�|�}|�t|�tj�|�t|j�d�|jdjjdj}|�t|�tj	�|�|j
d�|�|jd�|�|jd�|�|j
d�d}t�|�}|�t|�tj�|�t|j�d�|jdjjd}|�t|�tj�|�t|j�d�|j\}}}|�t|�tj�|�|j
d�|�|jd	�|�|jd
�|�|j
d�|j}|�t|�tj	�|�|j
d�|�|jd�|�|jd
�|�|j
d�|�t|�tj�|�|j
d�|�|jd	�|�|jd
�|�|j
d�dS)Nz
x = (
    f" {test(t)}"
)r9rr:rQ�zv
x = (
        'PERL_MM_OPT', (
            f'wat'
            f'some_string={f(x)} '
            f'wat'
        ),
)
r,rerR�rZrT�)r1r2rr!r<r=r>rBrDrLr@r`rMra�eltsrCrU)r	r4r5rXZfstringZwat1ZmiddleZwat2r
r
r�&test_ast_line_numbers_with_parenthesesasD

	z/TestCase.test_ast_line_numbers_with_parenthesescCs,dd�}|�|j�dd�}|�|j�dS)NcS�ddS�NzNot a docstringr
r
r
r
r�f��z"TestCase.test_docstring.<locals>.fcSrlrmr
r
r
r
r�g�roz"TestCase.test_docstring.<locals>.g)ZassertIsNone�__doc__)r	rnrpr
r
r�test_docstring�szTestCase.test_docstringcCs<|�td��t�d�Wd�dS1swYdS)Nzmalformed node or stringzf'x')r�
ValueErrorr1Zliteral_evalr)r
r
r�test_literal_eval�s"�zTestCase.test_literal_evalcCs<dg}d}t�|�}t|dd�}t|�|�|dd�dS)Nrzx[0] = 'foo' f'{3}'r0rZfoo3)r1r2r3r0r)r	r"r4r5r6r
r
r�test_ast_compile_time_concat�s
z%TestCase.test_ast_compile_time_concatcC�|�tdddg�dS)Nz&cannot mix bytes and nonbytes literalszf'' b''zb'' f''�r�SyntaxErrorr)r
r
r�test_compile_time_concat_errors�s��z(TestCase.test_compile_time_concat_errorscCs(|��d�|�dd�|�dd�dS)Nr�a� �rr)r
r
r�test_literal�szTestCase.test_literalcC�|�tdgd��dS)Nzf-string: unterminated string)zf'{"x'zf'{"x}'zf'{("x'zf'{("x}'rwr)r
r
r�test_unterminated_string���z!TestCase.test_unterminated_stringcCsb|�tddg�|�tddg�|�tddg�|�tddg�|�tdd	g�|�ttd
�dS)NzJf-string: closing parenthesis '\}' does not match opening parenthesis '\('zf'{((}'zJf-string: closing parenthesis '\)' does not match opening parenthesis '\['z	f'{a[4)}'zJf-string: closing parenthesis '\]' does not match opening parenthesis '\('z	f'{a(4]}'zJf-string: closing parenthesis '\}' does not match opening parenthesis '\['zf'{a[4}'zf'{a(4}'a�f'{((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((}')rrx�assertRaisesrr)r
r
r�test_mismatched_parens�s �����zTestCase.test_mismatched_parenscCsr|�dd�|�dd�|�dd�|�dd�|�dd�|�dd�|�dd�|�dd�|�d	d	�|�d
d
�|�dd�|�dd�|�d
d
�|�dd�|�dd�|�dd�|�dd��d�|�dd��d�|�dd��d�|�dd��d�|�d�d�d�|�d�d�d�|�d�d�d�|�d�d�d�|�d�d�|�tddg�dS) N�{za{z{bza{b�}za}z}bza}bz{}za{}z{b}z{}cza{b}za{}cz{b}cza{b}c�
z{10z}10z}{z}{10z}a{z}a{10z10{z10}z10}{z}a{}z10}a{}z{{}}zunhashable typezf'{ {{}} }')rr�	TypeErrorr)r
r
r�test_double_braces�s8�zTestCase.test_double_bracescCs�d}|�d|�d�d�|�d|�d�d�|�d|�d|d��d�|�d	|��d
�|�d|��d�|�d	|��d
�|�d
|��d�|�d|��d�|�d|��d�|�|�d�d�|�|�d�|�|�d�|�|�d�|�|�d�d�|�d|�d�d�|�d|��d�|�|�d|��d�|��d�|��d�|��d�|��d�|��d�|��d�|��d�|�tddg�dS)N�defzabc## Zghizabc## defghi�abcZ	abcdefghi�4z
abcdefghidef z{x}z{x}defz{xz{xdefz{{x}}z{{x}}defz{{xz{{xdefzx}}zx}}defzdefx}}�2Zdef2�1Z1def2Z1def�-zdef-defr�f-string: expecting '}'z
f'{3' f'}'�rrrx�r	r"r
r
r�test_compile_time_concat�s8�z!TestCase.test_compile_time_concatcCsNddi}|�d�d�|�|d�d�|�tdgd��|�tddg�dS)N�#�hashz+f-string expression part cannot include '#')zf'{1#}'z	f'{3(#)}'zf'{#}'�f-string: unmatched '\)'zf'{)#}'r��r	�dr
r
r�
test_commentss��zTestCase.test_commentscCs�ddd�}d}d}tdd�D]}|�t||��|d|�q|�t|d	�d
�|dd�|dd
�}|�t|�|dd�dd}|�t|�d�dS)NrcSsdd||dS)Nzf'z{x} �'r
)�n�extrar
r
r�
build_fstr.sz2TestCase.test_many_expressions.<locals>.build_fstrrr9�ir{��i��z{x:{width}} �zf'{1}' 'x' 'y'iA1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy)r)�rangerr)r	r�r"�width�i�sr
r
r�test_many_expressions)s
 
zTestCase.test_many_expressionsc	Cs�d}d}t�d�}|�d||�d|����d�|�d||�d|����d�|�d||d�d|d����d�|�d|d	�d
d�d|d����d�|�d|d	�d
d�d|d����d�|�ddd	�d��d
�|�dd�dd
�d���d
�|�ddd�dd
�d��d�|�dd�dd	�dd���d�|�dddddiko�|�d��d
�|�tddg�|�tddg�|�tddg�|�tddg�dS)Nr�r,z12.34567zresult: �.zresult:      12.35�0r�r9rr��0xz
       0xar"i����r�z
      -0xar:rZr�zf'{"s"!r{":10"}}'�f-string: invalid syntaxzf'{4:{/5}}'z'f-string: expressions nested too deeplyz,f'result: {value:{width:{0}}.{precision:1}}'�&f-string: invalid conversion characterzf'{"s"!{"r"}}')�decimalZDecimalrrrx)r	r�Z	precisionrBr
r
r�!test_format_specifier_expressionsBs8
"&& $�������z*TestCase.test_format_specifier_expressionscCs.Gdd�d�}|�}|�|�d|��d�dS)Nc@r%)z*TestCase.test_side_effect_order.<locals>.XcSr&)Nr�r�r)r
r
rr*ir+z3TestCase.test_side_effect_order.<locals>.X.__init__cSs|jd7_t|j�S)Nr9)r�rrr
r
rrks
z5TestCase.test_side_effect_order.<locals>.X.__format__N)rrrr*rr
r
r
rrhr.rr{z1 2r|)r	rr"r
r
r�test_side_effect_ordergszTestCase.test_side_effect_ordercCs(|�tdgd��|�tdddg�dS)Nz&f-string: empty expression not allowed)zf'{}'z
f'{ }'f' {} 'zf'{!r}'zf'{ !r}'zf'{10:{ }}'zf' { } 'z
f'''{	
}'''zf'{!x}'z	f'{ !xr}'zf'{!x:}'z	f'{!x:a}'z
f'{ !xr:}'zf'{ !xr:a}'zf'{!}'zf'{:}'zf'{!'zf'{!s:'zf'{:'zf'{:x'z'invalid non-printable character U\+00A0uf'''{ }'''� rwr)r
r
r�test_missing_expressionrs�"��z TestCase.test_missing_expressioncCsD|�d�d�|�tdddg�|�tddg�|�tddg�dS)	N)r:z(3,)r�zf'{,}'r�z
f'{3)+(4}'zunterminated string literalzf'{
}'r�r)r
r
r�test_parens_in_expressions�s����z#TestCase.test_parens_in_expressionscCr~)N�invalid syntax)zf'{.}'z
f'{.}'z

f'{.}'rwr)r
r
r�!test_newlines_before_syntax_error�r�z*TestCase.test_newlines_before_syntax_errorcCs�|�dd�|�dd�|�dd�|�d�d�d�|�d�dd��d�|�dd��d�|�dd�|�d	d	�|�d	d	�|�d�d�d
�|�d�dd��d�|�dd��d�|�dd�|�d
d
�|�d
d
�|�d�d�d
�|�d�dd��d�|�dd��d�|�dd�|�d�d�d
�|�d�dd��d�|�dd��d�|�d
d
�|�dd�|�dd�|�dd�|�dd�|�dd�|�d�d�d�|�d�dd��d�|�dd��d�|�dd�|�dd�|�dd�|�t��td�}Wd�n	1�swY|�|d�|�dd��d�|�dd��d�d}|�dd�|�d|��d�|�d|��d�|�dd�dS)N�	z\tr8z2	r:z2	3z	3uΔz\u0394u2Δu2Δ3uΔ3z
\U00000394r{z\x20z2 z2 3z 3z	f'\{6*7}'z\42�\�*Zspam�&z\Nz\Nspamz\&)rZassertWarns�DeprecationWarningr)r	rBZ	AMPERSANDr
r
r�test_backslashes_in_string_part�sZ
�z(TestCase.test_backslashes_in_string_partcCr~)Nzi\(unicode error\) 'unicodeescape' codec can't decode bytes in position .*: malformed \\N character escape)zf'\N'zf'\N{'z f'\N{GREEK CAPITAL LETTER DELTA'z'\N'z'\N{'z'\N{GREEK CAPITAL LETTER DELTA'rwr)r
r
r�%test_misformed_unicode_character_name�s�z.TestCase.test_misformed_unicode_character_namecCr~)Nz3f-string expression part cannot include a backslash)z
f'{\'a\'}'zf'{\t3}'zf'{\}'zrf'{\'a\'}'z	rf'{\t3}'zrf'{\}'zrf'{"\N{LEFT CURLY BRACKET}"}'zf'{\n}'rwr)r
r
r�&test_no_backslashes_in_expression_part�r�z/TestCase.test_no_backslashes_in_expression_partcCs4|�dd�|�dd�|�dd�|�dd�dS)z@
        Only literal curly braces begin an expression.
        z{1+1}z{1+1Nr|r)r
r
r�test_no_escapes_for_bracessz#TestCase.test_no_escapes_for_bracescCs |�d�d�|�d�d�dS)Nrr�r;�7r|r)r
r
r�test_newlines_in_expressions
s�z%TestCase.test_newlines_in_expressionscsjd�|��fdd�d��d�|��fdd�d�d�d�|��fd	d�d�d�d
�|�tddg�dS)
NrZc��|S�Nr
�r#�r"r
rr�z&TestCase.test_lambda.<locals>.<lambda>�8z'88888'cr�r�r
r�r�r
rrr��10z
'88888'   cr�r�r
r�r�r
rrr�z
88888     r�zf'{lambda x:x}'r�r)r
r�r�test_lambdas�zTestCase.test_lambdacCs4dd�}|d�}|�t|�d�|�t|�d�dS)Ncss�d|dV��dV�dS)Nzy:r8r
r�r
r
r�fn!s�zTestCase.test_yield.<locals>.fnr,rQ)r�next)r	r�rpr
r
r�
test_yieldszTestCase.test_yieldcCs>dd�}|d�}t|�}|�|d�d�|�|�d�d�dS)Nc3s�d�fdd�V��VdS)N�x:cr�r�r
r�r�r
rr+r�z6TestCase.test_yield_send.<locals>.fn.<locals>.<lambda>r
r�r
r�rr�*s�z$TestCase.test_yield_send.<locals>.fnr�r,�(�stringzx:string)r�r�send)r	r�rpZ
the_lambdar
r
r�test_yield_send)s
zTestCase.test_yield_sendcCst|�d�d�|�d�d�|�d�d�|�d�d�|�d�d�|�d�d�|�d�d�|�d�d�dS)Nr"zeric'szxeric"syzxeric"szeric"syr|r)r
r
r�+test_expressions_with_triple_quoted_strings2sz4TestCase.test_expressions_with_triple_quoted_stringscCs�d}d}|�|�|��d�|�d|�|��d�|�|�d|��d�|�|�|�d�d�|�d|�d|��d	�|�d|�|�d�d
�|�|�d|�d�d�|�d|�d|�d�d
�dS)N�br�Z98abcrZX98abcZ98XabcZ98abcX�YZX98YabcZX98abcYZ98XabcY�ZZX98YabcZr|)r	r"r#r
r
r�test_multiple_vars>szTestCase.test_multiple_varscCs0dd�}|�|d��d�|�|d��d�dS)Ncs�fdd�}|S)Ncs
d���S)Nr�r
r
r�r
r�innerOr+z3TestCase.test_closure.<locals>.outer.<locals>.innerr
)r"r�r
r�r�outerNsz$TestCase.test_closure.<locals>.outerZ987zx:987r;zx:7r|)r	r�r
r
r�test_closureMszTestCase.test_closurecs<d��fdd�}|�|dd�d�d}|�|dd�d�dS)	Nr8csd|�|���S�N�x=r
)r"r�r�r
rrnXsz"TestCase.test_arguments.<locals>.f�foor�zx=foofoo    �barzx=        20r|)r	rnr"r
r�r�test_argumentsVs
zTestCase.test_argumentscCsd}|�d|��d�dS)N�{�v:zv:123r|)r	rBr
r
r�test_locals_szTestCase.test_localscCs:|�t��dt��Wd�dS1swYdS)Nr�)r��	NameErrorrBr)r
r
r�test_missing_variablecs"�zTestCase.test_missing_variablecCsfGdd�d�}|�|�d�d�|�|��d�|�|���d�|�d��d�|�d��d�dS)Nc@r
)z,TestCase.test_missing_format_spec.<locals>.OcSs|sdS|S)N�*r
rr
r
rrisz7TestCase.test_missing_format_spec.<locals>.O.__format__Nrr
r
r
r�Ohrr�r"r�r:�3r|)r	r�r
r
r�test_missing_format_specgsz!TestCase.test_missing_format_speccCs||�dt��d�|�dt��d�d}|�dt�d|��d�|�dt��d�|�dt�d|��d�|�dt��dS)	N�g:zg:global variablezg:'global variable'�local variable� l:z"g:global variable l:local variablez$g:global variable l:'local variable'zmodule 'unittest' from)r�a_global�assertIn�unittest)r	�a_localr
r
r�test_globalus���zTestCase.test_globalcCsrd}|�d|��d�|�d|��d�d}|�d|�d|��d�|�d|��d�|�d|�d|��d�dS)	Nzreally a localr�zg:really a localzg:'really a local'r�r�z!g:really a local l:local variablez#g:really a local l:'local variable'r|)r	r�r�r
r
r�test_shadowed_global�s���zTestCase.test_shadowed_globalcCsdd�}|�|d��d�dS)NcSsdt|�Sr�rr�r
r
rr��szTestCase.test_call.<locals>.foor�zx=10r|)r	r�r
r
r�	test_call�szTestCase.test_callcCs0d}|�d�d�d�|�|�d�d�dS)NrZrr:Z000Z555r|)r	r#r
r
r�test_nested_fstrings�szTestCase.test_nested_fstringscCs,gd�}dd�|D�}|�td||�dS)N)zfu''zuf''zFu''zfU''zUf''zuF''zufr''zurf''zfur''zfru''zrfu''zruf''zFUR''zFur''zfb''zfB''zFb''zFB''zbf''zbF''zBf''zBF''cSsg|]}|�dd��qS)r��")�replace)�.0�caser
r
r�
<listcomp>�sz9TestCase.test_invalid_string_prefixes.<locals>.<listcomp>r�rw)r	Zsingle_quote_casesZdouble_quote_casesr
r
r�test_invalid_string_prefixes�s
�z%TestCase.test_invalid_string_prefixescCst|�d�d�|�d�d�|�d�d�|�d�d�|�ddd�dD���d�|�ddd�dD���d�dS)	Nr:r�zexpr=cS�i|]\}}||�qSr
r
�r�r"r#r
r
r�
<dictcomp>��z9TestCase.test_leading_trailing_spaces.<locals>.<dictcomp>))r9r8zexpr={1: 2}cSr�r
r
r�r
r
rr��r�r|r)r
r
r�test_leading_trailing_spaces�s��z%TestCase.test_leading_trailing_spacescCsP|�ddk�d�|�ddk��d�|�ddk�d�|�ddkd�d�dS)Nr:r,�Truez.3ZTrur|r)r
r
r�test_not_equal�szTestCase.test_not_equalcCs|�ddk�d�dS)Nrr9�Falser|r)r
r
r�test_equal_equal�szTestCase.test_equal_equalcCs�|�dd�d�|�dd�d�|�dd�d�|�dd�d�|�d�d�|�d�d�|�d�d�|�d�d�|�dd�d	�|�td
gd��|�tdgd
��dS)Ng��Q�	@z10.10z
      3.14z
3.14      rzz'a'za!rz!<10.10z
3.14!!!!!!r�)zf'{3!g}'zf'{3!A}'zf'{3!3}'zf'{3!G}'zf'{3!!}'zf'{3!:}'z	f'{3! s}'r�)zf'{x!s{y}}'z	f'{3!ss}'z
f'{3!ss:}'zf'{3!ss:s}'r�r)r
r
r�test_conversions�s�
�zTestCase.test_conversionscCr~)Nr�)zf'' = 3z
f'{0}' = xz
f'{x}' = xrwr)r
r
r�test_assignment�r�zTestCase.test_assignmentcCrv)Nr�zdel f''z
del '' f''rwr)r
r
r�test_del�s
��zTestCase.test_delcCsp|�tdgd��|�tdgd��|�d�d�|�d�d�|�dd�d��d	�|�d
d�d��d�dS)Nz#f-string: single '}' is not allowed)zf'{{}'zf'{{}}}'zf'}'zf'x}'zf'x}x'z
f'\u007b}'zf'{3:}>10}'zf'{3:}}>10}'r�)zf'{3:{{>10}'zf'{3'zf'{3!'zf'{3:'zf'{3!s'zf'{3!s:'z	f'{3!s:3'zf'x{'zf'x{x'zf'{x'zf'{3:s'zf'{{{'zf'{{}}{'zf'{'r�r�r:z>10z
}}}}}}}}}3r8z
{{{{{{{{{2)rrxrr)r
r
r�test_mismatched_braces�s�
�zTestCase.test_mismatched_bracescsd�fdd�}�fdd�}�fdd�}|dd�|d	d
�|dd�|d	d
�|dd
�|d	d
�dS)Nc�$d}|�rd}nd}��||�dS�Nrr9r8r|�r"Zexpected�flagr)r
r�test_fstring)�
z2TestCase.test_if_conditional.<locals>.test_fstringcrrr|rr)r
r�test_concat_empty1rz7TestCase.test_if_conditional.<locals>.test_concat_emptycs(d}d|��r
d}nd}��||�dS)Nrr{r9r8r|rr)r
r�test_concat_non_empty9s

z;TestCase.test_if_conditional.<locals>.test_concat_non_emptyrr8r{r9r
)r	rr	r
r
r)r�test_if_conditional$s




zTestCase.test_if_conditionalcCsFd}|�|�d�|�|��d�|�|��d�|�|��d�dS)N�testz'test'r|r�r
r
r�test_empty_format_specifierJs
z$TestCase.test_empty_format_specifiercCspddd�}d}|�|d�d�|�|d�d�|�||�d�|�dj|d�d�|�dj|d�d�dS)	Nr�Zinteger)rzrrrzz{d[a]})r�z{d[0]})rr )r	r�rzr
r
r�test_str_format_differencesQs�z$TestCase.test_str_format_differencescCs(|�tdddg�|�tdddg�dS)NZunsupportedzf'{(lambda: 0):x}'zf'{(0,):x}'zUnknown format codezf'{1000:j}')rr�rsr)r
r
r�test_errors\s����zTestCase.test_errorsc	Cs�t��4}tj�|d�}t|ddd��
}|�d�Wd�n1s"wYt|dd�\}}}Wd�n1s:wY|�|�dd�|�dS)	Nzt.py�wzutf-8)�encodingzf"{a b}"�ascii)ZPYTHONIOENCODING�backslashreplace)	r�os�path�join�open�writerr��encode)r	�cwdZ	file_pathrnrb�stderrr
r
r�test_filename_in_syntaxerrorgs���z%TestCase.test_filename_in_syntaxerrorcCs,td�D]}|�d|��dt|��qdS)Ni�zi:)r�rr)r	r�r
r
r�	test_loopqs�zTestCase.test_loopcCsXdddd�}|�|d�d�|�|d�d�|�|d�d�|�|d�d�dS)NZdquoteZsquoter�)r�r�r�r�r�r�r|r�r
r
r�	test_dictus�zTestCase.test_dictcCs$|�td�d�|�td�d�dS)Nzf"\
"rzf"\
")rrr)r
r
r�test_backslash_char�szTestCase.test_backslash_charcs�d�|�d���dt���|�d���dt���|�d���dt���|�d���dt���|�d���dt���d�|�d�d��dt�d��|�d����dt�d��|�d�d��dtt��d��|�d�d��dtt��d��|�d�d��dtt��d��d�|�d	d
�d��d�d
}|�d|d��d�|�dd��d�|�ddd��d�d�d}|�d|�d�d�|�dd
��d�|�ddk�d �|�ddk�d!�|�ddk�d!�|�ddk�d �|�d"��d"�|��d"�|�d#��d"�|��d#�|�d$�d$�d%�|��d&�d'��fd(d)�}d�|�|d*d+��d,�|��d*�|�|d-d+��d*�|��d-�Gd.d/�d/�}|�d0|���d1�|�d0|���d1�|�d0|����d2�|�d0|�d3��d4�|�d0|�d5��d6�|�d0|�d��d7�|�ttd8�d9�|�d:��d;�d:t��d;�|�d<��d;�d<t��d;�|�d=��d;�d=t��d;�|�d>��d;�d>t��d;�dS)?NzA stringr�zx =g����	�@z.2frz^20�	z3*x+15=r:rgz	3*x+15=42gffffff?@utenπ=utenπ=31.40u"Σ"=uΣu	"Σ"='Σ'z3.1415=go���!	@z.1fz*^20z*****3.1415=3.1*****uπualpha α pi=u	 ω omegaualpha α pi='π' ω omegaz
3
=z
3
=3rr9r�r��5rZ�=��=10�
        20cs�}|�|Sr�r
)rzZoldxr�r
rrn�sz)TestCase.test_debug_conversion.<locals>.fz3=)rzr�r,c@r%)z)TestCase.test_debug_conversion.<locals>.CcSs
d|��S)NzFORMAT-r
)r	r�r
r
rr�r+z4TestCase.test_debug_conversion.<locals>.C.__format__cSr)NZREPRr
r)r
r
r�__repr__�rz2TestCase.test_debug_conversion.<locals>.C.__repr__N)rrrrr&r
r
r
r�C�r.r'zC()=zC()=REPRzC()=FORMAT-r{zC()=FORMAT- r"zC()=FORMAT-xzC()=********REPR********zf'{C=]'r�zXx=r�zXx  =zXx=  zXx  =  )r�reprrrr r�rxr)r	ttenπ�pirnr'r
r�r�test_debug_conversion�sn"""��   $zTestCase.test_debug_conversioncCs6d}|�|d�d�|�d}�d�|�|d�dS)Nr#r$r%r�r�r|r�r
r
r�test_walrus�szTestCase.test_walruscCs>|�td��tddd�Wd�dS1swYdS)Nr�z
f'{a $ b}'�?r0)rrxr3r)r
r
r�!test_invalid_syntax_error_message�s"�z*TestCase.test_invalid_syntax_error_messagecC�Dt�d�}|�t|��
dd�Wd�dS1swYdS)NzCannot specify ',' with ','.r9z,,��re�escaperrs�r	Z	error_msgr
r
r�(test_with_two_commas_in_format_specifier��

"�z1TestCase.test_with_two_commas_in_format_specifiercCr.)NzCannot specify '_' with '_'.r9�__r/r2r
r
r�,test_with_two_underscore_in_format_specifierr4z5TestCase.test_with_two_underscore_in_format_specifiercCr.)N� Cannot specify both ',' and '_'.r9z,_r/r2r
r
r�8test_with_a_commas_and_an_underscore_in_format_specifierr4zATestCase.test_with_a_commas_and_an_underscore_in_format_specifiercCr.)Nr7r9z_,r/r2r
r
r�7test_with_an_underscore_and_a_comma_in_format_specifierr4z@TestCase.test_with_an_underscore_and_a_comma_in_format_specifiercCs�t�d�}|�t|��tddd�Wd�n1swYt�d�}|�t|��tddd�Wd�dS1s>wYdS)Nz"cannot use starred expression herezf'{*a}'r,r0z)cannot use double starred expression herezf'{**a}')r0r1rrxr3r2r
r
r�)test_syntax_error_for_starred_expressionss
�
"�z2TestCase.test_syntax_error_for_starred_expressionsN)Hrrrrr$r7rPrVrYr]rdrfrkrrrtruryr}rr�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�r�r�r�r�r�rrrrr
rrrrrrr*r+r-r3r6r8r9r:r
r
r
rrs�4-B25		#%(7
			

!%&
h
r�__main__)r1rr0rr�r�Ztest.support.os_helperrZtest.support.script_helperrr�rr�mainr
r
r
r�<module>s.		�
© 2025 GrazzMean