o
    DDi+                     @   sp   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 d dlmZ G dd	 d	eZdS )
    )AnyCallableN)parse_expressionparse_statement)CSTNodeTestparse_expression_as)	is_native)	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,   W/var/www/Datamplify/venv/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,   r0   <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   )r2   r3   ElementName	LeftParen
RightParenr,   r,   r,   r0   r4      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&   r2   Forr3   r6   r7   SimpleStatementSuitePassSimpleWhitespacer,   r,   r,   r0   r4          z1Must have at least one space after 'for' keyword.c                   C   r:   Nr;   r   r<   r   )r    r!   r   r#   r=   r,   r,   r,   r0   r4      rB   z1Must have at least one space before 'in' keyword.c                   C   r:   rC   )r2   r>   r3   StarredElementr7   r?   r@   rA   r,   r,   r,   r0   r4     s    get_nodeexpected_rec                 C   s   |  || d S )N)assert_invalid)r/   rE   rF   r,   r,   r0   test_invalid   s   1zTupleTest.test_invalidz(a, *b)z3.5)python_versionT)r   r   expect_successz3.3Fc                 K   s0   t  r|dds| d | jdi | d S )NrJ   Tz+parse errors are disabled for native parserr,   )r   getskipTestassert_parsesr.   r,   r,   r0   test_versions  s   
zTupleTest.test_versions)__name__
__module____qualname__r
   r2   r3   r   r6   r7   rD   r8   r9   Commar	   SimpleStatementLineExprr   r>   r?   r@   rA   TrailingWhitespaceCommentr   r1   r   CSTNodestrrH   r   rN   r,   r,   r,   r0   r      s   	
  L	
.r   )typingr   r   libcstr2   r   r   libcst._nodes.tests.baser   r   libcst._parser.entrypointsr   libcst.metadatar	   libcst.testing.utilsr
   r   r,   r,   r,   r0   <module>   s   