o
    DD©iñ  ã                   @   s`   d dl mZ d dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZ G dd„ deƒZdS )	é    )ÚAnyN©Úparse_statementÚPartialParserConfig)ÚCSTNodeTestÚDummyIndentedBlock)Ú	CodeRange)Údata_providerc                   @   sV  e Zd Zee e d¡e e d¡¡e e 	¡ f¡¡de
dœeje d¡e e d¡¡e e 	¡ f¡e ¡ dddd„ dœeje d	¡e ¡ e eje d¡e e d¡¡e e 	¡ f¡e ¡ df¡e ¡ dd
dd„ dœe e d¡e e d¡¡e e 	¡ f¡e e e 	¡ f¡¡¡de
dœede e d¡e e d¡¡e e 	¡ f¡¡ƒdddœede e d¡e e d¡¡e e e 	¡ f¡f¡¡ƒddeddƒdœeje d¡e e d¡¡e e e 	¡ f¡f¡eje e e 	¡ f¡f¡eje d¡dfdeje d¡dfdddeddƒdœejejde ¡ fe ¡ fdeje d¡e ¡ fe ¡ fde e 	¡ f¡e d¡e d¡e d¡dde
edd ƒdœeje d¡e e d¡¡e e 	¡ f¡e d!¡e d!¡e d!¡e d!¡d"d#e
edd$ƒdœf	ƒd%ed&dfd'd(„ƒZed)d„ d*d+œd,d„ d-d+œd.d„ d/d+œfƒd%ed&dfd0d1„ƒZdS )2ÚForTestÚtargetÚiterzfor target in iter(): pass
)ÚnodeÚcodeÚparser)Úasynchronousz!async for target in iter(): pass
c                 C   ó   t | tdddS )Nz3.7©Úpython_version©Úconfigr   ©r   © r   úU/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_for.pyÚ<lambda>%   ó    
ÿzForTest.<lambda>Úfooz6async def foo():
    async for target in iter(): pass
c                 C   r   )Nz3.6r   r   r   r   r   r   r   r   ;   r   z&for target in iter(): pass
else: pass
z    z    for target in iter(): pass
Nz'    for target in iter():
        pass
)é   é   )é   é   )r   r   r   Úexpected_positionz# else comment)Úcomment)Úleading_linesz# leading commentzO# leading comment
for target in iter():
    pass
# else comment
else:
    pass
)r   r   )é   é   )ÚlparÚrparÚ )Úwhitespace_after_forÚwhitespace_before_inÚwhitespace_after_inzfor(target)in(iter()): pass
)r   r   )r   é   z  )r(   r)   r*   Úwhitespace_before_colonz for  target  in  iter()  : pass
)r   é   ÚkwargsÚreturnc                 K   ó   | j di |¤Ž d S ©Nr   )Úvalidate_node©Úselfr.   r   r   r   Ú
test_valid   s    zForTest.test_validc                   C   ó6   t jt  d¡t  t  d¡¡t  t  ¡ f¡t  d¡dS )Nr   r   r'   )r(   ©ÚcstÚForÚNameÚCallÚSimpleStatementSuiteÚPassÚSimpleWhitespacer   r   r   r   r   ¤   ó    üz0Must have at least one space after 'for' keyword)Úget_nodeÚexpected_rec                   C   r6   )Nr   r   r'   )r)   r7   r   r   r   r   r   ­   r?   z0Must have at least one space before 'in' keywordc                   C   r6   )Nr   r   r'   )r*   r7   r   r   r   r   r   ¶   r?   z/Must have at least one space after 'in' keywordc                 K   r0   r1   )Úassert_invalidr3   r   r   r   Útest_invalid¡   s    zForTest.test_invalid)Ú__name__Ú
__module__Ú__qualname__r	   r8   r9   r:   r;   r<   r=   r   ÚAsynchronousÚFunctionDefÚ
ParametersÚIndentedBlockÚElser   ÚSimpleStatementLiner   Ú	EmptyLineÚCommentÚ	LeftParenÚ
RightParenr>   r   r5   rC   r   r   r   r   r
      s   ýùüøüÿÿ
óïüøýþöýþõÿþÿöïÿýôïù	ôƒÿ ù
ù
ùíÿr
   )Útypingr   Úlibcstr8   r   r   Úlibcst._nodes.tests.baser   r   Úlibcst.metadatar   Úlibcst.testing.utilsr	   r
   r   r   r   r   Ú<module>   s   