o
    DDiZ"                     @   s   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 d dlmZ G d	d
 d
eZG dd deZdS )    )AnyCallableOptionalN)parse_statement)CSTNodeTestparse_statement_as)	is_native)ensure_type)	CodeRange)data_providerc                   @   s"  e Zd Zee dfeeddfeeeeddfeje	 fe
de fddfejejde	 fe fded	d
deddfeejejede	 fe fded	ddfejej	eddfe
dedejeddfddfejej	eddfejeededdedejeddfddeddfeje
dedddeddff		d1dejdedee d dfd!d"Zed#d$ d%fd&d$ d'fd(d$ d)fd*d$ d)fd+d$ d,ffd-eg ejf d.ed dfd/d0ZdS )2YieldConstructionTestyieldayield ayield from a()5)lparvaluerpar	(yield 5)r   r    whitespace_after_yieldyield(a))   r   )r      whitespace_after_fromyield from(a()) whitespace_after  whitespace_beforer   r   r   r   ( yield  5 )bla( yield  from  bla() ))r      )r      zfrom 5)r      Nnodecodepositionreturnc                 C   s   | j |||d d S )N)expected_positionvalidate_nodeselfr-   r.   r/    r6   W/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_yield.py
test_valid   s   Kz YieldConstructionTest.test_validc                   C      t jt  fdS )N)r   )cstYield	LeftParenr6   r6   r6   r7   <lambda>c       zYieldConstructionTest.<lambda>zleft paren without right parenc                   C   r9   )N)r   )r:   r;   
RightParenr6   r6   r6   r7   r=   g   r>   zright paren without left parenc                   C   s   t jt dt ddS Nr   r   r   )r:   r;   NameSimpleWhitespacer6   r6   r6   r7   r=   l   s    z2Must have at least one space after 'yield' keywordc                   C   s&   t jt t t dt ddS r@   r:   r;   FromCallrA   rB   r6   r6   r6   r7   r=   r   s    c                   C   s&   t t jt t dt ddS )Nr   r   r   rC   r6   r6   r6   r7   r=   z   s    z1Must have at least one space after 'from' keywordget_nodeexpected_rec                 C   s   |  || d S N)assert_invalid)r5   rF   rG   r6   r6   r7   test_invalid_   s   (z"YieldConstructionTest.test_invalidrH   )__name__
__module____qualname__r   r:   r;   rA   rD   rE   r<   Integerr?   rB   r
   CSTNodestrr   r8   r   rJ   r6   r6   r6   r7   r      s    

	

	I	%r   c                   @   s  e Zd Zee dfejededddfejeje	ededdedddfeje
 fedede fd	d
fejejde
 fe fdedddfejejej	ede
 fe fdeddedddfejej
eddfededejeddfddfejej
eddfeje	ededdedejeddfddff	d'dejdedee ddfddZededdd d!ded"dd#d!fd$eddfd%d&ZdS )(YieldParsingTestr   r   r    r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r!   r#   r$   r&   r'   r(   r)   Nr-   r.   r/   r0   c                 C   s   |  ||dd  d S )Nc                 S   s    t t t| tjjd tjjS )Nr   )r	   r   r:   SimpleStatementLinebodyExprr   )r.   r6   r6   r7   r=      s
    z-YieldParsingTest.test_valid.<locals>.<lambda>r2   r4   r6   r6   r7   r8      s
   QzYieldParsingTest.test_validzyield from xz3.3)python_versionT)r.   parserexpect_successz3.1Fkwargsc                 K   s0   t  r|dds| d | jdi | d S )NrW   Tz+parse errors are disabled for native parserr6   )r   getskipTestassert_parses)r5   rX   r6   r6   r7   test_versions   s   
zYieldParsingTest.test_versionsrH   )rK   rL   rM   r   r:   r;   rA   rB   rD   rE   r<   rN   r?   rO   rP   r   r
   r8   r   r   r\   r6   r6   r6   r7   rQ      s    

	OrQ   )typingr   r   r   libcstr:   r   libcst._nodes.tests.baser   r   libcst._parser.entrypointsr   libcst.helpersr	   libcst.metadatar
   libcst.testing.utilsr   r   rQ   r6   r6   r6   r7   <module>   s   y