o
    DDi                     @   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edejededddee	ddd	ee
ed
e ede
ede edejededddee	ddd	ejededejededdededddee	ddd	ejededejededdejeddejeddddee	ddd	ejededejededde ge gddee	ddd	eededejedeeded ejed!ed"dejed#ed$dged$d%d&ee	dd'd	eedejde ge gdejededed$d(d)ee	ddd	gd*ed+d,fd-d.Zed/d0 d1d2d3d0 d4d2d5d0 d6d2gd*ed+d,fd7d8Zd,S )9DictCompTestkvabtargetiterz{k: v for a in b})   r   )r      )nodecodeparserexpected_positionk1k2v1v2z{k1 + k2: v1 + v2 for a in b})r      	z		)whitespace_before_colonwhitespace_after_colonz{k	:		v for a in b})r      )whitespace_after)whitespace_before)lbracerbracez{	k: v for a in b		})r      )lparrparz({k: v for a in b}))r   r   )r      cdefgh )r   r   ifswhitespace_after_inz${a: b for c in{d: e for f in g}if h})r   $   r   r   r   z{k: (v)for a in b}kwargsreturnNc                 K      | j di | d S N )validate_nodeselfr1   r5   r5   [/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_dict_comp.py
test_valid   s   nzDictCompTest.test_validc                   C   s:   t jt dt dt jt dt ddt  gdS )Nr   r	   r
   r   r   )r#   )cstDictCompNameCompFor	LeftParenr5   r5   r5   r9   <lambda>   s    zDictCompTest.<lambda>zleft paren without right paren)get_nodeexpected_rec                
   C   s8   t t dt dt jt dt dt ddS )Nr   r	   r
   r   r,   r0   )r;   r<   r=   r>   SimpleWhitespacer5   r5   r5   r9   r@      s    z2Must have at least one space before 'for' keyword.c                   C   s>   t t dt dt jt dt dt  t ddS )Nr   r	   r
   r   r,   )r   r   asynchronousr   )r;   r<   r=   r>   AsynchronousrC   r5   r5   r5   r9   r@      s    z4Must have at least one space before 'async' keyword.c                 K   r3   r4   )assert_invalidr7   r5   r5   r9   test_invalid   s   )zDictCompTest.test_invalid)__name__
__module____qualname__r   r;   r<   r=   r>   r   r   BinaryOperationAddrC   LeftCurlyBraceRightCurlyBracer?   
RightParenCompIfr   r:   rG   r5   r5   r5   r9   r      s    	m	
(r   )typingr   libcstr;   r   libcst._nodes.tests.baser   libcst.metadatar   libcst.testing.utilsr   r   r5   r5   r5   r9   <module>   s   