o
    noiĢn  ć                   @   s   U d dl mZmZ d dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlmZ eZeegejf ed< G dd	 d	eZG d
d deZdS )é    )ŚAnyŚCallableN)Śparse_statement)ŚCSTNodeTestŚDummyIndentedBlock)Ś	CodeRange)Śdata_providerŚnative_parse_statementc                   @   s  e Zd Zeeje e ” f”eje e ” f”e 	d”dfdde
edddeje e ” f”eje e ” f”e d”d	fdd
e
deje e ” f”eje e ” f”e d”e e d””dfdde
edddeje e ” f”eje e ” f”e d”e e d””deje e ” f”e d”e e d””deje e ” f”e 	d”dfdde
edddeje e ” f”e e e ” f””dde
edddeje e ” f”eje e ” f”e 	d”dfe e e ” f””dde
edddeje e ” f”eje e ” f”e 	d”dfe e e ” f””dde
edddeje e ” f”eje e ” f”e 	d”dfe e e ” f””e e e ” f””dde
edd dejeje d!”d"fe e ” f”ejeje d#”d"fe d”eje d”e 	d$”e 	d$”d%e 	d$”e 	d&”e e ” f”d'fejeje d(”d"fe e ” f”e 	d&”d)ejeje d*”d"fe e ” f”e 	d&”d)e 	d&”d+d,e
ed-d.deje e ” f”eje e ” f”e d”e e d””deje e ” f”e d”e e d””deje e ” f”e 	d”dfe e e ” f””e e e ” f””dd/e
edd0ded1eje e ” f”eje e ” f”e d”e e d””deje e ” f”e d”e e d””deje e ” f”e 	d”dfe e e ” f””e e e ” f””dd2d3ded1eje e e ” f”f”eje e e ” f”f”e 	d”dfe e e e ” f”f””e e e e ” f”f””dd4d3deje e ” f”eje e ” f”e 	d”ejde ” fe ” fd5d6fdd7e
deje e ” f”eje e ” f”e 	d”e eje d8”eje 	d&”d9d:e e d;””g”d6fdd<e
deje e ” f”eje e ” f”e 	d&”e e d=””eje 	d”e d>”d?d@gddAdBeje e ” f”eje e ” f”ejejejdCdDdDejejdEdDdDgg g dFd	gddGdBfdHedId3fdJdKZedLdM dNdOdPdM dQdOdRdM dSdOdTdM dUdOdVdM dWdOdXdM dYdOdZdM d[dOd\dM d[dOfdHedId3fd]d^Zd3S )_ŚTryTestŚ )Śwhitespace_after_except©Śhandlersztry: pass
except: pass
©é   r   )é   é   ©ŚnodeŚcodeŚparserŚexpected_positionŚ	Exception©Śtypez!try: pass
except Exception: pass
©r   r   r   Śexc©r   Śnamez(try: pass
except Exception as exc: pass
)r   é   Ś	TypeErrorŚeŚKeyErrorzNtry: pass
except TypeError as e: pass
except KeyError as e: pass
except: pass
)é   r   )Ś	finalbodyztry: pass
finally: pass
)r   é   ©r   r$   z%try: pass
except: pass
finally: pass
©é   r%   ©r   Śorelsez"try: pass
except: pass
else: pass
©r(   é
   ©r   r*   r$   z0try: pass
except: pass
else: pass
finally: pass
)r#   r%   ś# 1©Ścommentś# 2ś  ©Śwhitespace_before_asŚwhitespace_after_asś )Śleading_linesr   r   r   Śwhitespace_before_colonŚbodyś# 3©r7   r9   r8   ś# 4©r7   r9   r   r*   r$   r8   zV# 1
try : pass
# 2
except  TypeError  as  e : pass
# 3
else : pass
# 4
finally : pass
©r   r   ©é   é   zgtry: pass
except TypeError as e: pass
except KeyError as e: pass
except: pass
else: pass
finally: pass
)é   r%   z    z    try: pass
    except TypeError as e: pass
    except KeyError as e: pass
    except: pass
    else: pass
    finally: pass
Nz`    try:
        pass
    except:
        pass
    else:
        pass
    finally:
        pass
)ŚlparŚrpar)r   r   z"try: pass
except(Exception): pass
ŚIOError©Śwhitespace_after)ŚcommaŚImportErrorz-try: pass
except(IOError, ImportError): pass
ŚfooŚbar)r4   r   )r   r   r   z#try: pass
except foo()as bar: pass
)r   r   Ś
ValueError©ŚvalueŚRuntimeError©ŚelementsrC   rD   z0try: pass
except ValueError, RuntimeError: pass
ŚkwargsŚreturnc                 K   ó   | j di |¤ d S ©N© ©Śvalidate_node©ŚselfrR   rV   rV   śP/home/ubuntu/.local/lib/python3.10/site-packages/libcst/_nodes/tests/test_try.pyŚ
test_valid   s     jzTryTest.test_validc                   C   s   t  t  d””S )Nr   )ŚcstŚAsNameŚNamerV   rV   rV   r[   Ś<lambda>  s    zTryTest.<lambda>zempty name identifier)Śget_nodeŚexpected_rec                   C   s   t jt  d”t  d”dS )NŚblar   )r5   )r]   r^   r_   ŚSimpleWhitespacerV   rV   rV   r[   r`     s    ’zbetween 'as'c                   C   s&   t jt  t  ” f”t  t  d””dS )Nrc   )r   )r]   ŚExceptHandlerŚSimpleStatementSuiteŚPassr^   r_   rV   rV   rV   r[   r`     s    žzname for an empty typec                   C   s(   t jt  t  ” f”t  d”t  d”dS )Nr    r   ©r   r   )r]   re   rf   rg   r_   rd   rV   rV   rV   r[   r`     s
    żzat least one space after exceptc                   C   s   t  t  t  ” f””S )N)r]   ŚTryrf   rg   rV   rV   rV   r[   r`     s    z%at least one ExceptHandler or Finallyc                	   C   s@   t jt  t  ” f”t  t  t  ” f””t  t  t  ” f””dS )N)r*   r$   )r]   ri   rf   rg   ŚElseŚFinallyrV   rV   rV   r[   r`     s
    żz3at least one ExceptHandler in order to have an Elsec                   C   sL   t jt jt  ” gdt jt jt  ” gddt jt jt  ” gddfdS )N©r9   ©r9   r   )r]   ri   rf   rg   re   rV   rV   rV   r[   r`   ¤  s    ’’üžz.The bare except: handler must be the last one.c                   C   sT   t jt jt  ” gdt jt jt  ” gddt jt jt  ” gdt  d”dfdS )Nrl   r   )r9   r   rm   )r]   ri   rf   rg   re   r_   rV   rV   rV   r[   r`   ²  s    ’žüžc                 K   rT   rU   )Śassert_invalidrY   rV   rV   r[   Śtest_invalid|  s   GzTryTest.test_invalid)Ś__name__Ś
__module__Ś__qualname__r   r]   ri   rf   rg   re   rd   r   r   r_   r^   rk   rj   Ś	EmptyLineŚCommentr   ŚIndentedBlockŚSimpleStatementLineŚ	LeftParenŚ
RightParenŚTupleŚElementŚCommaŚCallr   r\   ro   rV   rV   rV   r[   r
      s   ž’ž	ōž’ž	õż’ž
óżżžõžēžłž’ų
óž’ų
óž’÷ņżö’żżåą$żżžõķć!żżžõķžį#’ü’’’óžć!żż’žš’žł’ż’žźžü’žń’’’’śņž’žē  µ’  ižüūś	žś	ōóĢ’Fr
   c                   @   s&  e Zd Zeeje e ” f”eje e ” f”e 	d”dfdde
deje e ” f”eje e ” f”e 	d”e e 	d””dfdde
ed	d
deje e ” f”eje e ” f”e 	d”e e 	d””deje e ” f”e 	d”e e 	d””dfdde
ed	ddeje e ” f”eje e ” f”e 	d”e d”dfe e e ” f””dde
ed	ddeje e ” f”eje e ” f”e 	d”e d”dfe e e ” f””dde
ed	ddejeje d”dfe e ” f”ejeje d”dfe 	d”eje 	d”e d”e d”de d”e d”e d”e e ” f”dfejeje d ”dfe e ” f”e d”d!ejeje d"”dfe e ” f”e d”d!e d”d#d$e
ed%d&deje e ” f”eje e ” f”e 	d”e e 	d””deje e ” f”e 	d”e e 	d””dfe e e ” f””e e e ” f””d'd(e
ed	d)deje e ” f”eje e ” f”ejejej	d*d+eje d”d,d-ejej	d.d+d+gg g d/dgdd0e
dfd1ed2d3fd4d5Zd3S )6ŚTryStarTestr   r   r   z"try: pass
except* Exception: pass
r   r   r   z)try: pass
except* Exception as exc: pass
r   )r   é   r   r    r!   r"   zCtry: pass
except* TypeError as e: pass
except* KeyError as e: pass
)r(   é   r   rh   r&   z/try: pass
except* KeyError: pass
finally: pass
r'   r)   z,try: pass
except* KeyError: pass
else: pass
r+   r.   r/   r1   r2   r3   r6   )r7   r   r   r   Śwhitespace_after_starr8   r9   r:   r;   r<   r=   zW# 1
try : pass
# 2
except  *TypeError  as  e : pass
# 3
else : pass
# 4
finally : pass
r>   r?   r-   z\try: pass
except* TypeError as e: pass
except* KeyError as e: pass
else: pass
finally: pass
)é   r%   rL   rM   rF   )rN   rH   rO   rP   z1try: pass
except* ValueError, RuntimeError: pass
rR   rS   Nc                 K   rT   rU   rW   rY   rV   rV   r[   r\   Ē  s    <zTryStarTest.test_valid)rp   rq   rr   r   r]   ŚTryStarrf   rg   ŚExceptStarHandlerr_   r	   r^   r   rd   rk   rj   rs   rt   ry   rz   r{   r   r\   rV   rV   rV   r[   r}   Ę  s<   ž’ž	õż’ž
óżżśžģż’÷ņż’÷ņżõ’żżäß%żżśńč’’ü’’÷ļž’žć ē’ ;r}   )Śtypingr   r   Ślibcstr]   r   Ślibcst._nodes.tests.baser   r   Ślibcst.metadatar   Ślibcst.testing.utilsr   r	   ŚstrŚCSTNodeŚ__annotations__r
   r}   rV   rV   rV   r[   Ś<module>   s      8