o
    DDiQt                     @   s   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
 d dlmZ G dd	 d	eZG d
d deZG dd deZG dd deZdS )    )AnyN)parse_statement)CSTNodeTest)ensure_type)	CodeRange)data_providerc                   @   s\  e Zd Zeejeedfdddejeeededfdddejeeededfdddejeeededeeededfdde	d	d
dejejeedede
eddfdddejejeedede
eddejeedede
eddfdddejejeedede
eddeeededeeededejede
eddfdddejejejededejededddej
edededdejededddejedej
edededddfeddde	d	ddfdeddfd d!Zed"d# d$d%d&d# d'd%d(d# d'd%d)d# d'd%d*d# d+d%d,d# d-d%d.d# d-d%d/d# d0d%fdeddfd1d2ZdS )3ImportCreateTestfoonames
import foonodecodebarimport foo.barbazimport foo.bar, foo.baz   r   r      r   r   expected_positionasnameimport foo.bar as baz%import foo.bar as baz, foo.baz as barinstagramunittestut:import foo.bar as baz, insta.gram, foo.baz, unittest as ut whitespace_beforewhitespace_afterdot  whitespace_before_aswhitespace_after_asr   commar   whitespace_after_import.import  foo . bar  as  baz ,  unittest  as  ut)r   .   kwargsreturnNc                 K      | j di | d S N validate_nodeselfr3   r7   r7   X/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_import.py
test_valid   s    zImportCreateTest.test_validc                   C   s   t jddS )Nr7   r
   )cstImportr7   r7   r7   r<   <lambda>   s    zImportCreateTest.<lambda>at least one ImportAliasget_nodeexpected_rec                   C   s   t jt t dfdS )N r
   )r>   r?   ImportAliasNamer7   r7   r7   r<   r@      s    zempty name identifierc                	   C   (   t jt t t dt dfdS )NrE   blar
   r>   r?   rF   	AttributerG   r7   r7   r7   r<   r@          c                	   C   rH   )NrI   rE   r
   rJ   r7   r7   r7   r<   r@      rL   c                   C   s0   t jt jt t dt dt  dfdS )Nr	   r   r.   r
   )r>   r?   rF   rK   rG   Commar7   r7   r7   r<   r@      s    ztrailing commac                	   C   s0   t jt t t dt dft ddS )Nr	   r   rE   r/   )r>   r?   rF   rK   rG   SimpleWhitespacer7   r7   r7   r<   r@      s    zat least one spacec                   C   s4   t jt jt dt jt dt dddfdS )Nr	   r   rE   r+   r   r
   )r>   r?   rF   rG   AsNamerO   r7   r7   r7   r<   r@      s    c                   C   s0   t jt jt jt jddt jddddgdS )Nz0.)valueA)rR   attr)namer
   )r>   r?   rF   rK   FloatrG   r7   r7   r7   r<   r@      s    z-imported name must be a valid qualified name.c                 K   r5   r6   assert_invalidr:   r7   r7   r<   test_invalid   s   MzImportCreateTest.test_invalid)__name__
__module____qualname__r   r>   r?   rF   rG   rK   r   rQ   DotrO   rN   r   r=   rY   r7   r7   r7   r<   r      s   
  			Lr   c                   @   s(  e Zd Zeejeedfdddejeeededfdddejeeededfdddejejeededej	e
ddd	eeeded
fdddejejeededeed
dfdddejejeededeed
ej	e
dddejeeded
eeddfdddejejeededeed
ej	e
dddejeededej	e
ddd	ejeeded
ej	e
ddd	ejedeeddfdddejejejededeje
de
dddejed
e
de
ddej	e
de
dddejedejede
de
dddfe
ddddfdeddfddZdS ) ImportParseTestr	   r
   r   r   r   r   r#   r&   rM   r   r   r   r   r-   r   r   r   r    r!   r"   r$   r'   r)   r*   r/   r1   r3   r4   Nc                 K      | j dddd i| d S )Nparserc                 S      t t| tjjd S Nr   r   r   r>   SimpleStatementLinebodyr   r7   r7   r<   r@   n  
    
z,ImportParseTest.test_valid.<locals>.<lambda>r7   r8   r:   r7   r7   r<   r=      s    
zImportParseTest.test_valid)rZ   r[   r\   r   r>   r?   rF   rG   rK   rN   rO   rQ   r]   r   r=   r7   r7   r7   r<   r^      s      r^   c                   @   s  e Zd Zeejedeedfdddejedejedeeddfdddejedeedeedfdd	dejedejede	 d
ejede	 d
fdde
dddejede dde
dddeje fedeedfdddeje e fedeedfdddeje e fdeedfdddejede ejedeeddfe dde
dddejejededdejededdfedejeddejedejedededdej	ededddejedejed ededddfejedd!edededd"d#e
dd$df
d%ed&dfd'd(Zed)d* d+d,d-d* d.d,d/d* d0d,d1d* d2d,d3d* d4d,d5d* d4d,d6d* d7d,d8d* d9d,d:d* d;d,d<d* d=d,f
d%ed&dfd>d?ZdS )@ImportFromCreateTestr	   r   moduler   from foo import barr   r   r   from foo import bar as bazfrom foo import bar, bazrM   zfrom foo import bar,baz,r   r   r   from foo import *)r      relativerk   r   from .foo import barfrom ..foo import barNfrom .. import barrk   lparr   rparfrom foo import (bar as baz))r      r#   r$   r_   r)   r*   r-   r    r!   r%   rr   rk   rw   r   rx   whitespace_after_fromwhitespace_before_importr0   =from   .  . foo  import  ( bar  as  baz ,  unittest  as  ut ))r   =   r3   r4   c                 K   r5   r6   r8   r:   r7   r7   r<   r=   v  s    zImportFromCreateTest.test_validc                   C   s   t jd t t dfdS )Nr   rj   )r>   
ImportFromrF   rG   r7   r7   r7   r<   r@     s    zImportFromCreateTest.<lambda>zMust have a module specifiedrB   c                   C   s   t jt dddS )Nr	   r7   rj   )r>   r   rG   r7   r7   r7   r<   r@     s    rA   c                   C   (   t jt dt t dft  dS )Nr	   r   rk   r   rw   )r>   r   rG   rF   	LeftParenr7   r7   r7   r<   r@     
    zleft paren without right parenc                   C   r   )Nr	   r   rk   r   rx   )r>   r   rG   rF   
RightParenr7   r7   r7   r<   r@     r   zright paren without left parenc                   C      t jt dt  t  dS )Nr	   r   )r>   r   rG   
ImportStarr   r7   r7   r7   r<   r@      s    zcannot have parensc                   C   r   )Nr	   r   )r>   r   rG   r   r   r7   r7   r7   r<   r@   &  s
    c                   C   *   t jt dt t dft ddS )Nr	   r   rE   )rk   r   r}   r>   r   rG   rF   rO   r7   r7   r7   r<   r@   .  
    zone space after fromc                   C   r   )Nr	   r   rE   )rk   r   r~   r   r7   r7   r7   r<   r@   6  r   zone space before importc                   C   r   )Nr	   r   rE   )rk   r   r0   r   r7   r7   r7   r<   r@   >  r   zone space after importc                
   C   sN   t jt dt jt dt jt jdt  ft  fdt dddfdS )	Nr	   r   r   )rw   rx   rE   rP   r   rj   )r>   r   rG   rF   rQ   r   r   rO   r7   r7   r7   r<   r@   F  s    zone space before as keywordc                 K   r5   r6   rW   r:   r7   r7   r<   rY     s   Xz!ImportFromCreateTest.test_invalid)rZ   r[   r\   r   r>   r   rG   rF   rQ   rN   r   r   r]   r   r   rO   r   r=   rY   r7   r7   r7   r<   ri   u  s*   	



( 						Wri   c                   @   s
  e Zd Zeejedeedfdddejedejedeeddfdddejedejedej	e
d	d
deedfdddejedejedej	e
d	d
dejede	 dfe e dddejede dddeje fedeedfdddeje e fedeedfdddeje e fdeedfdddejede ejedeeddfe dddejeje
de
ddeje
de
d	dfedeje
d	d
ejedejede
de
ddej	e
d	e
dddejedejede
de
dddfeje
d	de
de
de
dd d!df
d"ed#dfd$d%ZdS )&ImportFromParseTestr	   r   rj   rl   r   r   r   rm   r#   r_   rM   rn   )rk   r   rw   rx   zfrom foo import (bar, baz,)ro   rq   rs   rt   Nru   rv   ry   rE   r)   r$   r*   r-   r    r!   r{   z   r|   r   r3   r4   c                 K   r`   )Nra   c                 S   rb   rc   rd   rg   r7   r7   r<   r@     rh   z0ImportFromParseTest.test_valid.<locals>.<lambda>r7   r8   r:   r7   r7   r<   r=   _  s    
zImportFromParseTest.test_valid)rZ   r[   r\   r   r>   r   rG   rF   rQ   rN   rO   r   r   r   r]   r   r=   r7   r7   r7   r<   r   ^  s    
	



( r   )typingr   libcstr>   r   libcst._nodes.tests.baser   libcst.helpersr   libcst.metadatar   libcst.testing.utilsr   r   r^   ri   r   r7   r7   r7   r<   <module>   s    W  j