o
    DD©iÀd  ã                   @   s¨   U d dl mZ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 d dlmZ eƒ r4endZeeegejf  ed< G d	d
„ d
eƒZG dd„ deƒZdS )é    )ÚAnyÚCallableÚOptionalN)Úparse_statement)ÚCSTNodeTestÚDummyIndentedBlock)Ú	is_native)Ú	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œfƒdCedDd3fdEdF„ƒZedGdH„ dIdJœdKdH„ dLdJœdMdH„ dNdJœdOdH„ dPdJœdQdH„ dRdJœdSdH„ dTdJœdUdH„ dVdJœdWdH„ dVdJœfƒdCedDd3fdXdY„ƒZd3S )ZÚ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©r9   r;   r:   ú# 4©r9   r;   r   r,   r&   r:   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)r6   r    )r   r   r    z#try: pass
except foo()as bar: pass
)r   r   ÚkwargsÚreturnc                 K   ó   | j di |¤Ž d S ©N© ©Úvalidate_node©ÚselfrM   rQ   rQ   úU/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_try.pyÚ
test_valid   s     NzTryTest.test_validc                   C   s   t  t  d¡¡S )Nr   )ÚcstÚAsNameÚNamerQ   rQ   rQ   rV   Ú<lambda>f  s    zTryTest.<lambda>zempty name identifier)Úget_nodeÚexpected_rec                   C   s   t jt  d¡t  d¡dS )NÚblar   )r7   )rX   rY   rZ   ÚSimpleWhitespacerQ   rQ   rQ   rV   r[   j  s    ÿzbetween 'as'c                   C   s&   t jt  t  ¡ f¡t  t  d¡¡dS )Nr^   )r    )rX   ÚExceptHandlerÚSimpleStatementSuiteÚPassrY   rZ   rQ   rQ   rQ   rV   r[   p  s    þzname for an empty typec                   C   s(   t jt  t  ¡ f¡t  d¡t  d¡dS )Nr"   r   ©r   r   )rX   r`   ra   rb   rZ   r_   rQ   rQ   rQ   rV   r[   w  s
    ýzat least one space after exceptc                   C   s   t  t  t  ¡ f¡¡S )N)rX   ÚTryra   rb   rQ   rQ   rQ   rV   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&   )rX   rd   ra   rb   ÚElseÚFinallyrQ   rQ   rQ   rV   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©r;   ©r;   r   )rX   rd   ra   rb   r`   rQ   rQ   rQ   rV   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 )Nrg   r   )r;   r   rh   )rX   rd   ra   rb   r`   rZ   rQ   rQ   rQ   rV   r[   ™  s    ÿþüþc                 K   rO   rP   )Úassert_invalidrT   rQ   rQ   rV   Útest_invalidc  s   GzTryTest.test_invalid)Ú__name__Ú
__module__Ú__qualname__r
   rX   rd   ra   rb   r`   r_   r   r	   rZ   rY   rf   re   Ú	EmptyLineÚCommentr   ÚIndentedBlockÚSimpleStatementLineÚ	LeftParenÚ
RightParenÚTupleÚElementÚCommaÚCallr   rW   rj   rQ   rQ   rQ   rV   r      sV   þÿþ	ôþÿþ	õýÿþ
óýýþõþçþùþÿø
óþÿø
óþÿ÷òýöÿýýåà$ýýþõíã!ýýþõíþá#ÿüÿÿÿóþã!ýýÿþðÿþùÿýÿþêþüÿþñ  Çÿ  Mþüûú	þú	ôóÌÿ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œfƒd*ed+d,fd-d.„ƒZd,S )/Ú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   rc   r(   z/try: pass
except* KeyError: pass
finally: pass
r)   r+   z,try: pass
except* KeyError: pass
else: pass
r-   r0   r1   r3   r4   r5   r8   )r9   r   r    r   Úwhitespace_after_starr:   r;   r<   r=   r>   r?   zW# 1
try : pass
# 2
except  *TypeError  as  e : pass
# 3
else : pass
# 4
finally : pass
r@   rA   r/   z\try: pass
except* TypeError as e: pass
except* KeyError as e: pass
else: pass
finally: pass
)é   r'   rM   rN   Nc                 K   rO   rP   rR   rT   rQ   rQ   rV   rW   ®  s    zTryStarTest.test_valid)rk   rl   rm   r
   rX   ÚTryStarra   rb   ÚExceptStarHandlerrZ   r   rY   r	   r_   rf   re   rn   ro   r   rW   rQ   rQ   rQ   rV   rx   ­  s   þÿþ	õýÿþ
óýýúþìýÿ÷òýÿ÷òýõÿýýäß%ýýúñèƒÿ rx   )Útypingr   r   r   ÚlibcstrX   r   Úlibcst._nodes.tests.baser   r   Úlibcst._parser.entrypointsr   Úlibcst.metadatar	   Úlibcst.testing.utilsr
   r   ÚstrÚCSTNodeÚ__annotations__r   rx   rQ   rQ   rQ   rV   Ú<module>   s   ÿ   