
    /hh                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJrJr  Sr " S S\R"                  5      r\S:X  a  \R&                  " 5         gg)	    N)support)temp_cwd)assert_python_failureassert_python_okzglobal variablec                      \ 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\R.                  " \R2                  S5      S 5       r\R.                  " \R2                  S5      S 5       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+ r0S, r1S- r2S. r3S/ r4S0 r5S1 r6S2 r7S3 r8S4 r9S5 r:S6 r;S7 r<S8 r=S9 r>S: r?S; r@S< rAS= rBS> rCS? rDS@ rESA rFSB rGSC rHSD rISE rJSF rKSG rLSH rMSI rNSJ rOSK rPSL rQSM rRSN rSSO rTSP rUSQ rVSR rWSS rXST rYSU rZSV r[SW r\SX r]SY r^SZ r_S[ r`S\ raS]rbg^)_TestCase    c                     U H@  nU R                  US9   U R                  X5         [        U5        S S S 5        S S S 5        MB     g ! , (       d  f       N= f! , (       d  f       Me  = f)Nstr)subTestassertRaisesRegexeval)selfexception_typeregexerror_stringsr   s        :/opt/python-3.13.8/usr/lib/python3.13/test/test_fstring.pyassertAllRaiseTestCase.assertAllRaise!   sM     C#&++NBI C '& !BB '&s!   AAA
AA
A(	c                 D    " S S5      nU" 5       nU" 5       n[         R                  " S U5      Ul        U R                  U [	        U5      5        U R                  U S5        U R                  [	        U5      [	        U5      5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  [        U5      R                  US5      S5        U R                  [        U5      R                  US5      S5        g )Nc                       \ rS rSrS rSrg)(TestCase.test__format__lookup.<locals>.X)   c                     g)Nclass r   specs     r   
__format__3TestCase.test__format__lookup.<locals>.X.__format__*   s        r   N__name__
__module____qualname____firstlineno__r    __static_attributes__r   r"   r   Xr   )   s    r"   r)   c                     g)Ninstancer   r   s     r   <lambda>/TestCase.test__format__lookup.<locals>.<lambda>2   s    :r"   r    r+   )types
MethodTyper    assertEqualformattype)r   r)   xys       r   test__format__lookupTestCase.test__format__lookup'   s    	 	 C C''(EqIA3+A3)F1I.
 	b)73b):6 	a++Ar2G<a++Ar2G<r"   c                      " S S5      nU" 5       nSn[         R                  " U5      n[        USS5      nU R                  UR                  5        [        U5        U R                  UR                  5        g )Nc                        \ rS rSrS rS rSrg)TestCase.test_ast.<locals>.XD   c                     SU l         g )NFcalledr   s    r   __init__%TestCase.test_ast.<locals>.X.__init__E   s	    #r"   c                     SU l         g)NT   r=   r?   s    r   __call__%TestCase.test_ast.<locals>.X.__call__G   s    "r"   r=   N)r$   r%   r&   r'   r@   rD   r(   r   r"   r   r)   r:   D   s    $r"   r)   
a = 10
f'{a * x()}'r.   exec)astparsecompileassertFalser>   rG   
assertTrue)r   r)   r4   exprtcs         r   test_astTestCase.test_astB   sh    	 	 C IIdOAr6" 	" 	Q 	!r"   c                 H   Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        U R                  [        UR                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      [         R                   5        U R                  [        UR"                  5      [         R$                  5        U R                  [        UR&                  5      [         R(                  5        U R                  UR                  S5        U R                  UR                  R                  S5        U R                  UR&                  R                  S5        U R                  UR*                  S5        U R                  UR                  R*                  S5        U R                  UR&                  R*                  S5        g )NrF      r            )rH   rI   r1   r3   ModulelenbodyAssignlinenoExprvalue	JoinedStrvaluesFormattedValueBinOpleftNameopMultrightCall
col_offsetr   rM   rN   binops       r   test_ast_line_numbersTestCase.test_ast_line_numbersZ   s    IIdOa#**-QVVa(affQi#**5))1-affQi#((3affQioo.>QVVAY__334a8affQioo44Q78#:L:LM))1-//3//2991=q	&&q)//ecii0ejj)3884ehh2ekk*CHH5q)**A.++Q/))1-..2//3r"   c                    Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  UR                  S   R                  S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   R                  5      [        5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   R                  5      [        5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                   5      [         R"                  5        U R                  [        UR$                  5      [         R&                  5        U R                  [        UR(                  5      [         R*                  5        U R                  UR                  S5        U R                  UR                   R                  S5        U R                  UR(                  R                  S5        U R                  UR,                  S5        U R                  UR                   R,                  S5        U R                  UR(                  R,                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                   5      [         R"                  5        U R                  [        UR$                  5      [         R.                  5        U R                  [        UR(                  5      [         R*                  5        U R                  UR                  S5        U R                  UR                   R                  S5        U R                  UR(                  R                  S5        U R                  UR,                  S	5        U R                  UR                   R,                  S	5        U R                  UR(                  R,                  S
5        g )Nz8
f'no formatted values'
f'eggs {a * x()} spam {b + y()}'rS   r   rT   rC   rU               )rH   rI   r1   r3   rW   rX   rY   r\   r]   r^   r[   r_   Constantr   r`   ra   rb   rc   rd   re   rf   rg   rh   Add)r   rM   rN   binop1binop2s        r   .test_ast_line_numbers_multiple_formattedvalues7TestCase.test_ast_line_numbers_multiple_formattedvaluesy   sw   $ IIdOa#**-QVVa(affQi#((3affQioo.>))1-affQi#((3affQioo.>QVVAY__334a8affQioo44Q78#,,GaffQioo44Q7==>DaffQioo44Q78#:L:LMaffQioo44Q78#,,GaffQioo44Q7==>DaffQioo44Q78#:L:LM))1-//3//2991=//2991=//2991=//2991=''*00fsyy1fkk*CHH5fii#((3fll+SXX6*++Q/,,a0**A.//300"5''*00fsyy1fkk*CHH5fii#''2fll+SXX6*++Q/,,a0**B///400"5r"   c                 `   Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        U R                  [        UR                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      [         R                   5        U R                  [        UR"                  5      [         R$                  5        U R                  [        UR&                  5      [         R                  5        U R                  UR                  S5        U R                  UR                  R                  S5        U R                  UR&                  R                  S5        U R                  UR(                  S5        U R                  UR                  R(                  S5        U R                  UR&                  R(                  S5        U R                  [        UR&                  R                  5      S5        U R                  [        UR&                  R                  S   5      [         R*                  5        U R                  [        UR&                  R                  S   R                  5      [,        5        U R                  [        UR&                  R                  S   5      [         R                  5        U R                  [        UR&                  R                  S   5      [         R*                  5        U R                  [        UR&                  R                  S   R                  5      [,        5        U R                  UR&                  R                  S   R                  S5        U R                  UR&                  R                  S   R                  S5        U R                  UR&                  R                  S   R                  S5        UR&                  R                  S   R                  nU R                  [        U5      [         R.                  5        U R                  UR                  S5        U R                  UR(                  S5        g )Nz
a = 10
f'{a * f"-{x()}-"}'rS   r   rT   rU   rV      )rH   rI   r1   r3   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rh   rr   r   rg   )r   rM   rN   rj   calls        r   test_ast_line_numbers_nested%TestCase.test_ast_line_numbers_nested   si    IIdOa#**-QVVa(affQi#**5))1-affQi#((3affQioo.>QVVAY__334a8affQioo44Q78#:L:LM))1-//3//2991=q	&&q)//ecii0ejj)3884ehh2ekk*CMM:q)**A.++Q/))1-..2//3U[[//0!4ekk0034cllCekk00399:C@ekk0034c6H6HIekk0034cllCekk00399:C@++A.55q9++A.55q9++A.55q9{{!!!$**dSXX.a("-r"   c                    Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        U R                  [        UR                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   R                  5      [        5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   R                  5      [        5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                   5        U R                  [        UR"                  5      [         R$                  5        U R                  [        UR&                  5      [         R(                  5        U R                  [        UR*                  5      [         R,                  5        U R                  UR                  S5        U R                  UR"                  R                  S5        U R                  UR*                  R                  S5        U R                  UR.                  S5        U R                  UR"                  R.                  S5        U R                  UR*                  R.                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                   5        U R                  [        UR"                  5      [         R$                  5        U R                  [        UR&                  5      [         R(                  5        U R                  [        UR*                  5      [         R,                  5        U R                  UR                  S5        U R                  UR"                  R                  S5        U R                  UR*                  R                  S5        U R                  UR.                  S	5        U R                  UR"                  R.                  S	5        U R                  UR*                  R.                  S
5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                   5        U R                  [        UR"                  5      [         R$                  5        U R                  [        UR&                  5      [         R(                  5        U R                  [        UR*                  5      [         R,                  5        U R                  UR                  S5        U R                  UR"                  R                  S5        U R                  UR*                  R                  S5        U R                  UR.                  S5        U R                  UR"                  R.                  S5        U R                  UR*                  R.                  S5        g )Nz)
a = 10
f'{a * x()} {a * x()} {a * x()}'
rS   r   rT      rU   rC   rV         rp   rq   )rH   rI   r1   r3   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   rr   r   ra   rb   rc   rd   re   rf   rg   rh   ri   s       r   *test_ast_line_numbers_duplicate_expression3TestCase.test_ast_line_numbers_duplicate_expression   s    IIdOa#**-QVVa(affQi#**5))1-affQi#((3affQioo.>QVVAY__334a8affQioo44Q78#:L:LMaffQioo44Q78#,,GaffQioo44Q7==>DaffQioo44Q78#:L:LMaffQioo44Q78#,,GaffQioo44Q7==>DaffQioo44Q78#:L:LM))1-//3//2991=//2991=//2991=//2991=//2991=q	&&q)//ecii0ejj)3884ehh2ekk*CHH5q)**A.++Q/))1-..2//3q	&&q)//ecii0ejj)3884ehh2ekk*CHH5q)**A.++Q/))2...3//4q	&&q)//ecii0ejj)3884ehh2ekk*CHH5q)**A.++Q/))2...3//4r"   c                    [         R                  " S5      nU R                  [        UR                  5      S5        U R                  UR                  S   R
                  S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        UR                  S   R                  R                  u  p#nUR                  nU R                  [        U5      [         R                  5        U R                  UR
                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                   S5        g )Nz%f"Here is that pesky {xxx:.3f} again"rT   r   rU   rS         )rH   rI   r1   rX   rY   r[   r3   r\   r]   r^   r_   rr   r`   rc   
end_linenorh   end_col_offset)r   rN   _rM   names        r   (test_ast_numbers_fstring_with_formatting1TestCase.test_ast_numbers_fstring_with_formatting  s   II=>QVVa())1-affQi#((3affQioo.>QVVAY__334a8affQioo44Q78#,,GaffQioo44Q78#:L:LMaffQioo44Q78#,,GVVAY__++
zzdSXX.a(!,"-,,b1r"   c                 r   Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        U R                  [        UR                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   R                  5      [        5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  [        UR                  S   R                  R                  S   R                  5      [        5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                   S5        U R                  UR                  S   R                  R                   S5        U R                  UR                  S   R                  R                  S   R                   S5        U R                  UR                  S   R                  R                  S   R                   S5        U R                  UR                  S   R                  R                  S   R                   S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R"                  5        U R                  [        UR$                  5      [         R&                  5        U R                  [        UR(                  5      [         R*                  5        U R                  [        UR,                  5      [         R.                  5        U R                  UR                  S5        U R                  UR$                  R                  S5        U R                  UR,                  R                  S5        U R                  UR                   S5        U R                  UR$                  R                   S5        U R                  UR,                  R                   S	5        S
n[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        U R                  [        UR                  S   5      [         R                  5        U R                  [        UR                  S   R                  5      [         R                  5        U R                  [        UR                  S   R                  R                  5      S5        U R                  [        UR                  S   R                  R                  S   5      [         R                  5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                  R                  S   R                  S5        U R                  UR                  S   R                   S5        U R                  UR                  S   R                  R                   S5        U R                  UR                  S   R                  R                  S   R                   S5        U R                  UR                  S   R                  R                  S   R                   S5        U R                  UR                  S   R                  R                  S   R                   S5        U R                  UR                  S   R                  R                  S   R                  R                  S5        U R                  UR                  S   R                  R                  S   R                  R0                  S5        U R                  UR                  S   R                  R                  S   R                  R                   S5        U R                  UR                  S   R                  R                  S   R                  R2                  S5        g )Nz?
a = 10
f'''
  {a
     *
       x()}
non-important content
'''
rS   r   rT   rU   rC      ry   rV   z$
a = f'''
          {blech}
    '''
rn   
   r      )rH   rI   r1   r3   rW   rX   rY   rZ   r[   r\   r]   r^   r_   rr   r   r`   rh   ra   rb   rc   rd   re   rf   rg   r   r   ri   s       r   'test_ast_line_numbers_multiline_fstring0TestCase.test_ast_line_numbers_multiline_fstring3  s    IIdOa#**-QVVa(affQi#**5))1-affQi#((3affQioo.>QVVAY__334a8affQioo44Q78#,,GaffQioo44Q7==>DaffQioo44Q78#:L:LMaffQioo44Q78#,,GaffQioo44Q7==>D))1-//3//2991=//2991=//2991=--q133Q7//2==qA//2==qA//2==rB q	&&q)//ecii0ejj)3884ehh2ekk*CHH5q)**A.++Q/))1-..2//3
 IIdOa#**-QVVa(affQi#**5affQioo.>QVVAY__334a8affQioo44Q78#:L:LM))1-//3//2991=//2991=//2991=--q133Q7//2==qA//2==rB//2==rB//288??C//288CCQG//288CCRH//288GGLr"   c                 l   Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   R                  nU R                  [        U5      [         R                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  S   R                  R                  S   nU R                  [        U5      [         R                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  S   R                  R                  S   R                  nU R                  [        U5      [         R                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S	5        U R                  UR                  S
5        Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  u  pgUR                  R                    Vs/ s H  nUR                  UR                  4PM     n	nU R#                  [%        S U	 5       5      5        UR                  R                    Vs/ s H  nUR                  UR                  4PM     n	nU R#                  [%        S U	 5       5      5        Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   R                  R                   S   n
U R                  [        U
5      [         R                  5        U R                  [        U
R                  5      S5        U
R                  u  pnU R                  [        U5      [         R&                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  nU R                  [        U5      [         R                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  [        U5      [         R&                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  U
R                  S5        g s  snf s  snf )Nz
x = (
    f" {test(t)}"
)rT   r   rU   rC   r   rV   r   rn      z
x = (
    u'wat',
    u"wat",
    b'wat',
    b"wat",
    f'wat',
    f"wat",
)

y = (
    u'''wat''',
    u"""wat""",
    b'''wat''',
    b"""wat""",
    f'''wat''',
    f"""wat""",
)
        rS   c              3   ,   #    U  H
  nUS :H  v   M     g7f))rC   r   Nr   .0offsets     r   	<genexpr>BTestCase.test_ast_line_numbers_with_parentheses.<locals>.<genexpr>        
! g!   c              3   ,   #    U  H
  nUS :H  v   M     g7f))rC      Nr   r   s     r   r   r     r   r   zv
x = (
        'PERL_MM_OPT', (
            f'wat'
            f'some_string={f(x)} '
            f'wat'
        ),
)
r~   r      rq      r   r	      )rH   rI   r1   r3   rW   rX   rY   r]   r^   r[   r   rh   r   r_   r`   rg   eltsrL   allrr   )r   rM   rN   	joinedstrfvrz   r4   r5   eltoffsetsfstringwat1middlewat2s                 r   &test_ast_line_numbers_with_parentheses/TestCase.test_ast_line_numbers_with_parentheses  s    IIdOa#**-QVVa(FF1IOO	i#--8))1---q1--q11126VVAY__##A&b3#5#56A&****B/vvay%%a(..dSXX.a(!,!,,,b1& IIdOa#**-QVVa(vv
 ww||
# ^^S//0# 	 
 	 
!
 
 	 ww||
# ^^S//0# 	 
 	 
!
 
 	
 IIdOa#**-QVVa(&&)//&&q)g6W^^,a0$^^ddS\\2a(!,"-,,b1||dSXX.a(!,"-,,b1dS\\2a(!,"- 	,,b1//4u

s   -"Z,
"Z1c                    Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   nU R                  [        U5      [         R                  5        UR                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        g )Nz
f'{expr:}'rT   r   )rH   rI   r1   r3   rW   rX   rY   r]   r^   r_   r`   format_spec)r   rM   modr   r   r   s         r   "test_ast_fstring_empty_format_spec+TestCase.test_ast_fstring_empty_format_spec  s    iiocCJJ/SXX*((1+##g6W^^,a0^^Ab3#5#56nnk*CMM:[//0!4r"   c                    Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   nU R                  [        U5      [         R                  5        UR                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   nU R                  [        U5      [         R                  5        U R                  UR                  R                  S5        Sn[         R                  " U5      nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   R                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   nU R                  [        U5      [         R                  5        UR                  nU R                  [        U5      [         R                  5        U R                  [        UR                  5      S5        UR                  S   nU R                  [        U5      [         R                  5        U R                  UR                  R                  S5        UR                  S   nU R                  [        U5      [         R                  5        U R                  UR                  R                  S5        g )	Nzf'{1:{name}}'rT   r   r   zf'{1:{name1}{name2}}'rS   name1name2)rH   rI   r1   r3   rW   rX   rY   r]   r^   r_   r`   r   id)r   rM   r   r   r   r   format_spec_values          r   test_ast_fstring_format_spec%TestCase.test_ast_fstring_format_spec  s   iiocCJJ/SXX*((1+##g6W^^,a0^^Ab3#5#56nnk*CMM:[//0!4'..q1/0#2D2DE*0033V<&iiocCJJ/SXX*((1+##g6W^^,a0^^Ab3#5#56nnk*CMM:[//0!4'..q1/0#2D2DE*0033W='..q1/0#2D2DE*0033W=r"   c                 |    S nU R                  UR                  5        S nU R                  UR                  5        g )Nc                      g Nr   r   r"   r   f"TestCase.test_docstring.<locals>.f8  s    r"   c                      g r   r   r   r"   r   g"TestCase.test_docstring.<locals>.g;  s    !r"   )assertIsNone__doc__)r   r   r   s      r   test_docstringTestCase.test_docstring7  s2    	#!))$	 	!))$r"   c                     U R                  [        S5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)Nzmalformed node or stringzf'x')r   
ValueErrorrH   literal_evalr?   s    r   test_literal_evalTestCase.test_literal_eval@  s.    ##J0JKV$ LKKs	   7
Ac                     S/nSn[         R                  " U5      n[        USS5      n[        U5        U R	                  US   S5        g )Nr.   zx[0] = 'foo' f'{3}'rG   r   foo3)rH   rI   rJ   rG   r1   )r   r4   rM   rN   rO   s        r   test_ast_compile_time_concat%TestCase.test_ast_compile_time_concatD  sD    D(IIdOAr6"Q1v&r"   c                 6    U R                  [        SSS/5        g )Nz&cannot mix bytes and nonbytes literalszf'' b''zb'' f''r   SyntaxErrorr?   s    r   test_compile_time_concat_errors(TestCase.test_compile_time_concat_errorsM  s     KD++	 r"   c                 p    U R                  SS5        U R                  SS5        U R                  SS5        g )Nr.   a r1   r?   s    r   test_literalTestCase.test_literalT  s2    b!1s#1s#r"   c                 6    U R                  [        S/ SQ5        g )Nzunterminated string)zf'{"x'zf'{"x}'zf'{("x'zf'{("x}'r   r?   s    r   test_unterminated_string!TestCase.test_unterminated_stringY  s    K)>	 r"   zexhausts limited stack on WASIc                 *   U R                  [        SS/5        U R                  [        SS/5        U R                  [        SS/5        U R                  [        SS/5        U R                  [        SS	/5        U R                  [        [        S
5        g )Nz@closing parenthesis '\}' does not match opening parenthesis '\('zf'{((}'z@closing parenthesis '\)' does not match opening parenthesis '\['z	f'{a[4)}'z@closing parenthesis '\]' does not match opening parenthesis '\('z	f'{a(4]}'z@closing parenthesis '\}' does not match opening parenthesis '\['zf'{a[4}'zf'{a(4}'a  f'{((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((}')r   r   assertRaisesr   r?   s    r   test_mismatched_parensTestCase.test_mismatched_parensa  s    K *G& 	  	K *G( 	 	K *G( 	 	K *G' 	 	K *G' 	 	+t-CDr"   c                 ~   ^ U R                  [        SS/5        U4S jmU R                  [        ST" S5      /5        g )Nz'f-string: expressions nested too deeplyzf"{1+2:{1+2:{1+1:{1}}}}"c                 4   > U S:X  a  gT" U S-
  5      nSU S3$ )Nr   z1+1rT   zf"{z}"r   )nprevcreate_nested_fstrings     r   r   FTestCase.test_fstring_nested_too_deeply.<locals>.create_nested_fstring  s*    Av(1-D$s##r"   ztoo many nested f-strings   r   )r   r   s    @r   test_fstring_nested_too_deeply'TestCase.test_fstring_nested_too_deeplyy  sA    KE78	:	$ 	K72378	:r"   c                 4    U R                  [        SS/5        g )Ninvalid syntaxa  f"{1 1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:{f"1:r   r?   s    r   #test_syntax_error_in_nested_fstring,TestCase.test_syntax_error_in_nested_fstring  s    K,89	;r"   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S	S	5        U R                  S
S
5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS 3S5        U R                  SS 3S5        U R                  SS 3S5        U R                  SS 3S5        U R                  S S3S5        U R                  S S3S5        U R                  S S3S5        U R                  S S3S5        U R                  S S5        U R                  [        SS/5        g ) N{za{z{bza{b}za}z}bza}bz{}za{}z{b}z{}cza{b}za{}cz{b}cza{b}cr   z{10z}10z}{z}{10z}a{z}a{10z10{z10}z10}{z}a{}z10}a{}z{{}}zunhashable typezf'{ {{}} }')r1   r   	TypeErrorr?   s    r   test_double_bracesTestCase.test_double_braces  s   2$3&3&4%(2$3&3&4%(4$'55)55)55)6F+6F+6F+7W-2bTE*2bTE*4tf-5w/B4rE*B4rE*B4tf-B4z)84 	F8f-I'8* 	 r"   c                 *   SnU R                  SU S3S5        U R                  SU S3S5        U R                  SU SUS 3S5        U R                  S	U 3S
5        U R                  SU 3S5        U R                  S	U 3S
5        U R                  SU 3S5        U R                  SU 3S5        U R                  SU 3S5        U R                  U S3S5        U R                  U S5        U R                  U S5        U R                  U S5        U R                  U S3S5        U R                  SU S3S5        U R                  SU 3S5        U R                  U SU 3S5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S S5        U R                  [        SS/5        g )Ndefzabc## ghizabc## defghiabc	abcdefghi4zabcdefghidef z{x}z{x}defz{xz{xdefz{{x}}z{{x}}defz{{xz{{xdefzx}}zx}}defzdefx}}2def211def21def-zdef-defr.   z fzexpecting '}'z
f'{3' f"}"r1   r   r   r   r4   s     r   test_compile_time_concat!TestCase.test_compile_time_concat  s$   QCs+^<!e+[9!hqe4oF!x0g.!x0A34!x0!x0A3x0A3E*qcu-qcE*A3V,sC1sV,A3!A33$B'+b!$R(+ 	D6D)K- 	 r"   c                    SS0nU R                  S S5        U R                  US    S5        U R                  [        S/ SQ5        U R                  [        SS/5        U R                  SS 3S	5        U R                  S
S 3S5        U R                  S
S 3S5        U R                  SS 3S5        U R                  S
S 3S5        U R                  [        SS/5        g )N#hashz'{' was never closed)zf'{1#}'zf'{#}'zf'one: {1#}'z(f'{1# one} {2 this is a comment still#}'f-string: unmatched '\)'zf'{)#}'zA complex trick: rS   zA complex trick: 2
*   z
42z
# this is not a comment
r   z
# this is not a comment
6V   z
86.f-string: valid expression required before '}'zf'''
{
# only a comment
}'''
r   r   ds     r   test_commentsTestCase.test_comments  sL   &MC53'AcF8f-K)?	  	K)D& 	  	. / 	 	 
 	 	 
 	 	  
(		)
 	   		 	K)Z 	 r"   c                 r   SS jnSnSn[        SS5       H*  nU R                  [        U" U5      5      US-   U-  5        M,     U R                  [        U" S5      S-  5      US-   S	-  5        U" S
S5      nU R                  [        U5      US-   S-  5        SS-  nU R                  [        U5      S5        g )Nc                     SSU -  -   U-   S-   $ )Nf'z{x} 'r   )r   extras     r   
build_fstr2TestCase.test_many_expressions.<locals>.build_fstr  s    6A:&.44r"   r)   rT      i  r         i      z{x:{width}}    zf'{1}' 'x' 'y'i      1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy)r.   )ranger1   r   )r   r  r4   widthiss         r   test_many_expressionsTestCase.test_many_expressions
  s    
	5  sCAT*Q-01S5!)< ! 	joc12QsUW4EFsN+a1S5#+. t#a,/r"   c           	      @   SnSn[         R                  " S5      nU R                  SX1 SU 3 3S5        U R                  SX1< SU 3 3S5        U R                  SX1S SUS 3 3S5        U R                  SUS	 S
S SUS 3 3S5        U R                  SUS	 S
S SUS 3 3S5        U R                  SSS	 S3 S5        U R                  SS SS
 S 3 S5        U R                  SSS SS
 S3 S5        U R                  SS SS	 SS 3 S5        U R                  SSSSS0:g  =(       a    U S3 S5        U R                  SX1S
  SUS 3 3S5        U R                  [        SS/5        U R                  [        SS/5        U R                  [        SS/5        g )Nr   rC   z12.34567zresult: .zresult:      12.350r   rT   r   r  0xz
       0xar4   ir   z
      -0xarU   r~   zf-string: expecting ':' or '}'zf'{"s"!r{":10"}}'0f-string: expecting a valid expression after '{'zf'{4:{/5}}'&f-string: invalid conversion characterzf'{"s"!{"r"}}')decimalDecimalr1   r   r   )r   r  	precisionr]   s       r   !test_format_specifier_expressions*TestCase.test_format_specifier_expressions#  s   	
+8E'9+)=#>?AUV8E)1YK)?#@ACWX8E)1YqM)A#BCEYZ8E1#aU!Ia=)@#ABDXY8EA$!fAy^)C#DEG[\Bq2g;6BuAaSo.>C#as!|,|<CQqc3%/0<@Bqqe!5 6a78<H8E!+Qym)C#DEG[\K)I4 	 
 	KN*	  	K)Q 2	 r"   c                      " S S5      nU R                  U" 5       S S5        U R                  U" 5       S S5        U R                  [        5         [        SSU05        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg);TestCase.test_custom_format_specifier.<locals>.CustomFormatiE  c                     U$ r   r   )r   r   s     r   r    FTestCase.test_custom_format_specifier.<locals>.CustomFormat.__format__F  s    ""r"   r   Nr#   r   r"   r   CustomFormatr/  E  s    #r"   r2  r  u   ☃u   f"{F():¯\_(ツ)_/¯}"F)r1   assertWarnsSyntaxWarningrG   )r   r2  s     r   test_custom_format_specifier%TestCase.test_custom_format_specifierD  sf    	# 	# 	LN2.6LN62U;m,*S,,?@ -,,s   A**
A8c                 T     " S S5      nU" 5       nU R                  U SU 3S5        g )Nc                        \ rS rSrS rS rSrg)*TestCase.test_side_effect_order.<locals>.XiO  c                     SU l         g )Nr   r  r?   s    r   r@   3TestCase.test_side_effect_order.<locals>.X.__init__P  s	    r"   c                 V    U =R                   S-  sl         [        U R                   5      $ )NrT   )r  r   r   s     r   r    5TestCase.test_side_effect_order.<locals>.X.__format__R  s    !466{"r"   r<  N)r$   r%   r&   r'   r@   r    r(   r   r"   r   r)   r:  O  s    #r"   r)   r   z1 2r   )r   r)   r4   s      r   test_side_effect_orderTestCase.test_side_effect_orderN  s/    	# 	# CA3asU+r"   c                     U R                  [        S/ SQ5        U R                  [        S/ SQ5        U R                  [        S/ SQ5        U R                  [        S/ SQ5        U R                  [        S	S
S/5        g )Nr
  )zf'{}'zf'{ }'f' {} 'zf'{10:{ }}'zf' { } 'zf'''{	
}'''z.f-string: valid expression required before '!')zf'{!r}'zf'{ !r}'zf'{!}'zf'''{	
!a}'''zf'{!'zf'{!s:'zf'{!x}'z	f'{ !xr}'zf'{!x:}'z	f'{!x:a}'z
f'{ !xr:}'zf'{ !xr:a}'z.f-string: valid expression required before ':')zf'{:}'zf'{ :!}'zf'{:2}'zf'''{	
:a}'''zf'{:'zF'{[F'{:'}[F'{:'}]]]z.f-string: valid expression required before '=')zf'{=}'zf'{ =}'zf'{ =:}'z
f'{   =!}'zf'''{	
=}'''zf'{='z'invalid non-printable character U\+00A0u   f'''{ }'''    r   r?   s    r   test_missing_expression TestCase.test_missing_expressionY  s    KL		  	KL	 , 	KL	  	KL	  	K)S,#	 r"   c                     U R                  S S5        U R                  [        SS/5        U R                  [        SS/5        g )N)rU   z(3,)r&  zf'{,}'r  z
f'{3)+(4}'r   r?   s    r   test_parens_in_expressions#TestCase.test_parens_in_expressions  sL    B4&)KN% 	 
 	K)D) 	 r"   c                 6    U R                  [        S/ SQ5        g )Nr&  )zf'{.}'z
f'{.}'z

f'{.}'r   r?   s    r   !test_newlines_before_syntax_error*TestCase.test_newlines_before_syntax_error  s    KN4	6r"   c                 ^   U R                  SS5        U R                  SS5        U R                  SS5        U R                  S S3S5        U R                  S SS 3S5        U R                  SS 3S5        U R                  SS5        U R                  S	S	5        U R                  S	S	5        U R                  S S3S
5        U R                  S SS 3S5        U R                  SS 3S5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S S3S
5        U R                  S SS 3S5        U R                  SS 3S5        U R                  SS5        U R                  S S3S
5        U R                  S SS 3S5        U R                  SS 3S5        U R                  S
S
5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S S3S5        U R                  S SS 3S5        U R                  SS 3S5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  [        5         [        S5      nS S S 5        U R                  WS5        U R                  [        5         [        S5      nS S S 5        U R                  US5        U R                  SS 3S5        U R                  SS 3S5        SnU R                  SS5        U R                  SU 3S5        U R                  SU 3S5        U R                  SS5        g ! , (       d  f       N= f! , (       d  f       N= f)N	z\trS   z2	rU   z2	3z	3u   Δz\u0394u   2Δu   2Δ3u   Δ3z
\U00000394r   z\x20z2 z2 3z 3z	f'\{6*7}'z\42zf'\g'z\g\r  spam&z\Nz\Nspamz\&)r1   r4  r5  r   )r   r]   	AMPERSANDs      r   test_backslashes_in_string_part(TestCase.test_backslashes_in_string_part  s   2%&B'A3b5)A3bf-2aS5)6H-I.FY/A3fy1A3fQC*56!y1:16J7A3j)95A3j,j9:aS)959HEA3<=yIA3<QC@*M9!=yI:YG;jI:YG4#&'*D7+A3dT*A3d1#.4sT*54(6E*54(m,&E -'m,NE -&2cUV,AcUV,	 	=3/3yk*I6Byk*I6?U3 -, -,s   1N,N
N
N,c                 6    U R                  [        S/ SQ5        g )Nzi\(unicode error\) 'unicodeescape' codec can't decode bytes in position .*: malformed \\N character escape)
zf'\N'zf'\N 'zf'\N  'zf'\N{'z f'\N{GREEK CAPITAL LETTER DELTA'z'\N'z'\N 'z'\N  'z'\N{'z'\N{GREEK CAPITAL LETTER DELTA'r   r?   s    r   %test_misformed_unicode_character_name.TestCase.test_misformed_unicode_character_name  s     	K  *V	 r"   c                     U R                  S S5        U R                  SS5        U R                  S S5        U R                  S S5        U R                  [        SS/5        g )NrU   3r   r
  zf'{
}'r   r?   s    r   #test_backslashes_in_expression_part,TestCase.test_backslashes_in_expression_part  su     	
 	13745<56=KL& 	 r"   c           	          S VVs/ s H  nS  H  nUR                  US9PM     M     nnnU R                  [        SU5        g s  snnf )N)z{expr}zf'{{{expr}}}'zrf'{{{expr}}}')z\'a\'z\t3rN  )rM   z,unexpected character after line continuation)r2   r   r   )r   
formattingrM   casess       r   /test_invalid_backslashes_inside_fstring_context8TestCase.test_invalid_backslashes_inside_fstring_context  sd    



 4( ) 	 
 	K)W!	#
s   #Ac                     U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g )Nz{1+1}z{1+1r   r?   s    r   test_no_escapes_for_braces#TestCase.test_no_escapes_for_braces  sE    
 	9w/7V,9v.KgVr"   c                 P    U R                  S S5        U R                  S S5        g )Nr   r$  rV   7r   r?   s    r   test_newlines_in_expressions%TestCase.test_newlines_in_expressions!  s/    A3%   
	r"   c                   ^ SmU R                  U4S j" S5      < S5        U R                  U4S j" S5      <S S5        U R                  U4S j" S5      S S	5        U R                  [        S
/ SQ5        U R                  [        S5         [	        SSS5        S S S 5        U R                  [        S5         [        S5        S S S 5        g ! , (       d  f       N9= f! , (       d  f       g = f)Nr~   c                    > TU -  $ r   r   r5   r4   s    r   r,   &TestCase.test_lambda.<locals>.<lambda>(  	    acr"   8z'88888'c                    > TU -  $ r   r   ri  s    r   r,   rj  )  rk  r"   10z
'88888'   c                    > TU -  $ r   r   ri  s    r   r,   rj  *  rk  r"   z
88888     z@f-string: lambda expressions are not allowed without parentheses)zf'{lambda x:x}'zf'{lambda :x}'zf'{lambda *arg, :x}'zf'{1, lambda:x}'zf'{lambda x:}'zf'{lambda :}'r   z)lambda name_3=f'{name_4}': {name_3}
1 $ 1<string>rG   r&  zf'{+ lambda:None}')r1   r   r   r   rJ   r   r   s    @r   test_lambdaTestCase.test_lambda&  s    \3/2Y?\3/5"5E\3/3lC
 	K2		  ##K1AB@*fU C ##K1cd%& ed	 CB eds   C:C 
C 
C.c                 v    U R                  S S5        U R                  S S5        U R                  S S5        g )NrT   r   rS   r   rU   rX  r   r?   s    r   test_valid_prefixesTestCase.test_valid_prefixesB  s8    A3%QC#&QC#&r"   c                     U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g )Nz\'z\"z\"\'z\'\"z\"\'\"z\'\"\'z\"\'\"\'r   r?   s    r   test_roundtrip_raw_quotes"TestCase.test_roundtrip_raw_quotesG  ss    B'B'D9-D9-F\2F]3H'78r"   c                    / SQnU HX  u  p#U R                  X#S9   U R                  [        5         [        U5      nS S S 5        U R	                  WU5        S S S 5        MZ     U R	                  SS5        U R	                  SS5        U R	                  SS 3S5        U R	                  SS 3S5        U R	                  S S3S	5        g ! , (       d  f       N= f! , (       d  f       M  = f)
N))z	f'\{{\}}'\{\})f'\{{'\{)zf'\{{{1+1}'\{2)zf'\}}{1+1}'\}2)zf'{1+1}\}}'2\})caseexpected_resultrz  r|  rS   r}  z\}r~  r  )r   r4  r5  r   r1   )r   deprecated_casesr  r  results        r   ,test_fstring_backslash_before_double_bracket5TestCase.test_fstring_backslash_before_double_bracketP  s    
 &6!D4I%%m4!$ZF 5  9 JI &6
 	FX.C%(Cuv.Cuv.SEv. 54 JIs!   CCC
CC
C'	c                    U R                  [        5       n[        S5        S S S 5        U R                  [	        WR
                  5      S5        U R                  UR
                  S   R                  [        5        g ! , (       d  f       Na= f)Nr{  rT   r   )r4  r5  r   r1   rX   warningscategory)r   ws     r   7test_fstring_backslash_before_double_bracket_warns_once@TestCase.test_fstring_backslash_before_double_bracket_warns_oncec  s]    m,O -QZZ!,A//? -,s   A==
Bc                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g )NrN  z\\z\\\\r   r?   s    r   !test_fstring_backslash_prefix_raw*TestCase.test_fstring_backslash_prefix_rawi  s    2%4&)B'D7+B'D7+B'D7+B'D7+B'D7+r"   c                 b    U R                  SS S3S5        U R                  SSS 3 S3S5        g )NrT   r.   r   z1}z>3r~   z$                                  1}r   r?   s    r   (test_fstring_format_spec_greedy_matching1TestCase.test_fstring_format_spec_greedy_matchingw  s9    AQ4rD)AbV9B)OPr"   c                     S nU" S5      nU R                  [        U5      S5        U R                  [        U5      S 5        g )Nc              3   *   #    SU S-  v  3  S v    g 7f)Nzy:rS   r   )r5   s    r   fnTestCase.test_yield.<locals>.fn~  s     qsgs   rC   rn   )r1   next)r   r  r   s      r   
test_yieldTestCase.test_yield{  s:    	 qEa!$a$'r"   c                     S nU" S5      n[        U5      nU R                  U" S5      S5        U R                  UR                  S5      S5        g )Nc              3   (   ^ #    SU 4S jv  3v   g 7f)Nx:c                    > TU -  $ r   r   )r  r4   s    r   r,   6TestCase.test_yield_send.<locals>.fn.<locals>.<lambda>  s	    Ar"   r   r4   s   `r   r  $TestCase.test_yield_send.<locals>.fn  s     o./00s   r   rC   (   stringzx:string)r  r1   send)r   r  r   
the_lambdas       r   test_yield_sendTestCase.test_yield_send  sH    	1 rF!W
A+):6r"   c                 4   U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        g )Nr4   zeric'szxeric"syzxeric"szeric"syr   r?   s    r   +test_expressions_with_triple_quoted_strings4TestCase.test_expressions_with_triple_quoted_strings  s    G9s+L>H5 	01J?,-	:,-	:45
C89JG9:ZHr"   c                    SnSnU R                  U U 3S5        U R                  SU U 3S5        U R                  U SU 3S5        U R                  U U S3S5        U R                  SU SU 3S	5        U R                  SU U S3S
5        U R                  U SU S3S5        U R                  SU SU S3S5        g )Nb   r   98abcr)   X98abc98Xabc98abcXYX98YabcX98abcY98XabcYZX98YabcZr   r   r4   r5   s      r   test_multiple_varsTestCase.test_multiple_vars  s    A3qcG,1QCsX.A3asX.A3qcX.1QCqi01QCs!i0A3as!i01QCq1z2r"   c                 ~    S nU R                  U" S5      " 5       S5        U R                  U" S5      " 5       S5        g )Nc                    ^  U 4S jnU$ )Nc                     > ST  3$ )Nr  r   r  s   r   inner3TestCase.test_closure.<locals>.outer.<locals>.inner  s    A3xr"   r   )r4   r  s   ` r   outer$TestCase.test_closure.<locals>.outer  s     Lr"   987zx:987rV   zx:7r   )r   r  s     r   test_closureTestCase.test_closure  s5    	
 	u1qU+r"   c                 ~   ^ SmU4S jnU R                  U" SS5      S5        SnU R                  U" SS5      S5        g )NrS   c                    > SU T-  U  3$ Nx=r   )r4   r  r5   s     r   r   "TestCase.test_arguments.<locals>.f  s    !UG}%%r"   foor   zx=foofoo    barzx=        20r   )r   r   r4   r5   s      @r   test_argumentsTestCase.test_arguments  s@    	& 	5"~62rN3r"   c                 2    SnU R                  SU 3S5        g )N{   v:zv:123r   )r   r]   s     r   test_localsTestCase.test_locals  s    2eWw/r"   c                 t    U R                  [        5         S[         3  S S S 5        g ! , (       d  f       g = f)Nr  )r   	NameErrorr]   r?   s    r   test_missing_variableTestCase.test_missing_variable  s%    y)L *))s   
)
7c                      " S S5      nU R                  U" 5       S S5        U R                  U" 5        S5        U R                  U" 5       S S5        U R                  SS S5        U R                  S<S S5        g )Nc                       \ rS rSrS rSrg),TestCase.test_missing_format_spec.<locals>.Oi  c                     U(       d  gU$ )N*r   r   s     r   r    7TestCase.test_missing_format_spec.<locals>.O.__format__  s    r"   r   Nr#   r   r"   r   Or    s    r"   r  r4   r  r.   rU   rX  r   )r   r  s     r   test_missing_format_spec!TestCase.test_missing_format_spec  sx    	 	 	AC7S)AC53'ACq6C(AQ4#&A6q6C(r"   c                 B   U R                  S[         3S5        U R                  S[        < 3S5        SnU R                  S[         SU 3S5        U R                  S[        < 3S5        U R                  S[         SU< 3S5        U R                  S[         5        g )	Ng:zg:global variablezg:'global variable'local variable l:z"g:global variable l:local variablez$g:global variable l:'local variable'zmodule 'unittest' from)r1   a_globalassertInunittest)r   a_locals     r   test_globalTestCase.test_global  s    2hZ*=>2h\*,AB"2hZs7)4=	?2h\*.	02hZs7+6?	A 	.8*>r"   c                     SnU R                  SU 3S5        U R                  SU< 3S5        SnU R                  SU SU 3S5        U R                  SU< 3S5        U R                  SU SU< 3S5        g )	Nzreally a localr  zg:really a localzg:'really a local'r  r  z!g:really a local l:local variablez#g:really a local l:'local variable'r   )r   r  r  s      r   test_shadowed_globalTestCase.test_shadowed_global  s    #2hZ*<=2h\*,@A"2hZs7)4<	>2h\*-	/2hZs7+6>	@r"   c                 <    S nU R                  U" S5       S5        g )Nc                     S[        U 5      -   $ r  r   r  s    r   r  TestCase.test_call.<locals>.foo  s    #a&= r"   r   zx=10r   )r   r  s     r   	test_callTestCase.test_call  s    	! 	CG9v.r"   c                 d    SnU R                  S S-   S5        U R                  U S-   S5        g )Nr~   r   rU   000555r   )r   r5   s     r   test_nested_fstringsTestCase.test_nested_fstrings  s7    qc1H:.qc1H:.r"   c                     / SQnU Vs/ s H  o"R                  SS5      PM     nnU R                  [        SX-   5        g s  snf )N)zfu''zuf''zFu''zfU''zUf''zuF''zufr''zurf''zfur''zfru''zrfu''zruf''zFUR''zFur''zfb''zfB''zFb''zFB''zbf''zbF''zBf''zBF''r  "r   )replacer   r   )r   single_quote_casesr  double_quote_casess       r   test_invalid_string_prefixes%TestCase.test_invalid_string_prefixes  sN    &, BTTASll34ASTK)9.C	E Us   A c           	      \   U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  SS VVs0 s H  u  pX_M	     snn 3S5        U R                  SS VVs0 s H  u  pX_M	     snn 3S5        g s  snnf s  snnf )NrU   rX  zexpr=))rT   rS   zexpr={1: 2}r   r  s      r   test_leading_trailing_spaces%TestCase.test_leading_trailing_spaces  s    Q4#&a53'A4#&A53'5J"?JDA14J"? @A&	(5J"?JDA14J"? AB&	( #@"?s   B"B(c                     U R                  SS:g   S5        U R                  SS:g  S S5        U R                  SS:g  < S5        U R                  SS:g  <S S5        g )NrU   rC   Truer.   z.3Trur   r?   s    r   test_not_equalTestCase.test_not_equal  sb    
 	AqD6F+AqD7V,AqD8f-AqD;2;/r"   c                 0    U R                  SS:H   S5        g )Nr   rT   Falser   r?   s    r   test_equal_equalTestCase.test_equal_equal(  s     	AqD6G,r"   c                 F   U R                  SS S5        U R                  S<S S5        U R                  S<S S5        U R                  S<S S5        U R                  S S5        U R                  S< S5        U R                  S< S5        U R                  S< S	5        U R                  S<S S5        U R                  S
 S
5        U R                  SS S5        U R                  [        S/ SQ5        U R                  [        S/ SQ5        S H$  nU R                  [        SU-  SU-   S-   /5        M&     S H!  nU R                  [        SSU-   S-   /5        M#     S H!  nU R                  [        SSU-   S-   /5        M#     U R                  [        S/ SQ5        g )NgQ	@z10.10z
      3.14g      ?z
1.25      r   z'a'rU   rX  za!rz!<10.10z
3.14!!!!!!f-string: expecting '}')f'{3!'f'{3!s'zf'{3!g'z&f-string: missing conversion character)zf'{3!}'zf'{3!:'zf'{3!:}')r   AG   äu   ɐzDf-string: invalid conversion character %r: expected 's', 'r', or 'a'zf'{3!z}')rX  !r'  )z sz s zDf-string: conversion type must come right after the exclamation markzFf-string: invalid conversion character 'ss': expected 's', 'r', or 'a')z	f'{3!ss}'z
f'{3!ss:}'zf'{3!ss:s}'r   )r   conv_identifierconv_non_identifierconvs       r   test_conversionsTestCase.test_conversions.  s   D<,7D>5>L9D>5>L9D>5>L9C53'C7U+C7U+ 	A7S)D+U+l; 	E7U+ 	D>L9K)B	  	K)Q	   9O!<>M!N!(?!:T!A BD  9 $, H!(+>!>!E FH $,
  D!4!(4$!6 79   	K8	 r"   c                 6    U R                  [        S/ SQ5        g )Nr   )zf'' = 3z
f'{0}' = xz
f'{x}' = xr   r?   s    r   test_assignmentTestCase.test_assignmenth  s    K):	 r"   c                 6    U R                  [        SSS/5        g )Nr   zdel f''z
del '' f''r   r?   s    r   test_delTestCase.test_delo  s     K)9&)	 r"   c                 @   U R                  [        S/ SQ5        U R                  [        S/ SQ5        U R                  [        SS/5        U R                  S S5        U R                  S S5        U R                  S	S S
3 S5        U R                  SS S
3 S5        g )Nz#f-string: single '}' is not allowed)zf'{{}'zf'{{}}}'zf'}'zf'x}'zf'x}x'z
f'\u007b}'zf'{3:}>10}'zf'{3:}}>10}'r  )zf'{3'r	  zf'{3:'r
  zf'{3!s:'z	f'{3!s:3'zf'x{'zf'x{x'zf'{x'zf'{3:s'zf'{{{'zf'{{}}{'zf'{'zf'{i='r&  zf'{3:{{>10}'r   r   rU   z>10z
}}}}}}}}}3rS   z
{{{{{{{{{2)r   r   r1   r?   s    r   test_mismatched_bracesTestCase.test_mismatched_bracesu  s    K)N
	  	K)B	 " 	KN+ 	  	C53'C53'Ase3Y<,7Ase3Y<,7r"   c                    ^  U 4S jnU 4S jnU 4S jnU" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        g )Nc                 F   > SnU  (       a  SnOSnTR                  X!5        g Nr   rT   rS   r   r4   expectedflagr   s      r   test_fstring2TestCase.test_if_conditional.<locals>.test_fstring  s'    DvT,r"   c                 F   > SnU  (       a  SnOSnTR                  X!5        g r  r   r   s      r   test_concat_empty7TestCase.test_if_conditional.<locals>.test_concat_empty  s'    DCyT,r"   c                 J   > SnSU  3(       a  SnOSnTR                  X!5        g )Nr   r   rT   rS   r   r   s      r   test_concat_non_empty;TestCase.test_if_conditional.<locals>.test_concat_non_empty  s)    DaSzT,r"   r.   rS   r   rT   r   )r   r#  r&  r)  s   `   r   test_if_conditionalTestCase.test_if_conditional  sP    
	-	-	- 	RS!"a #q!b!$c1%r"   c                     SnU R                  U S5        U R                  US S5        U R                  U<S S5        U R                  U<S S5        g )Ntestr.   z'test'r   r   s     r   test_empty_format_specifier$TestCase.test_empty_format_specifier  sY    A3(AQ4&)A6q6F+A6q6H-r"   c                    SSS.nSnU R                  US    S5        U R                  US    S5        U R                  X    S5        U R                  SR                  US9S5        U R                  SR                  US9S5        g )	Nr  integer)r   r   r   r   z{d[a]})r  z{d[0]})r1   r2   )r   r  r   s      r   test_str_format_differences$TestCase.test_str_format_differences  s     AaD6I.AcF8h/AD6I.1-x81-y9r"   c                 h    U R                  [        SSS/5        U R                  [        SSS/5        g )Nunsupportedzf'{(lambda: 0):x}'zf'{(0,):x}'zUnknown format codezf'{1000:j}')r   r   r   r?   s    r   test_errorsTestCase.test_errors  s?    I}2+	  	J(=++	r"   c                 V   [        5        n[        R                  R                  US5      n[	        USSS9 nUR                  S5        S S S 5        [        USS9u    pES S S 5        U R                  WR                  SS5      W5        g ! , (       d  f       NF= f! , (       d  f       NB= f)	Nzt.pyr  utf-8)encodingzf"{a b}"ascii)PYTHONIOENCODINGbackslashreplace)	r   ospathjoinopenwriter   r  encode)r   cwd	file_pathr   r   stderrs         r   test_filename_in_syntaxerror%TestCase.test_filename_in_syntaxerror  s    Z3S&1Iiw71
# 80BIKLAq	  	i&&w0BCVL	 87 Zs"   ,BB		B	
B	B
B(c                 j    [        S5       H$  nU R                  SU 3S[        U5      -   5        M&     g )Ni  zi:)r  r1   r   )r   r  s     r   	test_loopTestCase.test_loop  s.    tAr!Xtc!f}5 r"   c                     SSSS.nU R                  US    S5        U R                  US    S5        U R                  US    S5        U R                  US    S5        g )Ndquotesquoter  )r  r  r  r  r  r  r   r  s     r   	test_dictTestCase.test_dict  sl     	afX(3afX(3AeH:.AeH:.r"   c                 p    U R                  [        S5      S5        U R                  [        S5      S5        g )Nzf"\
"r.   zf"\")r1   r   r?   s    r   test_backslash_charTestCase.test_backslash_char  s,     	i"-i"-r"   c           	      T  ^ SmU R                  ST< 3S[        T5      -   5        U R                  ST< 3S[        T5      -   5        U R                  ST< 3S[        T5      -   5        U R                  ST< 3S[        T5      -   5        U R                  ST< 3S[        T5      -   5        SmU R                  STS 3S[	        TS5      -   5        U R                  STS 3S[	        TS5      -   5        U R                  ST<S 3S[	        [        T5      S5      -   5        U R                  ST<S 3S[	        [        T5      S5      -   5        U R                  ST<S 3S[	        [        T5      S5      -   5        SmU R                  S	S
T-  S-   < 3S5        SnU R                  SUS 3S5        U R                  SS< 3S5        U R                  SSS 3S S5        SnU R                  SU< S3S5        U R                  SS
< 3S5        U R                  SS:H   S 5        U R                  SS:g   S!5        U R                  SS:*   S!5        U R                  SS:   S 5        U R                  S"=m S"5        U R                  TS"5        U R                  S#=m S"5        U R                  TS#5        U R                  S$ S$5        S%mU R                  TS& S'5        U4S( jnSmU R                  U" S)S*9 S+5        U R                  TS)5        U R                  U" S,S*9 S)5        U R                  TS,5        S%nU R                  S-S.U< 3 S/5        U R                  [
        R
                  R                  5       S0U< S1U< S2U< 3 S35         " S4 S55      nU R                  S6U" 5       < 3S75        U R                  S6U" 5       < 3S75        U R                  S6U" 5       S 3S85        U R                  S6U" 5       S9 3S:5        U R                  S6U" 5       S; 3S<5        U R                  S6U" 5       <S 3S=5        U R                  U" 5       S>S%< 3 S?5        U R                  [        [        S@5        SAmU R                  SBT< SC3SB[        T5      -   SC-   5        U R                  SDT< SC3SD[        T5      -   SC-   5        U R                  SET< SC3SE[        T5      -   SC-   5        U R                  SFT< SC3SF[        T5      -   SC-   5        U R                  SGS-S-SH SI3 3SJ5        U R                  SKS
< 3SL5        U R                  SMSN< 3SO5        U R                  SPSQ< 3SR5        U R                  SSST< 3SU5        U R                  SVSW< 3SX5        U R                  SY SY5        g )ZNzA stringr  zx =g	@z.2fr.   z^20	   z3*x+15=rU   r   z	3*x+15=42gffffff?@u   tenπ=u   tenπ=31.40u   "Σ"=u   Σu	   "Σ"='Σ'z3.1415=go!	@z.1fz*^20z*****3.1415=3.1*****u   πu   alpha α pi=u	    ω omegau   alpha α pi='π' ω omegaz
3
=z
3
=3r   rT   r  r  5r~   =   =10
        20c                    > TnU mU$ r   r   )r   oldxr4   s     r   r   )TestCase.test_debug_conversion.<locals>.f<  s    DAKr"   z3=)r   r$  rC   rS   zy=yyyyyyyyyyyyyyyyyyy2zh1y=zh2y=zh3y=zh1y=20h2y=20h3y=20c                        \ rS rSrS rS rSrg))TestCase.test_debug_conversion.<locals>.CiN  c                     SU 3$ )NzFORMAT-r   )r   r  s     r   r    4TestCase.test_debug_conversion.<locals>.C.__format__O  s     }$r"   c                     g)NREPRr   r?   s    r   __repr__2TestCase.test_debug_conversion.<locals>.C.__repr__Q  s    r"   r   N)r$   r%   r&   r'   r    rf  r(   r   r"   r   Cra  N  s    %r"   rh  zC()=zC()=REPRzC()=FORMAT-r   zC()=FORMAT- r4   zC()=FORMAT-xzC()=********REPR********z20=zFORMAT-20=20zf'{C=]'r  zXx=r  zXx  =zXx=  zXx  =  zsadsd 1 + 1 =  1dr   zsadsd 1 + 1 =  2.000000z	1+2 = 
  z
1+2 = 
  3z""" # booo
  """=z
 # booo
  z""" # booo
  """=' # booo\n  'z" # nooo "=z # nooo z" # nooo "=' # nooo 'z" \" # nooo \" "=z " # nooo " z" \" # nooo \" "=' " # nooo " 'z 
  """hello"""=helloz 
  """hello"""='hello'z!# this is not a comment
        a)
r1   reprr   r<  r2   datetimenowr   r   r   )r      tenπpir   r5   rh  r4   s         @r   test_debug_conversionTestCase.test_debug_conversion  s   BA4$a.1CA5547?3BA6D3q6M2BA6D47N3BA6D58O4BAs8dVAu-=&=>BAa54&B-#78BA::vd1gu/E(EFBA::vc!fe/D(DEBA::veAh/F(FGGAaCF9{3 FE3<-8 	ED7]3 	wvsm,T25KL =RE35PQ 	   	 	AqD6G,AqD6F+AqD6F+AqD6G,VQ:,C TQ8c*AC53' 	Ac7\2	
 AI;-D!AF8d+A ArqdU8&<=H--113Eqd%QD1$3FG-	/	 	 	DAC6J/DAC8j1DAC7]3DAC8n5DAC8n5DAC=4=)+EFACv;8+tY7 4QDE$q'M#$56 	6QF!gd1goc&9:6QF!gd1goc&9:8QHA	$q'(9#(=>+%U2Ja<!89;TU C  	 	    	
.	0 	KJ=)+DE-,./1VW  /	1  
0	2r"   c                 ~   [         R                  " 5          [         R                  " S[        5        U R	                  [        S5      S5        S S S 5        U R	                  SS< 3S5        U R	                  SS< 3S	5        U R	                  S
S< 3S5        U R	                  SS< 3S5        g ! , (       d  f       Ng= f)Nignorezf'{b"\N{OX}"=}'zb"\N{OX}"=b'\\N{OX}'zr"\xff"=z\xffzr"\xff"='\\xff'zr"\n"=\nzr"\n"='\\n'z'\''=r  z'\''="'"z'\xc5'=   Åu   '\xc5'='Å')r  catch_warningssimplefilterr5  r1   r   r?   s    r   &test_debug_expressions_are_raw_strings/TestCase.test_debug_expressions_are_raw_strings  s    $$&!!(M:T"89;VW ' 	HG:(>?FE8&89ED7]3GF9~6 '&s   7B..
B<c                 ~    SnU R                  US S5        U R                  S=n S5        U R                  US5        g )NrY  rZ  r[  r   rn  r   r   s     r   test_walrusTestCase.test_walrus  sE     	Ac7\2 	UQ9t,Br"   c                 ~    U R                  [        S5         [        SSS5        S S S 5        g ! , (       d  f       g = f)N/f-string: expecting '=', or '!', or ':', or '}'z
f'{a $ b}'?rG   r   r   rJ   r?   s    r   !test_invalid_syntax_error_message*TestCase.test_invalid_syntax_error_message  s5    ##K$UWL#v.W W Ws   .
<c                     [         R                  " S5      nU R                  [        U5         SS   S S S 5        g ! , (       d  f       g = f)NzCannot specify ',' with ','.rT   z,,reescaper   r   r   	error_msgs     r   (test_with_two_commas_in_format_specifier1TestCase.test_with_two_commas_in_format_specifier  4    II<=	##J	:f ;::	   ;
A	c                     [         R                  " S5      nU R                  [        U5         SS   S S S 5        g ! , (       d  f       g = f)NzCannot specify '_' with '_'.rT   __r  r  s     r   ,test_with_two_underscore_in_format_specifier5TestCase.test_with_two_underscore_in_format_specifier  r  r  c                     [         R                  " S5      nU R                  [        U5         SS   S S S 5        g ! , (       d  f       g = f)N Cannot specify both ',' and '_'.rT   z,_r  r  s     r   8test_with_a_commas_and_an_underscore_in_format_specifierATestCase.test_with_a_commas_and_an_underscore_in_format_specifier  4    II@A	##J	:f ;::r  c                     [         R                  " S5      nU R                  [        U5         SS   S S S 5        g ! , (       d  f       g = f)Nr  rT   z_,r  r  s     r   7test_with_an_underscore_and_a_comma_in_format_specifier@TestCase.test_with_an_underscore_and_a_comma_in_format_specifier  r  r  c                     U R                  [        S5         [        SSS5        S S S 5        U R                  [        S5         [        SSS5        S S S 5        g ! , (       d  f       N;= f! , (       d  f       g = f)Nz!can't use starred expression herezf'{*a}'r  rG   r&  zf'{**a}'r  r?   s    r   )test_syntax_error_for_starred_expressions2TestCase.test_syntax_error_for_starred_expressions  sj    ##K1TUIsF+ V ##K$VXJV,X X VUX Xs   AA+
A(+
A9c                 &   U R                  [        SSS/5        U R                  [        SSS/5        Sn [        USS	5        g ! [         aB  nU R                  UR                  S
5        U R                  UR
                  S5         S nAg S nAff = f)Nzunterminated f-string literalzf"r  z+unterminated triple-quoted f-string literalzf"""zf'''zNx = 1 + 1
y = 2 + 2
z = f"""
sdfjnsdfjsdf
sdfsdfs{1+
2} dfigdf {3+
4}sdufsd""
r  rG   zz = f"""rU   )r   r   rJ   r1   textr[   )r   dataes      r   test_not_closing_quotes TestCase.test_not_closing_quotes  s    K)H4QU,WK)V#V,	.	*D#v& 	*QVVZ0QXXq))	*s   A 
B8BBc                 h    U R                  [        S/ SQ5        U R                  [        SSS/5        g )Nr&  )z	f'{1=}{;'z
f'{1=}{+;'zf'{1=}{2}{;'zf'{1=}{3}{;'r~  z
f'{1=}{1;'zf'{1=}{1;}'r   r?   s    r   test_syntax_error_after_debug&TestCase.test_syntax_error_after_debug  s:    K)[	 	K)Z , -	r"   c                 x   [        5          Sn[        SS5       nUR                  S5        S S S 5        [        U5      u  p4nS S S 5        U R	                  WR                  S5      R                  5       R                  SS5      R                  SS5      S5        g ! , (       d  f       Nt= f! , (       d  f       No= f)	N	script.pyr  zprint(f'''{
3
=}''')r:  z
r  z3
=3)r   rB  rC  r   r1   decodestripr  )r   scriptr   r   stdouts        r   test_debug_in_fileTestCase.test_debug_in_file  s    Z Fk3'1   ( ,F3LAq  	w/557??MUUVZ\`a 	" (' Zs!   B+BB+
B(	$B++
B9c                 l   [        5          Sn[        US5       nUR                  S5        S S S 5        [        U5      u  p4nU R	                  SU5        U R                  [        UR                  5       R                  5       5      S5        S S S 5        g ! , (       d  f       Nn= f! , (       d  f       g = f)Nr  r  zprint(f'\{1}')s   \1rS   )	r   rB  rC  r   r  r1   rX   r  
splitlines)r   r  r   r   r  rG  s         r   .test_syntax_warning_infinite_recursion_in_file7TestCase.test_syntax_warning_infinite_recursion_in_file  s    Z Ffc"a)* # !1 8AvMM&&)S!:!:!<=qA Z"" Zs"   B%BAB%
B"	B%%
B3c           	      h    S nS H)  nU R                  U" SU S35      U" SU S35      5        M+     g )Nc                     [         R                  " U 5       Vs/ s H  oR                  UR                  4PM     sn$ s  snf r   )disget_instructionsopnameoparg)r  r  s     r   get_codeCTestCase.test_fstring_without_formatting_bytecode.<locals>.get_code  s2    141E1Ea1HI1HAXXqww'1HIIIs   !=)r.   zsome stringr  r  r   )r   r  r  s      r   (test_fstring_without_formatting_bytecode1TestCase.test_fstring_without_formatting_bytecode  s>    	J %AX!Ah/Bqc)1DE %r"   c                    U R                  SSS:H  < 3S5        U R                  SSS:H  < 3S5        U R                  SSS:g  < 3S5        U R                  S	SS:g  < 3S
5        U R                  SSS:g  < 3S5        U R                  SSS:g  < 3S5        U R                  SSSs=:g  =(       a    Ss=:H  =(       a    S:g  Os  < 3S5        U R                  SSSs=:H  =(       a    Ss=:g  =(       a    S:H  Os  < 3S5        U R                  SSSS:H  < 3< 3S5        U R                  SSSS:H  < 3< 3S5        U R                  SSSS:g  < 3< 3S5        U R                  SS	SS:g  < 3< 3S5        g )Nz1==2=rT   rS   z
1==2=Falsez1 == 2=z1 == 2=Falsez1!=2=z	1!=2=Truez1 != 2=z1 != 2=Truez	(1) != 2=z(1) != 2=Truez(1*2) != (3)=rU   z(1*2) != (3)=Truez1 != 2 == 3 != 4=rC   z1 != 2 == 3 != 4=Falsez1 == 2 != 3 == 4=z1 == 2 != 3 == 4=Falsezf'{1==2=}'=zf'{1==2=}'='1==2=False'zf'{1 == 2=}'=zf'{1 == 2=}'='1 == 2=False'zf'{1!=2=}'=zf'{1!=2=}'='1!=2=True'zf'{1 != 2=}'=zf'{1 != 2=}'='1 != 2=True'r   r?   s    r   test_gh129093TestCase.test_gh129093  s   EAqD7\2GAF9~6EAqD7[1GAF9}5IQ1H;9MSaL?+-@A-A,,a,,1,./1IJ-A,,a,,1,./1IJKuq!tgJ=)+DEMwqAviL?+-JKKuq!tgJ=)+CDMwqAviL?+-IJr"   c                 n    / SQnU R                  [        SU5        SS/nU H  n[        USS5        M     g )N)z	f'{1:d
}'z*f'__{
                1:d
            }__'z"f"{value:.
               {'2f'}}"z#f"{value:
               {'.2f'}f}"z"f"{value:
                #{'x'}}"z7f-string: newlines are not allowed in format specifiersz.f'''__{
                1:d
            }__'''zf'''{1:d
}'''rp  rG   )r   r   rJ   )r   r]  valid_casesr  s       r   "test_newlines_in_format_specifiers+TestCase.test_newlines_in_format_specifiers  sH    
 	K)bdij !	
  DD*f-  r"   c                     " S S5      nU R                  U" 5       S S5        U R                  U" 5       S S5        U R                  U" 5       S  S5        U R                  U" 5       S  S5        U R                  U" 5       S  S5        U R                  U" 5       S  S5        U R                  U" 5       S  S5        U R                  U" 5       S SU" 5       S 3S5        g )	Nc                       \ rS rSrS rSrg)>TestCase.test_raw_fstring_format_spec.<locals>.UnchangedFormati%  c                     U$ r   r   )r   r2   s     r   r    ITestCase.test_raw_fstring_format_spec.<locals>.UnchangedFormat.__format__'  s    r"   r   Nr#   r   r"   r   UnchangedFormatr  %  s    r"   r     ÿz\xFFabr   rt  z\xFF \nr   )r   r  s     r   test_raw_fstring_format_spec%TestCase.test_raw_fstring_format_spec   s   
	 	 	O-d3d;_.t4w? 	_.x84@O-wi87C_.y9GD 	o/ 2 1 "&	(0 3 2 #'	) 	_.t4Ao6G5KLkZr"   r   N)cr$   r%   r&   r'   r   r6   rP   rk   rv   r{   r   r   r   r   r   r   r   r   r   r   r   r   r  skipIfr   is_wasir   r   r   r   r  r  r   r+  r6  r@  rD  rG  rJ  rR  rU  rY  r^  ra  re  rq  rt  rw  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/  r3  r7  rH  rK  rP  rS  rp  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(   r   r"   r   r   r       s'   =6"04>26h+.Z@5D2.MM^q5f5$->`%%' $
  __W__&FGE HE. __W__&FG: H:;! F# J1 f02 BA	,< |
 6
84t & #&W
'8'
9/&@,Q	(7
I3,40)?@//
E6	(0-8 t  (8T$&L.	:	M6	/.u2@7 /




-*&"BFK".2[r"   r   __main__)rH   rl  r  r?  r  r/   r(  r  r  r.  r   test.support.os_helperr   test.support.script_helperr   r   r  r   r$   mainr   r"   r   <module>r     s_      
 	 	      + NZ[x   Z[z8 zMMO r"   