o
    DDiX                     @   sX   d dl mZ d dl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dS )	    )AnyN)parse_expression)CSTNodeTest)	CodeRange)data_providerc                /   @   s
  e Zd Zeeeddeddejededddeddee	ededd	eddeede
ed
fddddeede
ed
e
ede
edfddddeedej
ed
dfdeddejedej
ed
eddfededddeddejedej
ed
ejedddfededddeddeedej
ed
ejedddej
edejedddej
eddfdeddeedej
eded
dfddddeedej
eded
dej
ededdej
ededdfddddeedej
ede ed
dfdeddeedej
ede ed
ejedddej
ede edejedddej
ede eddfdeddeedej
deddfd dddeedej
deddej
deddej
deddfd!dddeedej
deddfd eddeedej
dedejeddd"ej
dedejeddd"ej
deddfd!eddeedej
d#eddfd$dddeedej
d#eddej
d#eddej
d#eddfd%dddeedej
d#eddfd$eddeedej
d#edejeddd"ej
d#edejeddd"ej
d#eddfd%eddeedej
ed&dej
ded'dej
ed(dej
ed)dej
ded*dej
ed+dej
ded,dej
ed-ed
dej
ded.dej
ed/eddej
ded0dej
ed1eddej
d#ed2dej
ed3ed4dej
d#ed5dfd6dddeedej
ed&ejedddej
ded'ejeddd"ej
ed(ejedddej
ed)ejedddej
ded*ejeddd"ej
ed+ejedddej
ded,ejeddd"ej
ed-e ed
ejedddej
ded.ejeddd"ej
ed/e edejedddej
ded0ejeddd"ej
ed1e edejedddej
d#ed2ejeddd"ej
ed3e ed4ejedddej
d#ed5dfd6eddejejeddfedededej
ded&ejeded7d8d9ej
ded7ded'ejeddd:ej
ed-ejed;ed;d8ed
ejedddej
d#deded2edd<fejedd=fd>d?eed@dAdej
ded7ded'ejeddd:dBdedCdDdfdEedFdfdGdHZedIdJ dKdLdMdJ dNdLdOdJ dPdLdQdJ dRdLdSdJ dTdLdUdJ dVdLdWdJ dXdLdYdJ dZdLfdEedFdfd[d\ZdS )]CallTestfoozfoo()N)nodecodeparserexpected_position )whitespace_before_argszfoo( )barz	foo.bar()1zfoo(1)23zfoo(1, 2, 3)value)r   whitespace_after_arg)whitespace_after_funcr   z	foo ( 1 ))whitespace_after)r   commaz
foo ( 1, )onekeywordr   zfoo(one = 1)twothreez foo(one = 1, two = 2, three = 3))r   equalr   )r   r   r   r   *starr   z	foo(*one)zfoo(*one, *two, *three))r!   r   r   **z
foo(**one)zfoo(**one, **two, **three)pos1list1pos2pos3list2pos4list3kw1list4kw2list5kw3dict1kw44dict2zyfoo(pos1, *list1, pos2, pos3, *list2, pos4, *list3, kw1 = 1, *list4, kw2 = 2, *list5, kw3 = 3, **dict1, kw4 = 4, **dict2)z  )whitespace_beforer   )r   r   r   )r!   whitespace_after_starr   r   r    )r!   r   r4   r   r   )r3   )lparfuncr   r   argsrparz-( foo ( pos1 ,  *  list1, kw1=1, ** dict1 ) ))      )r:   +   z
*  list1, )r:   r   )r:      kwargsreturnc                 K      | j di | d S N )validate_nodeselfr>   rB   rB   V/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_call.py
test_valid   s      =zCallTest.test_validc                   C      t jt dt  fdS )Nr   )r7   r6   )cstCallName	LeftParenrB   rB   rB   rF   <lambda>      zCallTest.<lambda>zleft paren without right paren)get_nodeexpected_rec                   C   rH   )Nr   )r7   r9   )rI   rJ   rK   
RightParenrB   rB   rB   rF   rM     rN   zright paren without left parenc                   C   s*   t jt dt jt  t ddfdS )Nr   'baz')r   r   r7   r8   )rI   rJ   rK   ArgAssignEqualSimpleStringrB   rB   rB   rF   rM     s    z2Must have a keyword when specifying an AssignEqualc                   C   s.   t jt dt jdt dt ddfdS )Nr   r   r   rR   )r!   r   r   rS   rI   rJ   rK   rT   rV   rB   rB   rB   rF   rM     s    z,Cannot specify a star and a keyword togetherc                   C   s&   t jt dt jdt ddfdS )Nr   z***rR   r    rS   rW   rB   rB   rB   rF   rM     s    z/Must specify either '', '\*' or '\*\*' for starc                   C   s8   t jt dt jdt ddt jdt ddfdS )Nr   r"   r   r    r   bazrS   rI   rJ   rK   rT   rB   rB   rB   rF   rM     s    zHCannot have iterable argument unpacking after keyword argument unpackingc                   C   s6   t jt dt jdt ddt jt ddfdS )Nr   r"   r   r    rX   r   rS   rY   rB   rB   rB   rF   rM     s    z@Cannot have positional argument after keyword argument unpackingc                   C   s<   t jt dt jt dt ddt jt ddfdS )Nr   argrR   r   z'bar'r   rS   rW   rB   rB   rB   rF   rM     s    z6Cannot have positional argument after keyword argumentc                 K   r@   rA   )assert_invalidrD   rB   rB   rF   test_invalid  s   WzCallTest.test_invalid)__name__
__module____qualname__r   rI   rJ   rK   r   SimpleWhitespace	AttributerT   IntegerCommarU   rL   rQ   r   r   rG   r\   rB   rB   rB   rF   r      sN   
 

				LS	!(/      <
	Vr   )typingr   libcstrI   r   libcst._nodes.tests.baser   libcst.metadatar   libcst.testing.utilsr   r   rB   rB   rB   rF   <module>   s   