o
    GXh$                     @   s   	 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 dl
Z
ejr,dd ZG dd dejZed	kr?e  dS dS )
    N)support)warnings_helper)compile_commandPyCF_DONT_IMPLY_DEDENTc                 C   s(   |   D ]\}}t|drd| |< q| S )N__call__T)itemshasattr)dnv r   :/opt/python-3.10.19/usr/lib/python3.10/test/test_codeop.pyunify_callables   s
   
r   c                   @   sj   e Zd ZdddZdddZdddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )CodeopTestssinglec           	      C   s   	 t jrZt|d|}| | |dkr8i i }}tj}t t_zt|| tt	|dd| W |t_n|t_w |dkrNddi}dt
||i}dt
||i}| t|t| d S t	|d|t}| t|d|| d S )N<input>r   evala   value)r   	is_jythonr   
assertTruesysstdoutioStringIOexeccompiler   assertEqualr   r   )	selfstrsymbolcoder	   rZsaved_stdoutctxZexpectedr   r   r   assertValid   s&   



zCodeopTests.assertValidc                 C   s   	 |  t||dd  d S )Nr!   )r   r   )r   r    r!   r   r   r   assertIncomplete/   s   zCodeopTests.assertIncomplete   c                 C   s\   	 zt ||d | d W d S  ty   | | Y d S  ty-   | |  Y d S w )Nr&   z$No exception raised for invalid code)r   ZfailSyntaxErrorr   OverflowError)r   r    r!   Z	is_syntaxr   r   r   assertInvalid3   s   zCodeopTests.assertInvalidc                 C   s  | j }tjs!| tdtdddt | tdtdddt n|d |d |d |d |d |d	 |d
 |d |d |d |d |d |d |d |d |d |d |d |d |d |d |d |dd |dd |dd |dd |dd |d d |d!d |d
 |d" |d |d# |dd |d d |d!d |d$ |d% |d& d S )'N passr   r   
a = 1z
a = 1a = 1
za = 1

z	

a = 1

zdef x():
  pass
zif 1:
 pass
z

if 1: pass
z

if 1: pass

zdef x():

 pass
zdef x():
  pass
  
zdef x():
  pass
 
zpass
z3**3
zif 9==3:
   pass
else:
   pass
z(if 1:
 pass
 if 1:
  pass
 else:
  pass
z#a
#b
a = 3
z#a

   
a=3
za=3

z
a = 9+ \
3z3**3r   z(lambda z: 
 z**3)z9+ \
3z9+ \
3
z

a**3z
 
a**3z
#a
#b
a**3z

if 1: a=1

z#a

   
a=3

z1def f():
 try: pass
 finally: [x for x in (1,2)]
zdef f():
 pass
#foo
z@a.b.c
def f():
 pass
)r%   r   r   r   r   r   r   )r   avr   r   r   
test_valid=   sf   











zCodeopTests.test_validc                 C   sV  | j }|d |d |d |d |d |d |d |d |d |d	 |d
 |d |d |d |d |d |d |d |d |d |d |d |d |d |d |d |d |d |dd |dd |dd |d d |d!d |d"d |d# |d$ |d% |d& |d' |d( |d) |d* |d+ |d, |d- |d. |d/ |d0 |d1 |d2 |d3 |d4 |d5 |d6 |d7 |d8 |d9 |d: |d; |d< |d= |d> |d? |d@ |dA |dB |dC |dD |dE |dF |dG |dH |dI |dJ |dK |dL |d |dM |dN |dO |d |dP |dQ |dR |dS |dT |dU |dV |dW |dX |dY |dZ |d[ |d\ |d] |d^ |d_ |d` |da |db |dc |dd |de |df d S )gNz(a **z(a,b,z(a,b,(za = (za = {zb + {zprint([1,
2,zprint({1:1,
2:3,zprint((1,
2,zif 9==3:
   pass
else:zif 9==3:
   pass
else:
zif 9==3:
   pass
else:
   passzif 1:zif 1:
z if 1:
 pass
 if 1:
  pass
 else:z!if 1:
 pass
 if 1:
  pass
 else:
z'if 1:
 pass
 if 1:
  pass
 else:
  passzdef x():z	def x():
z
def x():

zdef x():
  passzdef x():
  pass
 zdef x():
  pass
  z

def x():
  passza = 9+ \za = 'a\z	a = '''xyr,   r   r.   (z(9+z9+ \zlambda z: \z!if True:
 if True:
  if True:   
z@a(z@a(bz@a(b,z@a(b,cz@a(b,c,zfrom a import (zfrom a import (bzfrom a import (b,zfrom a import (b,czfrom a import (b,c,[z[az[a,z[a,bz[a,b,{z{az{a:z{a:bz{a:b,z{a:b,cz{a:b,c:z{a:b,c:dz	{a:b,c:d,za(za(bza(b,za(b,cza(b,c,za[za[bza[b,za[b:za[b:cza[b:c:za[b:c:dzdef a(zdef a(bzdef a(b,z	def a(b,cz
def a(b,c,z(az(a,z(a,bzif a:
 pass
elif b:zif a:
 pass
elif b:
 pass
else:zwhile a:zwhile a:
 pass
else:zfor a in b:zfor a in b:
 pass
else:ztry:ztry:
 pass
except:ztry:
 pass
finally:z!try:
 pass
except:
 pass
finally:zwith a:zwith a as b:zclass a:zclass a(z	class a(bz
class a(b,z
class a():z[x forz[x for x inz[x for x in (z(x forz(x for x inz(x for x in ()r'   r   Zair   r   r   test_incomplete   s   





zCodeopTests.test_incompletec                 C   s   | j }|d |d |d |d |d |d |d |d |d	 |d
 |d |dd |dd |dd |dd |dd |dd |dd |d |d |d |d |d |d |d d S )Nza bza @za b @za ** @za = za = 9 +zdef x():

pass
z

 if 1: pass

passz	a = 9+ \
za = 'a\ za = 'a\
r/   r   ]z())z[}z9+z	lambda z:z
return 2.3zif (a == 1 and b = 2): passzdel 1zdel (1,)zdel [1]zdel '1'z"[i for i in range(10)] = (1, 2, 3)r+   r6   r   r   r   test_invalid  s4   






zCodeopTests.test_invalidc                 C   sR   | j }|ddd |ddd |ddd |ddd |ddd |ddd d S )	Nz	raise = 4r   r&   zdef a-bzawait?z=!=za await raise bza await raise b?+1r9   r6   r   r   r   test_invalid_exec'  s   zCodeopTests.test_invalid_execc                 C   s@   |  tddjtdddj | tddjtdddj d S )Nr0   abcr   def)r   r   co_filenamer   ZassertNotEqual)r   r   r   r   test_filename0  s   zCodeopTests.test_filenamec              	   C   s8  t dtfdtf}td | t|jd W d    n1 s"w   Y  t ) | 	t
 tdt tddd W d    n1 sHw   Y  W d    n1 sWw   Y  t 2 | 	t
 tdt td	dd W d    n1 s}w   Y  W d    d S W d    d S 1 sw   Y  d S )
Nz	.*literalz	.*invalidz	'\e' is 0r   errorz1 is 1r   r&   z'\e')r   Zcheck_warningsSyntaxWarningDeprecationWarningr   r   lenwarningscatch_warningsZassertRaisesr)   simplefilterr   wr   r   r   test_warning6  s$    PzCodeopTests.test_warningc                 C   sP   t jdd}t d | d W d    n1 sw   Y  | |g  d S )NTrecordalwaysz'\e' + ()rD   rE   rF   r'   r   rG   r   r   r   test_incomplete_warningI  s
   
z#CodeopTests.test_incomplete_warningc                 C   s   t jdd}t d | d W d    n1 sw   Y  | t|d | |d jt | t	|d j
d | |d jd d S )	NTrJ   rL   z'\e' 1r(   r   zinvalid escape sequencer   )rD   rE   rF   r+   r   rC   categoryrB   ZassertRegexr    messagefilenamerG   r   r   r   test_invalid_warningO  s   
z CodeopTests.test_invalid_warningN)r   )r   r(   )__name__
__module____qualname__r%   r'   r+   r2   r7   r:   r;   r?   rI   rM   rQ   r   r   r   r   r      s    



B %	r   __main__)r   ZunittestrD   testr   Ztest.supportr   Zcodeopr   r   r   r   r   ZTestCaser   rR   mainr   r   r   r   <module>   s       E