o
    noi+                     @   sd   d dl mZ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 )	    )AnyCallableN)parse_expressionparse_statement)CSTNodeTestparse_expression_as)	CodeRange)data_providerc                   @   s  e Zd Zeeg dedeeedgdddee	edgdddeeedeedgd	ddejeedeedgg g d
dddejeedeedge
 e
 ge e gd
dddee	ede	edgdddeejede dejede dgdedeej	ede dej	ede dgdeedddejejejejede de	edgg g d
dgddedejejejej	ede dejede de	edgg g d
dgddedejeejede deedgedee gededddedejejejejde
 ge gd
e deejde
 ge gd
gg g d
edee gededddedejejej	ed e dgg g d
ed!ee gedd"d#edejeejejede dejede dgg g d
gejed$ed%d&d'd(edgd)ed*dfd+d,Zed-d. d/fd0d. d1fd2d. d3fd4d. d5fd6d. d5ffd7eg ejf d8ed*dfd9d:Zed;ed<d=d>d?d;ed@d=dAd?fd)ed*dfdBdCZdS )D	TupleTestz())nodecodeparsersingle_elementz(single_element,)Nz(*single_element,)onetwoz
(one, two)lparrparzone, twoz((one, two))z(*one, *two))commaz
(one,two,)z(*one,*two,))   r   )r      )r   r   r   expected_position)value)bodyz	one,*two
threez*one,two,*three
kvabc )targetiterr   whitespace_after_forwhitespace_before_inzfor(k,v)in abc: pass
zfor(k),(v)in abc: pass
foobarr   r    r   r!   zfor*foo, in bar: pass
z  z	# comment)
whitespacecomment)trailing_whitespacezone,two,  # comment
kwargsreturnc                 K   s   | j di | d S )N )validate_nodeselfr)   r+   r+   R/home/ubuntu/.local/lib/python3.10/site-packages/libcst/_nodes/tests/test_tuple.py
test_valid   s    MzTupleTest.test_validc                   C   s   t jg g g dS )Nr   )cstTupler+   r+   r+   r/   <lambda>   s    zTupleTest.<lambda>z3A zero-length tuple must be wrapped in parentheses.c                   C   s0   t jt t dgt  t  gt  gdS )N
mismatchedr   )r1   r2   ElementName	LeftParen
RightParenr+   r+   r+   r/   r3      s
    zunbalanced parensc                   C   D   t jt jt t dgg g dt dt t  gt ddS )Nelr   itr   r%   r1   Forr2   r5   r6   SimpleStatementSuitePassSimpleWhitespacer+   r+   r+   r/   r3          z1Must have at least one space after 'for' keyword.c                   C   r9   Nr:   r   r;   r   )r   r    r   r"   r<   r+   r+   r+   r/   r3      rA   z1Must have at least one space before 'in' keyword.c                   C   r9   rB   )r1   r=   r2   StarredElementr6   r>   r?   r@   r+   r+   r+   r/   r3      s    get_nodeexpected_rec                 C   s   |  || d S )N)assert_invalid)r.   rD   rE   r+   r+   r/   test_invalid   s   1zTupleTest.test_invalidz(a, *b)z3.5)python_versionT)r   r   expect_successz3.3Fc                 K   s*   | dds| d | jdi | d S )NrI   Tz+parse errors are disabled for native parserr+   )getskipTestassert_parsesr-   r+   r+   r/   test_versions  s   
zTupleTest.test_versions)__name__
__module____qualname__r	   r1   r2   r   r5   r6   rC   r7   r8   Commar   SimpleStatementLineExprr   r=   r>   r?   r@   TrailingWhitespaceCommentr   r0   r   CSTNodestrrG   r   rM   r+   r+   r+   r/   r
      s   	
  L	
.r
   )typingr   r   libcstr1   r   r   libcst._nodes.tests.baser   r   libcst.metadatar   libcst.testing.utilsr	   r
   r+   r+   r+   r/   <module>   s   