
    &Vf,9                     p   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddl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ej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zd Zedk    r ej                     dS dS )zTests for import_utils.    )absolute_import)division)print_functionN)import_utils)	ast_utils)
test_utils)scopec                   ,    e Zd Zd Zd Zd Zd Zd ZdS )SplitImportTestc                 <   d}t          j        |          }|j        d         }t          j        |          }t          j        |||j        d                    |                     dt          |j                             |                     t           j
        t          |j        d                              |                     d |j        d         j        D             ddg           |                     d |j        d         j        D             d	g           d S )
Nimport aaa, bbb, ccc
r         c                     g | ]	}|j         
S  name.0aliass     \/var/www/html/software/conda/lib/python3.11/site-packages/pasta/augment/import_utils_test.py
<listcomp>z<SplitImportTest.test_split_normal_import.<locals>.<listcomp>+       >>>Uej>>>    aaacccc                     g | ]	}|j         
S r   r   r   s     r   r   z<SplitImportTest.test_split_normal_import.<locals>.<listcomp>,   r   r   bbb)astparsebodyr	   analyzer   split_importnamesassertEquallenImporttypeselfsrctimport_nodescs        r   test_split_normal_importz(SplitImportTest.test_split_normal_import"   s    
"C	#A&)K	q		Bb+{/@/CDDDQAF$$$SZafQi111>>afQio>>>OOO>>afQio>>>HHHHHr   c                 r   d}t          j        |          }|j        d         }t          j        |          }t          j        |||j        d                    |                     dt          |j                             |                     t           j
        t          |j        d                              |                     |j        d         j        d           |                     |j        d         j        d           |                     d |j        d         j        D             ddg           d S )	Nzfrom aaa import bbb, ccc, ddd
r   r   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   z:SplitImportTest.test_split_from_import.<locals>.<listcomp>9   r   r   r   ddd)r   r    r!   r	   r"   r   r#   r$   r%   r&   
ImportFromr(   moduler)   s        r   test_split_from_importz&SplitImportTest.test_split_from_import.   s   
+C	#A&)K	q		Bb+{/@/CDDDQAF$$$S^T!&)__555QVAY%u---QVAY%u--->>afQio>>>OOOOOr   c                 .   d}t          j        |          }|j        d         }t          j        |          }t          j        |||j        d                    |                     dt          |j                             |                     d |j        d         j        D             ddg           |                     d |j        d         j        D             d	g           |                     |j        d         j        d         j
        d
           d S )Nz$import aaa as a, bbb as b, ccc as c
r   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   zASplitImportTest.test_split_imports_with_alias.<locals>.<listcomp>C   r   r   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   zASplitImportTest.test_split_imports_with_alias.<locals>.<listcomp>D   r   r   r   b)r   r    r!   r	   r"   r   r#   r$   r%   r&   asnamer)   s        r   test_split_imports_with_aliasz-SplitImportTest.test_split_imports_with_alias;   s    
1C	#A&)K	q		Bb+{/@/CDDDQAF$$$>>afQio>>>OOO>>afQio>>>HHHQVAY_Q'.44444r   c                 v   d}t          j        |          }|j        d         }|j        d         }|j        d         }t	          j        |          }t          j        |||           t          j        |||           |                     dt          |j                             |                     d |j        d         j        D             dg           |                     d |j        d         j        D             d	g           |                     d
 |j        d         j        D             dg           d S )Nr   r   r   r      c                     g | ]	}|j         
S r   r   r   s     r   r   z?SplitImportTest.test_split_imports_multiple.<locals>.<listcomp>R   r   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   z?SplitImportTest.test_split_imports_multiple.<locals>.<listcomp>S   r   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   z?SplitImportTest.test_split_imports_multiple.<locals>.<listcomp>T   r   r   r   )
r   r    r!   r$   r	   r"   r   r#   r%   r&   )r*   r+   r,   r-   	alias_bbb	alias_cccr.   s          r   test_split_imports_multiplez+SplitImportTest.test_split_imports_multipleG   s#   
"C	#A&)K!!$I!!$I	q		Bb+y999b+y999QAF$$$>>afQio>>>HHH>>afQio>>>HHH>>afQio>>>HHHHHr   c           	         d}|D ]}	 |                     d          }t          j        |          }t          j        |          }t          j        |t          j                  d         }t          j	        |||j
        d                    t          j        |t          j                  }|                     dt          |j                             |                     dt          |                     |                     d |d         j
        D             dd	g           |                     d
 |d         j
        D             dg           M#  |                     d|dt          j                               Y ~xY wd S )N)zdef foo():
  {import_stmt}
z#class Foo(object):
  {import_stmt}
z%if foo:
  {import_stmt}
else:
  pass
z%if foo:
  pass
else:
  {import_stmt}
z)if foo:
  pass
elif bar:
  {import_stmt}
z$try:
  {import_stmt}
except:
  pass
z$try:
  pass
except:
  {import_stmt}
z%try:
  pass
finally:
  {import_stmt}
zfor i in foo:
  {import_stmt}
z+for i in foo:
  pass
else:
  {import_stmt}
zwhile foo:
  {import_stmt}
zimport aaa, bbb, ccc)import_stmtr   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   z=SplitImportTest.test_split_nested_imports.<locals>.<listcomp>p       NNN%*NNNr   r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   z=SplitImportTest.test_split_nested_imports.<locals>.<listcomp>r   rG   r   r   zFailed while executing case:
z
Caused by:
)formatr   r    r	   r"   r   find_nodes_by_typer'   r   r#   r$   r%   r&   r!   fail	traceback
format_exc)r*   
test_casestemplater+   r,   r.   r-   split_import_nodess           r   test_split_nested_importsz)SplitImportTest.test_split_nested_importsV   s   J  1 11oo*@oAAIcNN]121cjAA!D!"k;3DQ3GHHH&9!SZHHCKK(((C 233444NN2DQ2G2MNNN	) 	) 	)NN2DQ2G2MNNN	" 	" 	" 	"1			33	,...0 	1 	1 	1 	1 	1!1 1s   EE.FN)__name__
__module____qualname__r/   r5   r;   rC   rQ   r   r   r   r   r       sh        
I 
I 
IP P P
5 
5 
5I I I 1  1  1  1  1r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )GetUnusedImportsTestc                     d}t          j        |          }|                     t          j        |          |j        d         j        d         g           d S )Nzimport a
import b
a.foo()
r   r   r   r    assertItemsEqualr   get_unused_import_aliasesr!   r$   r*   r+   trees      r   test_normal_importsz(GetUnusedImportsTest.test_normal_importsz   s[    C
 9S>>D,@FF9Q<-a013 3 3 3 3r   c                     d}t          j        |          }|                     t          j        |          |j        d         j        d         g           d S )NzIfrom my_module import a
import b
from my_module import c
b.foo()
c.bar()
r   rX   r[   s      r   test_import_fromz%GetUnusedImportsTest.test_import_from   s[    C 9S>>D,@FF9Q<-a013 3 3 3 3r   c                     d}t          j        |          }|                     t          j        |          |j        d         j        d         g           d S )Nz#from my_module import a, b
b.foo()
r   rX   r[   s      r   test_import_from_aliasz+GetUnusedImportsTest.test_import_from_alias   s[    C 9S>>D,@FF9Q<-a013 3 3 3 3r   c                     d}t          j        |          }|                     t          j        |          |j        d         j        d         |j        d         j        d         g           d S )Nzqfrom my_module import a as a_mod, b as unused_b_mod
import c as c_mod, d as unused_d_mod
a_mod.foo()
c_mod.foo()
r   r   rX   r[   s      r   test_import_asnamez'GetUnusedImportsTest.test_import_asname   sn    C 9S>>D,@FF9Q<-a09Q<-a023 3 3 3 3r   c                     d}t          j        |          }|                     t          j        |          g            d S )Nzdef foo():
  import bar
)r   r    rY   r   rZ   r[   s      r   test_dynamic_importz(GetUnusedImportsTest.test_dynamic_import   sJ    C 9S>>D,@FF    r   N)rR   rS   rT   r]   r_   ra   rc   re   r   r   r   rV   rV   x   s_        3 3 3
3 
3 
33 3 3
3 
3 
3
 
 
 
 
r   rV   c                   &    e Zd Zd Zd Zd Zd ZdS )RemoveImportTestc                 <   d}t          j        |          }t          j        |          }|j        d         j        d         }t          j        ||           |                     t          |j                  d           |                     t          |j        d                   t           j                   |                     t          |j        d         j                  d           |                     |j        d         j        d         j        d           d S )Nzimport a, br   r   a)r   r    r	   r"   r!   r$   r   remove_import_alias_noder%   r&   r(   r'   r   r*   r+   r\   r.   unused_b_nodes        r   test_remove_just_aliasz'RemoveImportTest.test_remove_just_alias   s    
C9S>>D	t		BIaL&q)M)"m<<<S^^Q'''T$)A,''444S1+,,a000TYq\'*/55555r   c                 <   d}t          j        |          }t          j        |          }|j        d         j        d         }t          j        ||           |                     t          |j                  d           |                     t          |j        d                   t           j                   |                     t          |j        d         j                  d           |                     |j        d         j        d         j        d           d S )Nzfrom m import a, br   r   ri   )r   r    r	   r"   r!   r$   r   rj   r%   r&   r(   r3   r   rk   s        r   "test_remove_just_alias_import_fromz3RemoveImportTest.test_remove_just_alias_import_from   s    
C9S>>D	t		BIaL&q)M)"m<<<S^^Q'''T$)A,''888S1+,,a000TYq\'*/55555r   c                    d}t          j        |          }t          j        |          }|j        d         j        d         }t          j        ||           |                     t          |j                  d           d S )Nzimport ar   
r   r    r	   r"   r!   r$   r   rj   r%   r&   r*   r+   r\   r.   a_nodes        r   test_remove_full_importz(RemoveImportTest.test_remove_full_import   sm    
C9S>>D	t		BYq\"F)"f555S^^Q'''''r   c                    d}t          j        |          }t          j        |          }|j        d         j        d         }t          j        ||           |                     t          |j                  d           d S )Nzfrom m import ar   rq   rr   s        r   test_remove_full_importfromz,RemoveImportTest.test_remove_full_importfrom   sm    
C9S>>D	t		BYq\"F)"f555S^^Q'''''r   N)rR   rS   rT   rm   ro   rt   rv   r   r   r   rg   rg      sP        6 6 66 6 6	( 	( 	(	( 	( 	( 	( 	(r   rg   c                   h    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )AddImportTestc                     t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     d S )N a.b.cFfrom_importimport a.b.c
r   r    r%   r   
add_importpastadumpr*   r\   s     r   test_add_normal_importz$AddImportTest.test_add_normal_import   sh    9R==DW!,T7NNNP P P%uz$'7'788888r   c           	          t          j        d          }|                     dt          j        |ddd                     |                     dt          j        |                     d S )Nrz   dr{   Fr:   r}   zimport a.b.c as d
r   r   s     r   "test_add_normal_import_with_asnamez0AddImportTest.test_add_normal_import_with_asname   sj    9R==D	dGCUKKK   	*EJt,<,<=====r   c                     t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     d S )Nrz   cr{   Tr|   from a.b import c
r   r   s     r   test_add_from_importz"AddImportTest.test_add_from_import   sh    9R==DS!,T7MMMO O O*EJt,<,<=====r   c           	          t          j        d          }|                     dt          j        |ddd                     |                     dt          j        |                     d S )Nrz   r   r{   Tr   from a.b import c as d
r   r   s     r    test_add_from_import_with_asnamez.AddImportTest.test_add_from_import_with_asname   sj    9R==D	dGCTJJJ   	/D1A1ABBBBBr   c                     t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     d S )Nrz   fooTr|   zimport foo
r   r   s     r    test_add_single_name_from_importz.AddImportTest.test_add_single_name_from_import  sg    9R==DU!,T5dKKKM M M^UZ%5%566666r   c           	          t          j        d          }|                     dt          j        |ddd                     |                     dt          j        |                     d S )Nrz   barr   Tr   zimport foo as bar
r   r   s     r   ,test_add_single_name_from_import_with_asnamez:AddImportTest.test_add_single_name_from_import_with_asname  sj    9R==DdE%TJJJ   	*EJt,<,<=====r   c                     t          j        d          }|                     dt          j        |d                     |                     dt          j        |                     d S )Nfrom a.b import cr   r{   r   r   r   s     r   test_add_existing_importz&AddImportTest.test_add_existing_import  s\    9())DS,1$@@AAA*EJt,<,<=====r   c                     t          j        d          }|                     dt          j        |d                     |                     dt          j        |                     d S )Nfrom a.b import c as dr   r{   r   r   r   s     r    test_add_existing_import_aliasedz.AddImportTest.test_add_existing_import_aliased  s\    9-..DS,1$@@AAA/D1A1ABBBBBr   c                     t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     d S )Nr   r   r{   e)r:   r   r   r   s     r   ,test_add_existing_import_aliased_with_asnamez:AddImportTest.test_add_existing_import_aliased_with_asname   sa    9-..DS,1$LLLMMM/D1A1ABBBBBr   c                     t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     d S )Nzimport a.b.ca.bFr|   r~   r   r   s     r   &test_add_existing_import_normal_importz4AddImportTest.test_add_existing_import_normal_import%  sj    9^$$DU!,T5eLLLN N N%uz$'7'788888r   c                 *   t          j        d          }|                     dt          j        |dd                     |                     dt          j        |dd                     |                     dt          j        |                     d S )Nzimport a.b.c as dr   Fr|   r   r{   zimport a.b
import a.b.c as d
r   r   s     r   .test_add_existing_import_normal_import_aliasedz<AddImportTest.test_add_existing_import_normal_import_aliased+  s    9())DU!,T5eLLLN N NS!,T7NNNP P P6
48H8HIIIIIr   c                     t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     d S )Ndef c(): pass
c_1r{   Tr|   z)from a.b import c as c_1
def c():
  pass
r   r   s     r   test_add_import_with_conflictz+AddImportTest.test_add_import_with_conflict3  sz    9&''DU!,T7MMMO O O6
48H8HJ J J J Jr   c           	          t          j        d          }|                     dt          j        |ddd                     |                     dt          j        |                     d S )Nr   r   r   r   Tr   z'from a import b as c_1
def c():
  pass
r   r   s     r   )test_add_import_with_asname_with_conflictz7AddImportTest.test_add_import_with_asname_with_conflict:  s}    9&''DU!,T5RVWWWY Y Y4ej6F6FH H H H Hr   c                 z   t          j        d          }|                     dt          j        |dd                     |                     dt          j        |                     |                     dt          j        |dd	                     |                     d
t          j        |                     d S )Nr   xza.b.xF)merge_from_importsz$from a.b import x
from a.b import c
yza.b.yTz'from a.b import x, y
from a.b import c
r   r   s     r   test_merge_from_importz$AddImportTest.test_merge_from_importA  s    9())D 	S,1$EJL L L M M M=Z%%' ' ' 	S,1$EIK K K L L L@Z%%' ' ' ' 'r   c                     t          j        d          }|                     dt          j        |d                     |                     dt          j        |                     d S )Nz'Docstring.'ri   z'Docstring.'
import a
r   r   s     r   test_add_import_after_docstringz-AddImportTest.test_add_import_after_docstringP  s\    9%&&DS,1$<<===15:d3C3CDDDDDr   N)rR   rS   rT   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   rx      s       9 9 9> > >> > >C C C7 7 7> > >> > >
C C C
C C C
9 9 9J J JJ J JH H H' ' 'E E E E Er   rx   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )RemoveDuplicatesTestc                 X   d}t          j        |          }|                     t          j        |                     |                     t          |j                  d           |                     |j        d         j        d         j	        d           |                     |j        d         j        d         j	        d           |                     |j        d         j        d         j	        d           |                     |j        d	         j        d         j	        d
           d S )Nz.
import a
import b
import c
import b
import d
   r   ri   r   r9   r   r   r=   r   
r   r    
assertTruer   remove_duplicatesr%   r&   r!   r$   r   r[   s      r   test_remove_duplicatesz+RemoveDuplicatesTest.test_remove_duplicatesW  s    C 9S>>DOOL2488999S^^Q'''TYq\'*/555TYq\'*/555TYq\'*/555TYq\'*/55555r   c                 N   d}t          j        |          }|                     t          j        |                     |                     t          |j                  d           |                     t          |j        d         j                  d           |                     |j        d         j        d         j	        d           |                     |j        d         j        d         j	        d           |                     t          |j        d         j                  d           |                     |j        d         j        d         j	        d           |                     t          |j        d         j                  d           |                     |j        d         j        d         j	        d	           |                     |j        d         j        d         j	        d
           |                     |j        d         j        d         j	        d           d S )Nz+
import a, b
import b, c
import d, a, e, f
r=   r   r   ri   r   r9   r   r   r   fr   r[   s      r   test_remove_duplicates_multiplez4RemoveDuplicatesTest.test_remove_duplicates_multipleh  s   C
 9S>>DOOL2488999S^^Q'''S1+,,a000TYq\'*/555TYq\'*/555S1+,,a000TYq\'*/555S1+,,a000TYq\'*/555TYq\'*/555TYq\'*/55555r   c                 \   d}t          j        |          }|                     t          j        |                     |                     t          |j                  d           |                     t          |j        d         j                  d           |                     |j        d         j        d         j	        d           |                     |j        d         j        d         j	        d           |                     |j        d         j        d         j	        d           d S )	Nz
import a, b, c
import b, c
r   r   r=   ri   r9   r   r   r   r[   s      r   !test_remove_duplicates_empty_nodez6RemoveDuplicatesTest.test_remove_duplicates_empty_node|  s    C 9S>>DOOL2488999S^^Q'''S1+,,a000TYq\'*/555TYq\'*/555TYq\'*/55555r   c                     d}t          j        |          }|                     t          j        |                     |                     t          |j                  d           d S )Nz
import a.b
from a import b
r   )r   r    assertFalser   r   r%   r&   r!   r[   s      r   &test_remove_duplicates_normal_and_fromz;RemoveDuplicatesTest.test_remove_duplicates_normal_and_from  s[    C 9S>>D\3D99:::S^^Q'''''r   c                    d}t          j        |          }|                     t          j        |                     |                     t          |j                  d           |                     |j        d         j        d         j	        d            |                     |j        d         j        d         j	        d           |                     |j        d         j        d         j	        d           d S )Nz8
import a
import a as ax
import a as ax2
import a as ax
r=   r   r   axr   ax2)
r   r    r   r   r   r%   r&   r!   r$   r:   r[   s      r   test_remove_duplicates_aliasesz3RemoveDuplicatesTest.test_remove_duplicates_aliases  s    C 9S>>DOOL2488999S^^Q'''TYq\'*14888TYq\'*14888TYq\'*1599999r   N)rR   rS   rT   r   r   r   r   r   r   r   r   r   r   V  s_        6 6 6"6 6 6(6 6 6( ( (: : : : :r   r   c                     t          j                    } |                     t          j        t                               |                     t          j        t
                               |                     t          j        t                               |                     t          j        t                               |                     t          j        t                               | S )N)	unittest	TestSuiteaddTests	makeSuiter   rV   rg   rx   r   )results    r   suiter     s    &//($_55666//($%9::;;;//($%566777//($]33444//($%9::;;;	-r   __main__)__doc__
__future__r   r   r   r   rL   r   r   pasta.augmentr   
pasta.baser   r   r	   TestCaser   rV   rg   rx   r   r   rR   mainr   r   r   <module>r      s     ' & & & & &       % % % % % % 



       & & & & & &             ! ! ! ! ! !      V1 V1 V1 V1 V1j) V1 V1 V1p7 7 7 7 7:. 7 7 7v4( 4( 4( 4( 4(z* 4( 4( 4(niE iE iE iE iEJ' iE iE iEXI: I: I: I: I::. I: I: I:X   z(-///// r   