
    daf                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZ dZ G d dej                        Zedk(  r ej"                          yy)	    N)support)temp_cwd)assert_python_failureassert_python_okzglobal variablec                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z ej*                  ej.                  d      d        Z ej*                  ej.                  d      d        Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZDd@ ZEdA ZFdB ZGdC ZHdD ZIdE ZJdF ZKdG ZLdH ZMdI ZNdJ ZOdK ZPdL ZQdM ZRdN ZSdO ZTdP ZUdQ ZVdR ZWdS ZXdT ZYdU ZZyV)WTestCasec                     |D ]C  }| j                  |      5  | j                  ||      5  t        |       d d d        d d d        E y # 1 sw Y   xY w# 1 sw Y   \xY w)Nstr)subTestassertRaisesRegexeval)selfexception_typeregexerror_stringsr   s        ,/root/Python-3.12.4/Lib/test/test_fstring.pyassertAllRaisezTestCase.assertAllRaise   se      	C#& ++NEB I 	  s!   AA
A
AAA	c                 B    G d d      } |       } |       }t        j                  d |      |_        | j                  | t	        |             | j                  | d       | j                  t	        |      t	        |             | j                  |j                  d      d       | j                  |j                  d      d       | j                  t        |      j                  |d      d       | j                  t        |      j                  |d      d       y )Nc                       e Zd Zd Zy)(TestCase.test__format__lookup.<locals>.Xc                      y)Nclass r   specs     r   
__format__z3TestCase.test__format__lookup.<locals>.X.__format__(   s        N__name__
__module____qualname__r   r   r   r   Xr   '   s    r   r#   c                      y)Ninstancer   r   s     r   <lambda>z/TestCase.test__format__lookup.<locals>.<lambda>0   s    r   r    r%   )types
MethodTyper   assertEqualformattype)r   r#   xys       r   test__format__lookupz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                      G d d      } |       }d}t        j                  |      }t        |dd      }| j                  |j                         t        |       | j                  |j                         y )Nc                       e Zd Zd Zd Zy)TestCase.test_ast.<locals>.Xc                     d| _         y )NFcalledr   s    r   __init__z%TestCase.test_ast.<locals>.X.__init__C   s	    #r   c                     d| _         y)NT   r4   r6   s    r   __call__z%TestCase.test_ast.<locals>.X.__call__E   s    "r   N)r    r!   r"   r7   r:   r   r   r   r#   r2   B   s    $r   r#   
a = 10
f'{a * x()}'r'   exec)astparsecompileassertFalser5   r<   
assertTrue)r   r#   r-   exprtcs         r   test_astzTestCase.test_ast@   sh    	 	 C IIdOAr6" 	" 	Q 	!r   c                 F   d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       | j                  t        |j                  d         t         j                         | j                  |j                  d   j                  d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  |j                  d   j                  d       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                         | j                  t        |j                        t         j                          | j                  t        |j"                        t         j$                         | j                  t        |j&                        t         j(                         | j                  |j                  d       | j                  |j                  j                  d       | j                  |j&                  j                  d       | j                  |j*                  d       | j                  |j                  j*                  d       | j                  |j&                  j*                  d       y )Nr;      r            )r=   r>   r*   r,   ModulelenbodyAssignlinenoExprvalue	JoinedStrvaluesFormattedValueBinOpleftNameopMultrightCall
col_offsetr   rB   rC   binops       r   test_ast_line_numberszTestCase.test_ast_line_numbersX   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                    d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  |j                  d   j                  d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d   j                        t               | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d   j                        t               | j                  t        |j                  d   j                  j                  d         t         j                         | j                  |j                  d   j                  d       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                         | j                  t        |j                         t         j"                         | j                  t        |j$                        t         j&                         | j                  t        |j(                        t         j*                         | j                  |j                  d       | j                  |j                   j                  d       | j                  |j(                  j                  d       | j                  |j,                  d       | j                  |j                   j,                  d       | j                  |j(                  j,                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                         | j                  t        |j                         t         j"                         | j                  t        |j$                        t         j.                         | j                  t        |j(                        t         j*                         | j                  |j                  d       | j                  |j                   j                  d       | j                  |j(                  j                  d       | j                  |j,                  d	       | j                  |j                   j,                  d	       | j                  |j(                  j,                  d
       y )Nz8
f'no formatted values'
f'eggs {a * x()} spam {b + y()}'rG   r   rH   r9   rI               )r=   r>   r*   r,   rK   rL   rM   rP   rQ   rR   rO   rS   Constantr   rT   rU   rV   rW   rX   rY   rZ   r[   r\   Add)r   rB   rC   binop1binop2s        r   .test_ast_line_numbers_multiple_formattedvaluesz7TestCase.test_ast_line_numbers_multiple_formattedvaluesw   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                 ^   d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       | j                  t        |j                  d         t         j                         | j                  |j                  d   j                  d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  |j                  d   j                  d       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                         | j                  t        |j                        t         j                          | j                  t        |j"                        t         j$                         | j                  t        |j&                        t         j                         | j                  |j                  d       | j                  |j                  j                  d       | j                  |j&                  j                  d       | j                  |j(                  d       | j                  |j                  j(                  d       | j                  |j&                  j(                  d       | j                  t        |j&                  j                        d       | j                  t        |j&                  j                  d         t         j*                         | j                  t        |j&                  j                  d   j                        t,               | j                  t        |j&                  j                  d         t         j                         | j                  t        |j&                  j                  d         t         j*                         | j                  t        |j&                  j                  d   j                        t,               | j                  |j&                  j                  d   j                  d       | j                  |j&                  j                  d   j                  d       | j                  |j&                  j                  d   j                  d       |j&                  j                  d   j                  }| j                  t        |      t         j.                         | j                  |j                  d       | j                  |j(                  d       y )Nz
a = 10
f'{a * f"-{x()}-"}'rG   r   rH   rI   rJ      )r=   r>   r*   r,   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r\   re   r   r[   )r   rB   rC   r^   calls        r   test_ast_line_numbers_nestedz%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                    d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       | j                  t        |j                  d         t         j                         | j                  |j                  d   j                  d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d   j                        t               | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d   j                        t               | j                  t        |j                  d   j                  j                  d         t         j                         | j                  |j                  d   j                  d       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                          | j                  t        |j"                        t         j$                         | j                  t        |j&                        t         j(                         | j                  t        |j*                        t         j,                         | j                  |j                  d       | j                  |j"                  j                  d       | j                  |j*                  j                  d       | j                  |j.                  d       | j                  |j"                  j.                  d       | j                  |j*                  j.                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                          | j                  t        |j"                        t         j$                         | j                  t        |j&                        t         j(                         | j                  t        |j*                        t         j,                         | j                  |j                  d       | j                  |j"                  j                  d       | j                  |j*                  j                  d       | j                  |j.                  d	       | j                  |j"                  j.                  d	       | j                  |j*                  j.                  d
       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                          | j                  t        |j"                        t         j$                         | j                  t        |j&                        t         j(                         | j                  t        |j*                        t         j,                         | j                  |j                  d       | j                  |j"                  j                  d       | j                  |j*                  j                  d       | j                  |j.                  d       | j                  |j"                  j.                  d       | j                  |j*                  j.                  d       y )Nz)
a = 10
f'{a * x()} {a * x()} {a * x()}'
rG   r   rH      rI   r9   rJ         rc   rd   )r=   r>   r*   r,   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   re   r   rU   rV   rW   rX   rY   rZ   r[   r\   r]   s       r   *test_ast_line_numbers_duplicate_expressionz3TestCase.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                    t        j                  d      }| j                  t        |j                        d       | j                  |j                  d   j
                  d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d         t         j                         |j                  d   j                  j                  \  }}}|j                  }| j                  t        |      t         j                         | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                   d       y )Nz%f"Here is that pesky {xxx:.3f} again"rH   r   rI   rG         )r=   r>   r*   rL   rM   rO   r,   rP   rQ   rR   rS   re   rT   rW   
end_linenor\   end_col_offset)r   rC   _rB   names        r   (test_ast_numbers_fstring_with_formattingz1TestCase.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__++
4zzdSXX.a(!,"-,,b1r   c                 n   d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       | j                  t        |j                  d         t         j                         | j                  |j                  d   j                  d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d   j                        t               | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d         t         j                         | j                  t        |j                  d   j                  j                  d   j                        t               | j                  |j                  d   j                  d       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                   d       | j                  |j                  d   j                  j                   d       | j                  |j                  d   j                  j                  d   j                   d       | j                  |j                  d   j                  j                  d   j                   d       | j                  |j                  d   j                  j                  d   j                   d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j"                         | j                  t        |j$                        t         j&                         | j                  t        |j(                        t         j*                         | j                  t        |j,                        t         j.                         | j                  |j                  d       | j                  |j$                  j                  d       | j                  |j,                  j                  d       | j                  |j                   d       | j                  |j$                  j                   d       | j                  |j,                  j                   d	       d
}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       | j                  t        |j                  d         t         j                         | j                  t        |j                  d   j                        t         j                         | j                  t        |j                  d   j                  j                        d       | j                  t        |j                  d   j                  j                  d         t         j                         | j                  |j                  d   j                  d       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                  j                  d   j                  d       | j                  |j                  d   j                   d       | j                  |j                  d   j                  j                   d       | j                  |j                  d   j                  j                  d   j                   d       | j                  |j                  d   j                  j                  d   j                   d       | j                  |j                  d   j                  j                  d   j                   d       | j                  |j                  d   j                  j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d   j                  j0                  d       | j                  |j                  d   j                  j                  d   j                  j                   d       | j                  |j                  d   j                  j                  d   j                  j2                  d       y )Nz?
a = 10
f'''
  {a
     *
       x()}
non-important content
'''
rG   r   rH   rI   r9      rk   rJ   z$
a = f'''
          {blech}
    '''
ra   
   rq      )r=   r>   r*   r,   rK   rL   rM   rN   rO   rP   rQ   rR   rS   re   r   rT   r\   rU   rV   rW   rX   rY   rZ   r[   rv   rw   r]   s       r   'test_ast_line_numbers_multiline_fstringz0TestCase.test_ast_line_numbers_multiline_fstring1  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                 ^   d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       |j                  d   j                  }| j                  t        |      t         j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       |j                  d   j                  j                  d   }| j                  t        |      t         j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       |j                  d   j                  j                  d   j                  }| j                  t        |      t         j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d	       | j                  |j                  d
       d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       |j                  \  }}|j                  j                   D cg c]  }|j                  |j                  f }	}| j#                  t%        d |	D                     |j                  j                   D cg c]  }|j                  |j                  f }	}| j#                  t%        d |	D                     d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       |j                  d   j                  j                   d   }
| j                  t        |
      t         j                         | j                  t        |
j                        d       |
j                  \  }}}| j                  t        |      t         j&                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       |j                  }| j                  t        |      t         j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  t        |      t         j&                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |
j                  d       y c c}w c c}w )Nz
x = (
    f" {test(t)}"
)rH   r   rI   r9   rq   rJ   r~   ra      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""",
)
        rG   c              3   &   K   | ]	  }|d k(    yw))r9   r}   Nr   .0offsets     r   	<genexpr>zBTestCase.test_ast_line_numbers_with_parentheses.<locals>.<genexpr>        
 g
   c              3   &   K   | ]	  }|d k(    yw))r9      Nr   r   s     r   r   zBTestCase.test_ast_line_numbers_with_parentheses.<locals>.<genexpr>  r   r   zv
x = (
        'PERL_MM_OPT', (
            f'wat'
            f'some_string={f(x)} '
            f'wat'
        ),
)
ro   r      rd      r|          )r=   r>   r*   r,   rK   rL   rM   rQ   rR   rO   rv   r\   rw   rS   rT   r[   eltsrA   allre   )r   rB   rC   	joinedstrfvrl   r-   r.   eltoffsetsfstringwat1middlewat2s                 r   &test_ast_line_numbers_with_parenthesesz/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1
 ww||
 ^^S//0
 
 	 
!
 
 	 ww||
 ^^S//0
 
 	 
!
 
 	
 IIdOa#**-QVVa(&&)//&&q)g6W^^,a0$^^fddS\\2a(!,"-,,b1||dSXX.a(!,"-,,b1dS\\2a(!,"- 	,,b1//4u

s   ,Z%Z*c                    d}t        j                  |      }| j                  t        |      t         j                         | j                  t        |j                        d       |j                  d   j                  }| j                  t        |      t         j                         | j                  t        |j                        d       |j                  d   }| j                  t        |      t         j                         |j                  }| j                  t        |      t         j                         | j                  t        |j                        d       y )Nz
f'{expr:}'rH   r   )r=   r>   r*   r,   rK   rL   rM   rQ   rR   rS   rT   format_spec)r   rB   modr   r   r   s         r   "test_ast_fstring_empty_format_specz+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                 |    d }| j                  |j                         d }| j                  |j                         y )Nc                       y Nr   r   r   r   fz"TestCase.test_docstring.<locals>.f  s    r   c                       y r   r   r   r   r   gz"TestCase.test_docstring.<locals>.g	  s    !r   )assertIsNone__doc__)r   r   r   s      r   test_docstringzTestCase.test_docstring  s2    	#!))$	 	!))$r   c                     | j                  t        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nzmalformed node or stringzf'x')r   
ValueErrorr=   literal_evalr6   s    r   test_literal_evalzTestCase.test_literal_eval  s6    ##J0JK 	%V$	% 	% 	%s   6?c                     dg}d}t        j                  |      }t        |dd      }t        |       | j	                  |d   d       y )Nr'   zx[0] = 'foo' f'{3}'r<   r   foo3)r=   r>   r?   r<   r*   )r   r-   rB   rC   rD   s        r   test_ast_compile_time_concatz%TestCase.test_ast_compile_time_concat  sD    D(IIdOAr6"Q1v&r   c                 6    | j                  t        dddg       y )Nz&cannot mix bytes and nonbytes literalszf'' b''zb'' f''r   SyntaxErrorr6   s    r   test_compile_time_concat_errorsz(TestCase.test_compile_time_concat_errors  s     KD++	 r   c                 p    | j                   d       | j                  dd       | j                  dd       y )Nr'   a r*   r6   s    r   test_literalzTestCase.test_literal"  s2    b!1s#1s#r   c                 6    | j                  t        dg d       y )Nzunterminated string)zf'{"x'zf'{"x}'zf'{("x'zf'{("x}'r   r6   s    r   test_unterminated_stringz!TestCase.test_unterminated_string'  s    K)>	 r   zexhausts limited stack on WASIc                 *   | j                  t        ddg       | j                  t        ddg       | j                  t        ddg       | j                  t        ddg       | j                  t        dd	g       | j                  t        t        d
       y )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   r6   s    r   test_mismatched_parenszTestCase.test_mismatched_parens/  s    K *G& 	  	K *G( 	 	K *G( 	 	K *G' 	 	K *G' 	 	+t-CDr   c                 |    | j                  t        ddg       fd| j                  t        d d      g       y )Nz'f-string: expressions nested too deeplyzf"{1+2:{1+2:{1+1:{1}}}}"c                 2    | dk(  ry | dz
        }d| dS )Nr   z1+1rH   zf"{z}"r   )nprevcreate_nested_fstrings     r   r   zFTestCase.test_fstring_nested_too_deeply.<locals>.create_nested_fstringM  s*    Av(1-D$s##r   ztoo many nested f-strings   r   )r   r   s    @r   test_fstring_nested_too_deeplyz'TestCase.test_fstring_nested_too_deeplyG  sA    KE78	:	$ 	K72378	:r   c                 4    | j                  t        ddg       y )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   r6   s    r   #test_syntax_error_in_nested_fstringz,TestCase.test_syntax_error_in_nested_fstringW  s    K,89	;r   c                    | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  d	d	       | j                  d
d
       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd d       | j                  dd d       | j                  dd d       | j                  dd d       | j                  d dd       | j                  d dd       | j                  d dd       | j                  d dd       | j                  d d       | j                  t        ddg       y ) 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'{ {{}} }')r*   r   	TypeErrorr6   s    r   test_double_bracesz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                 *   d}| j                  d| dd       | j                  d| dd       | j                  d| d|dd       | j                  d	| d
       | j                  d| d       | j                  d	| d
       | j                  d| d       | j                  d| d       | j                  d| d       | j                  | dd       | j                  | d       | j                  | d       | j                  | d       | j                  | dd       | j                  d| dd       | j                  d| d       | j                  | d| d       | j                   d       | j                   d       | j                   d       | j                   d       | j                   d       | j                   d       | j                   d       | j                  d d       | j                  t        ddg       y )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"}"r*   r   r   r   r-   s     r   test_compile_time_concatz!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                    ddi}| j                  d d       | j                  |d    d       | j                  t        dg d       | j                  t        ddg       | j                  dd d	       | j                  d
d d       | j                  d
d d       | j                  dd d       | j                  d
d d       | j                  t        ddg       y )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: rG   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_commentszTestCase.test_comments  sL   &MC53'AcF8f-K)?	  	K)D& 	  	. / 	 	 
 	 	 
 	 	  
(		)
 	   		 	K)Z 	 r   c                 l   dd}d}d}t        dd      D ])  }| j                  t         ||            |dz   |z         + | j                  t         |d      dz        |dz   d	z          |d
d      }| j                  t        |      |dz   dz         ddz  }| j                  t        |      d       y )Nc                     dd| z  z   |z   dz   S )Nf'z{x} 'r   )r   extras     r   
build_fstrz2TestCase.test_many_expressions.<locals>.build_fstr  s    6A:&.44r   r#   rH      i  r         i      z{x:{width}}    zf'{1}' 'x' 'y'i      1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy)r'   )ranger*   r   )r   r   r-   widthiss         r   test_many_expressionszTestCase.test_many_expressions  s    
	5  sC 	=AT*Q-01S5!)<	= 	joc12QsUW4EFsN+a1S5#+. t#a,/r   c           	      N   d}d}t        j                  d      }| j                  d|| d| dd       | j                  d||d| dd       | j                  d||dd|d	dd       | j                  d|d
 ddd|d	dd       | j                  d|d
 ddd|d	dd       | j                  ddd
 dd       | j                  dd d	d d dd       | j                  ddd d	d dd       | j                  dd dd
 dd dd       | j                  dddddik7  xr | dd       | j                  d||d dd|d	dd       | j                  t        ddg       | j                  t        ddg       | j                  t        ddg       y )Nr}   r9   z12.34567zresult: .r'   zresult:      12.350r   rH   r   r   0xz
       0xar-   ir   z
      -0xarI   ro   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Decimalr*   r   r   )r   r   	precisionrQ   s       r   !test_format_specifier_expressionsz*TestCase.test_format_specifier_expressions  s7   	
+8E5'9+P)=#>?AUV8E5)1YKp)?#@ACWX8E5)1YqM)A#BCEYZ8E1#aU!Ia= )@#ABDXY8EA$!fAy^0)C#DEG[\Bq2g;6BuAaSPo.>C#as!|,|<CQqc3%p/0<@Bqqe!5 6a78<H8E5!@+Qym0)C#DEG[\K)I4 	 
 	KN*	  	K)Q 2	 r   c                      G d d      }| j                   |       dd       | j                   |       dd       | j                  t              5  t        dd|i       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy);TestCase.test_custom_format_specifier.<locals>.CustomFormatc                     |S r   r   )r   r   s     r   r   zFTestCase.test_custom_format_specifier.<locals>.CustomFormat.__format__  s    ""r   Nr   r   r   r   CustomFormatr    s    #r   r  r   u   ☃u   f"{F():¯\_(ツ)_/¯}"F)r*   assertWarnsSyntaxWarningr<   )r   r  s     r   test_custom_format_specifierz%TestCase.test_custom_format_specifier  ss    	# 	# 	LN2.6LN62U;m, 	A*S,,?@	A 	A 	As   A**A3c                 T     G d d      } |       }| j                  | d| d       y )Nc                       e Zd Zd Zd Zy)*TestCase.test_side_effect_order.<locals>.Xc                     d| _         y )Nr   )r   r6   s    r   r7   z3TestCase.test_side_effect_order.<locals>.X.__init__  s	    r   c                 V    | xj                   dz  c_         t        | j                         S )NrH   )r   r   r   s     r   r   z5TestCase.test_side_effect_order.<locals>.X.__format__   s    !466{"r   N)r    r!   r"   r7   r   r   r   r   r#   r    s    #r   r#   r   z1 2r   )r   r#   r-   s      r   test_side_effect_orderzTestCase.test_side_effect_order  s/    	# 	# CA3asU+r   c                     | j                  t        dg d       | j                  t        dg d       | j                  t        dg d       | j                  t        dg d       | j                  t        d	d
dg       y )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-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   r6   s    r   test_missing_expressionz TestCase.test_missing_expression'  s    KL		  	KL	 , 	KL	  	KL	  	K)S,#	 r   c                     | j                  d d       | j                  t        ddg       | j                  t        ddg       y )N)rI   z(3,)r   zf'{,}'r   z
f'{3)+(4}'r   r6   s    r   test_parens_in_expressionsz#TestCase.test_parens_in_expressionsd  sL    B4&)KN% 	 
 	K)D) 	 r   c                 6    | j                  t        dg d       y )Nr   )zf'{.}'z
f'{.}'z

f'{.}'r   r6   s    r   !test_newlines_before_syntax_errorz*TestCase.test_newlines_before_syntax_errorp  s    KN4	6r   c                 J   | j                  dd       | j                  dd       | j                  dd       | j                  d dd       | j                  d dd d       | j                  dd d       | j                  dd       | j                  d	d	       | j                  d	d	       | j                  d dd
       | j                  d dd d       | j                  dd d       | j                  dd       | j                  dd       | j                  dd       | j                  d dd
       | j                  d dd d       | j                  dd d       | j                  dd       | j                  d dd
       | j                  d dd d       | j                  dd d       | j                  d
d
       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  d dd       | j                  d dd d       | j                  dd d       | j                  dd       | j                  dd       | j                  dd       | j                  t              5  t        d      }d d d        | j                  d       | j                  t              5  t        d      }d d d        | j                  |d       | j                  dd d       | j                  dd d       d}| j                  dd       | j                  d| d       | j                  d| d       | j                  dd       y # 1 sw Y   xY w# 1 sw Y   xY w)N	z\trG   z2	rI   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\&)r*   r  r  r   )r   rQ   	AMPERSANDs      r   test_backslashes_in_string_partz(TestCase.test_backslashes_in_string_partu  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    | j                  t        dg d       y )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   r6   s    r   %test_misformed_unicode_character_namez.TestCase.test_misformed_unicode_character_name  s     	K  *V	 r   c                     | j                  d d       | j                  dd       | j                  d d       | j                  d d       | j                  t        ddg       y )NrI   3r   r   zf'{
}'r   r6   s    r   #test_backslashes_in_expression_partz,TestCase.test_backslashes_in_expression_part  su     	
 	13745<56=KL& 	 r   c                     dD cg c]  }dD ]  }|j                  |        }}}| j                  t        d|       y c c}}w )N)z{expr}zf'{{{expr}}}'zrf'{{{expr}}}')z\'a\'z\t3r  )rB   z,unexpected character after line continuation)r+   r   r   )r   
formattingrB   casess       r   /test_invalid_backslashes_inside_fstring_contextz8TestCase.test_invalid_backslashes_inside_fstring_context  sc    



  4(
(
 
 	K)W!	#
s    Ac                     | j                  dd       | j                  dd       | j                  dd       | j                  dd       y)z@
        Only literal curly braces begin an expression.
        z{1+1}z{1+1Nr   r6   s    r   test_no_escapes_for_bracesz#TestCase.test_no_escapes_for_braces  sE    
 	9w/7V,9v.KgVr   c                 P    | j                  d d       | j                  d d       y )Nr   r   rJ   7r   r6   s    r   test_newlines_in_expressionsz%TestCase.test_newlines_in_expressions  s/    A3%   
	r   c                    d| j                   fdd      d       | j                   fdd      dd       | j                   fdd      dd	       | j                  t        d
g d       | j                  t        d      5  t	        ddd       d d d        | j                  t        d      5  t        d       d d d        y # 1 sw Y   4xY w# 1 sw Y   y xY w)Nro   c                     | z  S r   r   r.   r-   s    r   r&   z&TestCase.test_lambda.<locals>.<lambda>      ac r   8z'88888'c                     | z  S r   r   r-  s    r   r&   z&TestCase.test_lambda.<locals>.<lambda>  r.  r   10z
'88888'   c                     | z  S r   r   r-  s    r   r&   z&TestCase.test_lambda.<locals>.<lambda>  r.  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 $ 1z<string>r<   r   zf'{+ lambda:None}')r*   r   r   r   r?   r   r   s    @r   test_lambdazTestCase.test_lambda  s    \3/2Y?\3/"5E\3/3lC
 	K2		  ##K1AB 	V@*fU	V ##K1cd 	'%&	' 	'		V 	V	' 	's   	C
5C
CCc                 v    | j                  d d       | j                  d d       | j                  d d       y )NrH   r   rG   r   rI   r   r   r6   s    r   test_valid_prefixeszTestCase.test_valid_prefixes  s8    A3%QC#&QC#&r   c                     | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )Nz\'z\"z\"\'z\'\"z\"\'\"z\'\"\'z\"\'\"\'r   r6   s    r   test_roundtrip_raw_quotesz"TestCase.test_roundtrip_raw_quotes  ss    B'B'D9-D9-F\2F]3H'78r   c                    g d}|D ]\  \  }}| j                  ||      5  | j                  t              5  t        |      }d d d        | j	                  |       d d d        ^ | j	                  dd       | j	                  dd       | j	                  dd d       | j	                  dd d       | j	                  d dd	       y # 1 sw Y   xY w# 1 sw Y   xY w)
N))z	f'\{{\}}'\{\})f'\{{'\{)zf'\{{{1+1}'\{2)zf'\}}{1+1}'\}2)zf'{1+1}\}}'2\})caseexpected_resultr9  r;  rG   r<  z\}r=  r>  )r   r  r  r   r*   )r   deprecated_casesr?  r@  results        r   ,test_fstring_backslash_before_double_bracketz5TestCase.test_fstring_backslash_before_double_bracket  s    
 &6 	:!D/4I :%%m4 (!$ZF(  9: :	:
 	FX.C%(Cuv.Cuv.SEv.( (: :s"   CC
C
CCC	c                    | j                  t              5 }t        d       d d d        | j                  t	        j
                        d       | j                  |j
                  d   j                  t               y # 1 sw Y   \xY w)Nr:  rH   r   )r  r  r   r*   rL   warningscategory)r   ws     r   7test_fstring_backslash_before_double_bracket_warns_oncez@TestCase.test_fstring_backslash_before_double_bracket_warns_once0  sd    m, 	O	QZZ!,A//?	 	s   A==Bc                    | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )Nr  z\\z\\\\r   r6   s    r   !test_fstring_backslash_prefix_rawz*TestCase.test_fstring_backslash_prefix_raw6  s    2%4&)B'D7+B'D7+B'D7+B'D7+B'D7+r   c                 d    | j                  d dd       | j                  ddd ddd       y )NrH   r   z1}z>3ro   r'   z$                                  1}r   r6   s    r   (test_fstring_format_spec_greedy_matchingz1TestCase.test_fstring_format_spec_greedy_matchingD  s;    AQ4rD)Ab0V9B)OPr   c                     d } |d      }| j                  t        |      d       | j                  t        |      d        y )Nc              3   *   K   d| dz    d   y w)Nzy:rG   r   )r.   s    r   fnzTestCase.test_yield.<locals>.fnK  s     qsgs   r9   ra   )r*   next)r   rO  r   s      r   
test_yieldzTestCase.test_yieldH  s:    	 qEa!$a$'r   c                     d } |d      }t        |      }| j                   |d      d       | j                  |j                  d      d       y )Nc              3   &    K   d fd  y w)Nx:c                     | z  S r   r   )r   r-   s    r   r&   z6TestCase.test_yield_send.<locals>.fn.<locals>.<lambda>U  s    A r   r   r-   s   `r   rO  z$TestCase.test_yield_send.<locals>.fnT  s     o./00s   r}   r9   (   stringzx:string)rP  r*   send)r   rO  r   
the_lambdas       r   test_yield_sendzTestCase.test_yield_sendS  sH    	1 rF!W
A+):6r   c                 4   | j                  d d       | j                  d d       | j                  d d       | j                  d d       | j                  d d       | j                  d d       | j                  d d       | j                  d d       y )Nr-   zeric'szxeric"syzxeric"szeric"syr   r6   s    r   +test_expressions_with_triple_quoted_stringsz4TestCase.test_expressions_with_triple_quoted_strings\  s    G9s+L>H5 	01J?,-	:,-	:45
C89JG9:ZHr   c                    d}d}| j                  | | d       | j                  d| | d       | j                  | d| d       | j                  | | dd       | j                  d| d| d	       | j                  d| | dd
       | j                  | d| dd       | j                  d| d| dd       y )Nb   r   98abcr#   X98abc98Xabc98abcXYX98YabcX98abcY98XabcYZX98YabcZr   r   r-   r.   s      r   test_multiple_varszTestCase.test_multiple_varsh  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                 ~    d }| j                    |d             d       | j                    |d             d       y )Nc                       fd}|S )Nc                      d  S )NrT  r   rV  s   r   innerz3TestCase.test_closure.<locals>.outer.<locals>.innery  s    A3xr   r   )r-   ro  s   ` r   outerz$TestCase.test_closure.<locals>.outerx  s     Lr   987zx:987rJ   zx:7r   )r   rp  s     r   test_closurezTestCase.test_closurew  s9    	
 	u1qU+r   c                 |    dfd}| j                   |dd      d       d}| j                   |dd      d       y )NrG   c                     d| z  | dS )Nx=r'   r   )r-   r   r.   s     r   r   z"TestCase.test_arguments.<locals>.f  s    !UG08}%%r   foor}   zx=foofoo    barzx=        20r   )r   r   r-   r.   s      @r   test_argumentszTestCase.test_arguments  s@    	& 	5"~62rN3r   c                 2    d}| j                  d| d       y )N{   v:zv:123r   )r   rQ   s     r   test_localszTestCase.test_locals  s    2eWw/r   c                 j    | j                  t              5  dt          d d d        y # 1 sw Y   y xY w)Nr{  )r   	NameErrorrQ   r6   s    r   test_missing_variablezTestCase.test_missing_variable  s.    y) 	L	 	 	s   
)2c                      G d d      }| j                   |       dd       | j                   |        d       | j                   |        d       | j                  d d       | j                  d d       y )Nc                       e Zd Zd Zy),TestCase.test_missing_format_spec.<locals>.Oc                     |sy|S )N*r   r   s     r   r   z7TestCase.test_missing_format_spec.<locals>.O.__format__  s    r   Nr   r   r   r   Or    s    r   r  r-   r  rI   r   r   )r   r  s     r   test_missing_format_specz!TestCase.test_missing_format_spec  sv    	 	 	AC7S)AC53'ACq6C(AQ4#&Aq6C(r   c                 <   | j                  dt         d       | j                  dt        d       d}| j                  dt         d| d       | j                  dt        d       | j                  dt         d|d       | j                  dt                y )	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)r*   a_globalassertInunittest)r   a_locals     r   test_globalzTestCase.test_global  s    2hZ*=>2h\*,AB"2hZs7)4=	?2h\*.	02hZs7+6?	A 	.8*>r   c                     d}| j                  d| d       | j                  d|d       d}| j                  d| d| d       | j                  d|d       | j                  d| d|d       y )	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_globalzTestCase.test_shadowed_global  s    #2hZ*<=2h\*,@A"2hZs7)4<	>2h\*-	/2hZs7+6>	@r   c                 <    d }| j                   |d       d       y )Nc                     dt        |       z   S )Nru  r
   rV  s    r   rv  zTestCase.test_call.<locals>.foo  s    #a&= r   r}   zx=10r   )r   rv  s     r   	test_callzTestCase.test_call  s    	! 	CG9v.r   c                 d    d}| j                  d dz   d       | j                  | dz   d       y )Nro   r   rI   000555r   )r   r.   s     r   test_nested_fstringszTestCase.test_nested_fstrings  s7    qc1H:.qc1H:.r   c                     g d}|D cg c]  }|j                  dd       }}| j                  t        d||z          y c c}w )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_prefixesz%TestCase.test_invalid_string_prefixes  sP    &, BTTdll34TTK)9.1CC	E Us   ?c           	      X   | j                  d d       | j                  d d       | j                  d d       | j                  d d       | j                  ddD ci c]  \  }}||
 c}} d       | j                  ddD ci c]  \  }}||
 c}} d       y c c}}w c c}}w )NrI   r   zexpr=))rH   rG   zexpr={1: 2}r   rj  s      r   test_leading_trailing_spacesz%TestCase.test_leading_trailing_spaces  s    Q4#&a53'A4#&A53'5J"?DAq1a4"? @A&	(5J"?DAq1a4"? AB&	( #@"?s   B B&c                     | j                  ddk7   d       | j                  ddk7   d       | j                  ddk7  d       | j                  ddk7  dd       y )NrI   r9   Truez.3Trur   r6   s    r   test_not_equalzTestCase.test_not_equal  s`    
 	AqD6F+AqD7V,AqD8f-AqD2;/r   c                 0    | j                  ddk(   d       y )Nr   rH   Falser   r6   s    r   test_equal_equalzTestCase.test_equal_equal  s     	AqD6G,r   c                 ,   | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  d d       | j                  dd       | j                  dd       | j                  dd       | j                  ddd       | j                  d	 d	       | j                  dd
d       | j                  t        dg d       | j                  t        dg d       dD ]#  }| j                  t        d|z  d|z   dz   g       % dD ]   }| j                  t        dd|z   dz   g       " dD ]   }| j                  t        dd|z   dz   g       " | j                  t        dg d       y )NgQ	@z10.10z
      3.14z
3.14      r   z'a'rI   r   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}')r   !r   )z sz s zFf-string: conversion type must come right after the exclamanation 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_conversionszTestCase.test_conversions  s   D<,7D5>L9D5>L9D5>L9C53'C7U+C7U+ 	A7S)DU+l; 	E7U+ 	D>L9K)B	  	K)Q	   9 	DO!<>M!N!(?!:T!A BD	D $, 	H H!(+>!>!E FH	H
   	9D!6!(4$!6 79	9 	K8	 r   c                 6    | j                  t        dg d       y )Nr   )zf'' = 3z
f'{0}' = xz
f'{x}' = xr   r6   s    r   test_assignmentzTestCase.test_assignment5  s    K):	 r   c                 6    | j                  t        dddg       y )Nr   zdel f''z
del '' f''r   r6   s    r   test_delzTestCase.test_del<  s     K)9&)	 r   c                 @   | j                  t        dg d       | j                  t        dg d       | j                  t        ddg       | j                  d d       | j                  d d       | j                  d	d d
d       | j                  dd d
d       y )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   rI   z>10z
}}}}}}}}}3rG   z
{{{{{{{{{2)r   r   r*   r6   s    r   test_mismatched_braceszTestCase.test_mismatched_bracesB  s    K)N
	  	K)B	 " 	KN+ 	  	C53'C53'Ase3Y<,7Ase3Y<,7r   c                       fd} fd} fd} |dd        |dd        |dd        |dd        |dd        |dd       y )Nc                 >    d}|  rd}nd}j                  ||       y Nr   rH   rG   r   r-   expectedflagr   s      r   test_fstringz2TestCase.test_if_conditional.<locals>.test_fstringq  s)    DvT8,r   c                 >    d}|  rd}nd}j                  ||       y r  r   r  s      r   test_concat_emptyz7TestCase.test_if_conditional.<locals>.test_concat_emptyy  s)    DCyT8,r   c                 B    d}d|  rd}nd}j                  ||       y )Nr   r   rH   rG   r   r  s      r   test_concat_non_emptyz;TestCase.test_if_conditional.<locals>.test_concat_non_empty  s+    DaSzT8,r   r'   rG   r   rH   r   )r   r  r  r  s   `   r   test_if_conditionalzTestCase.test_if_conditionall  sP    
	-	-	- 	RS!"a #q!b!$c1%r   c                     d}| j                  | d       | j                  | d       | j                  | d       | j                  | d       y )Ntestz'test'r   r   s     r   test_empty_format_specifierz$TestCase.test_empty_format_specifier  sU    A3(AQ4&)Aq6F+Aq6H-r   c                    ddd}d}| j                  |d    d       | j                  |d    d       | j                  ||    d       | j                  dj                  |      d       | j                  dj                  |      d       y )	NrX  integer)r   r   r   r   z{d[a]})r   z{d[0]})r*   r+   )r   r   r   s      r   test_str_format_differencesz$TestCase.test_str_format_differences  s     AaD6I.AcF8h/AaD6I.1-x81-y9r   c                 h    | j                  t        dddg       | j                  t        dddg       y )Nunsupportedzf'{(lambda: 0):x}'zf'{(0,):x}'zUnknown format codezf'{1000:j}')r   r   r   r6   s    r   test_errorszTestCase.test_errors  s?    I}2+	  	J(=++	r   c                 P   t               5 }t        j                  j                  |d      }t	        |dd      5 }|j                  d       d d d        t        |d      \  }}}d d d        | j                  j                  dd             y # 1 sw Y   ExY w# 1 sw Y   8xY w)	Nzt.pyrG  utf-8)encodingzf"{a b}"ascii)PYTHONIOENCODINGbackslashreplace)	r   ospathjoinopenwriter   r  encode)r   cwd	file_pathr   rx   stderrs         r   test_filename_in_syntaxerrorz%TestCase.test_filename_in_syntaxerror  s    Z 	K3S&1Iiw7 $1
#$0BIKLAq&		K 	i&&w0BCVL	$ $	K 	Ks"   /BBBB	BB%c                 f    t        d      D ]#  }| j                  d| dt        |      z          % y )Ni  zi:)r   r*   r   )r   r   s     r   	test_loopzTestCase.test_loop  s3    t 	6Ar!Xtc!f}5	6r   c                     dddd}| j                  |d    d       | j                  |d    d       | j                  |d    d       | j                  |d    d       y )Ndquotesquoterw  )r  r   rv  r   r  rv  r   r   s     r   	test_dictzTestCase.test_dict  sl     	afX(3afX(3AeH:.AeH:.r   c                 p    | j                  t        d      d       | j                  t        d      d       y )Nzf"\
"r'   zf"\")r*   r   r6   s    r   test_backslash_charzTestCase.test_backslash_char  s,     	i"-i"-r   c           	      z	   d| j                  ddt              z          | j                  ddt              z          | j                  ddt              z          | j                  ddt              z          | j                  ddt              z          d| j                  dddt	        d      z          | j                  d dt	        d      z          | j                  dddt	        t              d      z          | j                  dddt	        t              d      z          | j                  dddt	        t              d      z          d| j                  d	d
z  dz   d       d}| j                  d|dd       | j                  ddd       | j                  ddddd       d}| j                  d|dd       | j                  dd
d       | j                  ddk(   d        | j                  ddk7   d!       | j                  ddk   d!       | j                  ddk\   d        | j                  d"x d"       | j                  d"       | j                  d#x d"       | j                  d#       | j                  d$ d$       d%| j                  d&d'       fd(}d| j                   |d)*       d+       | j                  d)       | j                   |d,*       d)       | j                  d,        G d- d.      }| j                  d/ |       d0       | j                  d/ |       d0       | j                  d/ |        d1       | j                  d/ |       d2d3       | j                  d/ |       d4d5       | j                  d/ |       dd6       | j                  t        t        d7       d8| j                  d9d:d9t              z   d:z          | j                  d;d:d;t              z   d:z          | j                  d<d:d<t              z   d:z          | j                  d=d:d=t              z   d:z          | j                  d>d?d?d@dAdB       | j                  dCd
dD       y )ENzA stringru  zx =g	@z.2fr'   z^20	   z3*x+15=rI   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   rH   r  r  5ro   =   =10
        20c                     }| |S r   r   )r   oldxr-   s     r   r   z)TestCase.test_debug_conversion.<locals>.f	  s    DAKr   z3=)r   r   r9   c                       e Zd Zd Zd Zy))TestCase.test_debug_conversion.<locals>.Cc                     d| S )NzFORMAT-r   )r   r   s     r   r   z4TestCase.test_debug_conversion.<locals>.C.__format__  s     }$r   c                      y)NREPRr   r6   s    r   __repr__z2TestCase.test_debug_conversion.<locals>.C.__repr__  s    r   N)r    r!   r"   r   r  r   r   r   Cr    s    %r   r  zC()=zC()=REPRzC()=FORMAT-r   zC()=FORMAT- r-   zC()=FORMAT-xzC()=********REPR********zf'{C=]'rv  zXx=rd  zXx  =zXx=  zXx  =  zsadsd 1 + 1 =  rG   1dr   zsadsd 1 + 1 =  2.000000z	1+2 = 
  z
1+2 = 
  3)r*   reprr   r  r+   r   r   r   )r      tenπpir   r  r-   s        @r   test_debug_conversionz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	 	 	DAC6J/DAC8j1DAC7]3DAC8n5DAC8n5DAC4=)+EF+tY7 4QDE$q'M#$56 	6QF!gd1goc&9:6QF!gd1goc&9:8QHA	$q'(9#(=>+%U2Ja<!89;TU C  	r   c                 ~    d}| j                  |dd       | j                  dx} d       | j                  |d       y )Nr  r  r  r}   r1  r   r   s     r   test_walruszTestCase.test_walrus:  sE     	Ac7\2 	UQ9t,Br   c                 t    | j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)N/f-string: expecting '=', or '!', or ':', or '}'z
f'{a $ b}'?r<   r   r   r?   r6   s    r   !test_invalid_syntax_error_messagez*TestCase.test_invalid_syntax_error_messageD  s7    ##K$UW 	/L#v.	/ 	/ 	/s   .7c                     t        j                  d      }| j                  t        |      5  dd d d d        y # 1 sw Y   y xY w)NzCannot specify ',' with ','.rH   z,,reescaper   r   r   	error_msgs     r   (test_with_two_commas_in_format_specifierz1TestCase.test_with_two_commas_in_format_specifierI  =    II<=	##J	: 	f	 	 		   :Ac                     t        j                  d      }| j                  t        |      5  dd d d d        y # 1 sw Y   y xY w)NzCannot specify '_' with '_'.rH   __r  r  s     r   ,test_with_two_underscore_in_format_specifierz5TestCase.test_with_two_underscore_in_format_specifierN  r
  r  c                     t        j                  d      }| j                  t        |      5  dd d d d        y # 1 sw Y   y xY w)N Cannot specify both ',' and '_'.rH   z,_r  r  s     r   8test_with_a_commas_and_an_underscore_in_format_specifierzATestCase.test_with_a_commas_and_an_underscore_in_format_specifierS  =    II@A	##J	: 	f	 	 	r  c                     t        j                  d      }| j                  t        |      5  dd d d d        y # 1 sw Y   y xY w)Nr  rH   z_,r  r  s     r   7test_with_an_underscore_and_a_comma_in_format_specifierz@TestCase.test_with_an_underscore_and_a_comma_in_format_specifierX  r  r  c                     | j                  t        d      5  t        ddd       d d d        | j                  t        d      5  t        ddd       d d d        y # 1 sw Y   6xY w# 1 sw Y   y xY w)Nz!can't use starred expression herezf'{*a}'r   r<   r   zf'{**a}'r  r6   s    r   )test_syntax_error_for_starred_expressionsz2TestCase.test_syntax_error_for_starred_expressions]  sp    ##K1TU 	,IsF+	, ##K$VX 	-JV,	- 	-	, 	,	- 	-s   AA&A#&A/c                 $   | j                  t        dddg       | j                  t        dddg       d}	 t        |dd	       y # t        $ rB}| j                  |j                  d
       | j                  |j
                  d       Y d }~y d }~ww xY w)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   r<   zz = f"""rI   )r   r   r?   r*   textrO   )r   dataes      r   test_not_closing_quotesz TestCase.test_not_closing_quotese  s    K)H4QU,WK)V#V,	.	*D#v& 	*QVVZ0QXXq))	*s   A 	B8B

Bc                 h    | j                  t        dg d       | j                  t        dddg       y )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   r6   s    r   test_syntax_error_after_debugz&TestCase.test_syntax_error_after_debugx  s:    K)[	 	K)Z , -	r   c                 f   t               5  d}t        dd      5 }|j                  d       d d d        t        |      \  }}}d d d        | j	                  j                  d      j                         j                  dd      j                  dd      d       y # 1 sw Y   pxY w# 1 sw Y   exY w)	N	script.pyrG  zprint(f'''{
3
=}''')r  z
r   z3
=3)r   r  r  r   r*   decodestripr  )r   scriptr   rx   stdouts        r   test_debug_in_filezTestCase.test_debug_in_file  s    Z 	4 Fk3' 1   ,F3LAvq	4 	w/557??MUUVZ\`a 	" 	4 	4s!   B'BB'B$	 B''B0c                 Z   t               5  d}t        |d      5 }|j                  d       d d d        t        |      \  }}}| j	                  d|       | j                  t        |j                         j                               d       d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr  rG  zprint(f'\{1}')s   \1rG   )	r   r  r  r   r  r*   rL   r"  
splitlines)r   r#  r   rx   r$  r  s         r   .test_syntax_warning_infinite_recursion_in_filez7TestCase.test_syntax_warning_infinite_recursion_in_file  s    Z 	B Ffc" +a)*+ !1 8AvvMM&&)S!:!:!<=qA	B 	B+ +	B 	Bs"   B!BA B!B	B!!B*N)[r    r!   r"   r   r/   rE   r_   ri   rm   rr   rz   r   r   r   r   r   r   r   r   r   r  skipIfr   is_wasir   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r%  r'  r*  r3  r5  r7  rC  rH  rJ  rL  rQ  r[  r]  rk  rr  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r%  r(  r   r   r   r   r      s	   =6"04>26h+.Z@5D2.MM^q5f5$%%' $
  X__W__&FGE HE. X__W__&FG: H:;! F# J1 f02 BA	,; z
 6
84t & #&W
'8'
9/&@,Q	(7
I3,40)?@//
E6	(0-8 t  (8T$&L.	:	M6	/.aX /




-*&"Br   r   __main__)r=   r  r  r(   r   r  rE  r  r   test.support.os_helperr   test.support.script_helperr   r   r  r   r    mainr   r   r   <module>r/     s[     	 	      + N}Bx   }B~3 zHMMO r   