
    ;eR                        	 d dl mZ ddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddZ G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d de          Z G d de          Z G d de          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S )   )support    )NodeLeaf)
fixer_util)AttrNameCallComma)tokenc                 z    t          j        |           }t          |          D ]}|j        d         }d |_        |S )Nr   )r   parse_stringrangechildrenparent)codestrip_levelstreeis       ./usr/lib/python3.11/lib2to3/tests/test_util.pyparser      sE     %%D<      }QDKK    c                       e Zd Zd ZdS )MacroTestCasec                     t          |t          t          f          rt          t          j        j        |          }|                     t          |          |           d S N)	
isinstancetuplelistr   r   symssimple_stmtassertEqualstr)selfnodestrings      r   	assertStrzMacroTestCase.assertStr   sN    dUDM** 	;
3T::DTF+++++r   N)__name__
__module____qualname__r'    r   r   r   r      s#        , , , , ,r   r   c                        e Zd Zd Zd Zd ZdS )Test_is_tuplec                 H    t          j        t          |d                    S N   r   )r   is_tupler   r$   r&   s     r   r2   zTest_is_tuple.is_tuple   s     "5a#@#@#@AAAr   c                    |                      |                     d                     |                      |                     d                     |                      |                     d                     |                      |                     d                     |                      |                     d                     d S )Nz(a, b)z(a, (b, c))z((a, (b, c)),)z(a,)z())
assertTruer2   r$   s    r   
test_validzTest_is_tuple.test_valid    s    h//000m44555&677888f--...d++,,,,,r   c                     |                      |                     d                     |                      |                     d                     d S )Nz(a)z('foo') % (b, c))assertFalser2   r6   s    r   test_invalidzTest_is_tuple.test_invalid'   sI    u--...'9::;;;;;r   N)r(   r)   r*   r2   r7   r:   r+   r   r   r-   r-      sD        B B B- - -< < < < <r   r-   c                        e Zd Zd Zd Zd ZdS )Test_is_listc                 H    t          j        t          |d                    S r/   )r   is_listr   r3   s     r   r>   zTest_is_list.is_list-   s     !%Q"?"?"?@@@r   c                    |                      |                     d                     |                      |                     d                     |                      |                     d                     |                      |                     d                     |                      |                     d                     d S )Nz[]z[a]z[a, b]z[a, [b, c]]z[[a, [b, c]],])r5   r>   r6   s    r   r7   zTest_is_list.test_valid0   s    T**+++U++,,,X..///]33444%56677777r   c                 V    |                      |                     d                     d S )Nz[]+[])r9   r>   r6   s    r   r:   zTest_is_list.test_invalid7   s(    g../////r   N)r(   r)   r*   r>   r7   r:   r+   r   r   r<   r<   ,   sD        A A A8 8 80 0 0 0 0r   r<   c                       e Zd Zd Zd ZdS )	Test_Attrc                    t          dd          }|                     t          t          d          t          d                    d           |                     t          |t          d                    d           d S )Nzfoo()r0   r1   aba.bzfoo().b)r   r'   r   r	   )r$   calls     r   testzTest_Attr.test<   sh    W1---tDIItCyy115999tD$s)),,i88888r   c                     t          t          d          t          d                    }|                     t          |          t                     d S )NrD   rE   )r   r	   r"   typer   )r$   attrs     r   test_returnszTest_Attr.test_returnsB   s?    DIItCyy))dT*****r   N)r(   r)   r*   rH   rL   r+   r   r   rB   rB   ;   s2        9 9 9+ + + + +r   rB   c                       e Zd Zd ZdS )	Test_Namec                     |                      t          d          d           |                      t          d          d           |                      t          dd          d           d S )NrD   zfoo.foo().barrE   prefixba)r'   r	   r6   s    r   rH   zTest_Name.testH   s_    tCyy#&&&tO,,o>>>tC,,,d33333r   N)r(   r)   r*   rH   r+   r   r   rN   rN   G   s#        4 4 4 4 4r   rN   c                       e Zd ZddZd ZdS )	Test_CallNc                    	 g }t          |t                    rO|D ]8}|                    |           |                    t                                 9|                                 t          t          |          ||          S r   )r   r   appendr   popr
   r	   )r$   nameargsrQ   r   args         r   _CallzTest_Call._CallO   s{     dD!! 	 ) )$$$((((LLNNNDJJ&111r   c           	      N   d t          t          j        d          t          t          j        d          t          t          j        d          gt          t          j        d          t          t          j        d          t          t          j        d          t          t          j        d          gt          t          j        d          t          t          j        dd          gg}|                     |                     d	          d
           |                     |                     d|d                   d           |                     |                     d|d                   d           |                     |                     d|d         d          d           d S )Nr   r0         rE   j rP   AzA()zb(1,2,3)za.b().cza.b().c(1,3,2,4)dz d(b, j))r   r   NUMBERSTRINGr'   r[   )r$   kidss     r   rH   zTest_Call.testY   s>   elA&&U\1(=(=elA&&(elA&&U\1(=(=elA&&U\1(=(=?elC(($u|S*M*M*MN 	tzz#...tzz#tAw//<<<tzz)T!W557IJJJtzz#tAwsz;;ZHHHHHr   )NN)r(   r)   r*   r[   rH   r+   r   r   rT   rT   N   s<        2 2 2 2I I I I Ir   rT   c                   &    e Zd Zd Zd Zd Zd ZdS )Test_does_tree_importc                     t          j        ||          }|r|S |j        D ]}|                     ||          }|r|c S d S r   )r   find_bindingr   _find_bind_rec)r$   rX   r%   cchilds        r   rj   z$Test_does_tree_import._find_bind_rech   s^     #D$//Qh] 	 	E##D%00AN(((N	 	r   c                 x    t          |          }|                     d|          }t          j        |||          S )Nstart)r   rj   r   does_tree_import)r$   packagerX   r&   r%   s        r   ro   z&Test_does_tree_import.does_tree_importq   s7    V}}""7D11*7D$???r   c                    d}|D ]j\  }}}|                      |||dz   |z             }|                     |           |                      |||dz   |z             }|                     |           kd}|D ]j\  }}}|                      |||dz   |z             }|                     |           |                      |||dz   |z             }|                     |           kd S )N))rD   rD   from a import b)a.drD   from a.d import b)zd.arD   from d.a import b)NrD   import b)NrD   import b, c, d
))rD   rD   from a import a)xrD   from x import a)rz   rD   from x import b, c, a, d)x.brD   from x.b import a)r}   rD   from x.b import b, c, a, d)NrD   import a)NrD   import b, c, a, d)ro   r9   r5   )r$   r&   failing_testsrp   rX   import_npassing_testss           r   try_withzTest_does_tree_import.try_withw   s   8
 '4 	  	 "GT7%%gtWt^f5LMMAQ%%gtVd]W5LMMAQ; '4 	 	"GT7%%gtWt^f5LMMAOOA%%gtVd]W5LMMAOOA		 	r   c                 0    |                      d           d S )Nzdef foo():
	bar.baz()
	start=3)r   r6   s    r   test_in_functionz&Test_does_tree_import.test_in_function   s    :;;;;;r   N)r(   r)   r*   rj   ro   r   r   r+   r   r   rg   rg   g   sS          @ @ @  2< < < < <r   rg   c                       e Zd Zd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 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )Test_find_bindingNc                 H    t          j        |t          |          |          S r   )r   ri   r   )r$   rX   r&   rp   s       r   ri   zTest_find_binding.find_binding   s    &tU6]]GDDDr   c                    |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     d S )NrD   za = bza = [b, c, d]z	a = foo()za = foo().foo.foo[6][foo]zfoo = azfoo = (a, b, c)r5   ri   r9   r6   s    r   test_simple_assignmentz(Test_find_binding.test_simple_assignment   s    ))#w77888))#??@@@))#{;;<<<))#/JKKLLL**3	::;;;**30ABBCCCCCr   c                    |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     d S )NrD   z(a,) = bz(a, b, c) = [b, c, d]z(c, (d, a), b) = foo()z(a, b) = foo().foo[6][foo]z(foo, b) = (b, a)z(foo, (b, c)) = (a, b, c)r   r6   s    r   test_tuple_assignmentz'Test_find_binding.test_tuple_assignment   s    ))#z::;;;))#/FGGHHH))#/GHHIII))#/KLLMMM**30CDDEEE**30KLLMMMMMr   c                    |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     d S )NrD   z[a] = bz[a, b, c] = [b, c, d]z[c, [d, a], b] = foo()z[a, b] = foo().foo[a][foo]z[foo, b] = (b, a)z[foo, [b, c]] = (a, b, c)r   r6   s    r   test_list_assignmentz&Test_find_binding.test_list_assignment   s    ))#y99:::))#/FGGHHH))#/GHHIII))#/KLLMMM**30CDDEEE**30KLLMMMMMr   c                 N   |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     d S )NrD   z	foo.a = 5z
foo[a] = 5z
foo(a) = 5zfoo(a, b) = 5r9   ri   r6   s    r   test_invalid_assignmentsz*Test_find_binding.test_invalid_assignments   s    **3<<===**3==>>>**3==>>>**3@@AAAAAr   c                 N   |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     d S )NrD   r   r   rv   rw   r   r6   s    r   test_simple_importz$Test_find_binding.test_simple_import   s    ))#z::;;;))#/BCCDDD**3
;;<<<**30@AABBBBBr   c                    |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     |                     |                     dd	                     d S )
NrD   r{   ry   r|   r~   r   rr   rt   ru   r   r6   s    r   test_from_importz"Test_find_binding.test_from_import   s&   ))#/@AABBB))#/@AABBB))#/IJJKKK))#/BCCDDD))#/KLLMMM**30ABBCCC**30CDDEEE**30CDDEEEEEr   c                 N   |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     d S )NrD   zimport b as azimport b as a, c, a as f, dimport a as fzimport b, c as f, d as er   r6   s    r   test_import_asz Test_find_binding.test_import_as   s    ))#??@@@))#/LMMNNN**3@@AAA**30JKKLLLLLr   c                 D   |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     |                     |                     dd                     d S )	NrD   from x import b as afrom x import g as a, d as bfrom x.b import t as afrom x.b import g as a, dfrom a import b as tzfrom a.d import b as tzfrom d.a import b as tr   r6   s    r   test_from_import_asz%Test_find_binding.test_from_import_as   s   ))#/EFFGGG))#/MNNOOO))#/GHHIII))#/JKKLLL**30FGGHHH**30HIIJJJ**30HIIJJJJJr   c                 R   |                      |                     dd                     |                      |                     dd                     |                     |                     ddd                     |                     |                     ddd                     d S )NrE   rv   rw   rk   r   r6   s    r   test_simple_import_with_packagez1Test_find_binding.test_simple_import_with_package   s    ))#z::;;;))#/?@@AAA**3
C@@AAA**30@#FFGGGGGr   c                    |                      |                     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                     |                     |                     ddd                     d S )NrD   r{   rz   ry   zfrom x import *r|   r~   r}   zfrom x.b import *r   rr   rt   rs   ru   zfrom x.y import *rF   r   r6   s    r   test_from_import_with_packagez/Test_find_binding.test_from_import_with_package   s   ))#/@#FFGGG))#/@#FFGGG))#/@#FFGGG))#/I3OOPPP))#/BEJJKKK))#/BEJJKKK))#/KUSSTTT**30A3GGHHH**30CUKKLLL**30CUKKLLL**30CUKKLLLLLr   c                    |                      |                     ddd                     |                      |                     ddd                     |                      |                     ddd                     d S )NrD   zimport b.c as azb.cr   fr   r6   s    r   test_import_as_with_packagez-Test_find_binding.test_import_as_with_package   s{    **30A5IIJJJ**3EEFFF**3EEFFFFFr   c                 R   |                      |                     ddd                     |                      |                     ddd                     |                      |                     ddd                     |                      |                     ddd                     |                      |                     ddd                     |                      |                     ddd	                     |                      |                     ddd
                     d S )NrD   r   rz   r   r   r}   r   r   rE   tr   r6   s    r    test_from_import_as_with_packagez2Test_find_binding.test_from_import_as_with_package   s    	**30FLLMMM**30NPSTTUUU**30H%PPQQQ**30KUSSTTT**30FLLMMM**30FLLMMM**30FLLMMMMMr   c                    |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     |                     |                     dd                     |                     |                     dd                     d	}|                     |                     d|                     d S )
NrD   zdef a(): passzdef a(b, c, d): passzdef a(): b = 7zdef d(b, (c, a), e): passzdef d(a=7): passzdef d(a): passzdef d(): a = 7zG
            def d():
                def a():
                    passr   r$   ss     r   test_function_defz#Test_find_binding.test_function_def   s1   ))#??@@@))#/EFFGGG))#/?@@AAA**30KLLMMM**30BCCDDD**30@AABBB**30@AABBB 	**32233333r   c                    |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     |                     |                     dd                     |                     |                     dd                     |                     |                     dd	                     |                     |                     dd
                     |                     |                     dd                     d}|                     |                     d|                     d S )NrD   zclass a: passzclass a(): passzclass a(b): passzclass a(b, c=8): passzclass d: passzclass d(a): passzclass d(b, a=7): passzclass d(b, *a): passzclass d(b, **a): passzclass d: a = 7zK
            class d():
                class a():
                    passr   r   s     r   test_class_defz Test_find_binding.test_class_def  s   ))#??@@@))#/@AABBB))#/ABBCCC))#/FGGHHH**3@@AAA**30BCCDDD**30GHHIII**30FGGHHH**30GHHIII**30@AABBB 	**32233333r   c                 D   |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                      |                     dd                     |                     |                     dd                     d S )	NrD   zfor a in r: passzfor a, b in r: passzfor (a, b) in r: passzfor c, (a,) in r: passzfor c, (a, b) in r: passzfor c in r: a = czfor c in a: passr   r6   s    r   test_forzTest_find_binding.test_for  s    ))#/ABBCCC))#/DEEFFF))#/FGGHHH))#/GHHIII))#/IJJKKK))#/BCCDDD**30BCCDDDDDr   c                    d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                     |                     d|                     d	}|                     |                     d|                     d S )
NzM
            for b in r:
                for a in b:
                    passrD   zP
            for b in r:
                for a, c in b:
                    passzR
            for b in r:
                for (a, c) in b:
                    passzP
            for b in r:
                for (a,) in b:
                    passzU
            for b in r:
                for c, (a, d) in b:
                    passzN
            for b in r:
                for c in b:
                    a = 7zN
            for b in r:
                for c in b:
                    d = azN
            for b in r:
                for c in a:
                    d = 7r   r   s     r   test_for_nestedz!Test_find_binding.test_for_nested"  sd    	))#q11222 	))#q11222 	))#q11222 	))#q11222 	))#q11222 	))#q11222 	**322333 	**32233333r   c                     |                      |                     dd                     |                     |                     dd                     d S )NrD   zif b in r: a = czif a in r: d = er   r6   s    r   test_ifzTest_find_binding.test_ifS  sP    ))#/ABBCCC**30BCCDDDDDr   c                     d}|                      |                     d|                     d}|                     |                     d|                     d S )NzL
            if b in r:
                if c in d:
                    a = crD   zL
            if b in r:
                if c in d:
                    c = ar   r   s     r   test_if_nestedz Test_find_binding.test_if_nestedW  `     	))#q11222 	**32233333r   c                     |                      |                     dd                     |                     |                     dd                     d S )NrD   zwhile b in r: a = czwhile a in r: d = er   r6   s    r   
test_whilezTest_find_binding.test_whiled  sP    ))#/DEEFFF**30EFFGGGGGr   c                     d}|                      |                     d|                     d}|                     |                     d|                     d S )NzR
            while b in r:
                while c in d:
                    a = crD   zR
            while b in r:
                while c in d:
                    c = ar   r   s     r   test_while_nestedz#Test_find_binding.test_while_nestedh  r   r   c                 ^   d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                     |                     d|                     d S )NzQ
            try:
                a = 6
            except:
                b = 8rD   zQ
            try:
                b = 8
            except:
                a = 6z
            try:
                b = 8
            except KeyError:
                pass
            except:
                a = 6Q
            try:
                b = 8
            except:
                b = 6r   r   s     r   test_try_exceptz!Test_find_binding.test_try_exceptu  s    
 	))#q11222
 	))#q11222 	))#q11222
 	**32233333r   c                 `   d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                      |                     d|                     d}|                     |                     d|                     d}|                     |                     d|                     d S )	Nz
            try:
                try:
                    a = 6
                except:
                    pass
            except:
                b = 8rD   z
            try:
                b = 8
            except:
                try:
                    a = 6
                except:
                    passz
            try:
                b = 8
            except:
                try:
                    pass
                except:
                    a = 6z
            try:
                try:
                    b = 8
                except KeyError:
                    pass
                except:
                    a = 6
            except:
                passz
            try:
                pass
            except:
                try:
                    b = 8
                except KeyError:
                    pass
                except:
                    a = 6r   a  
            try:
                try:
                    b = 8
                except:
                    c = d
            except:
                try:
                    b = 6
                except:
                    t = 8
                except:
                    o = yr   r   s     r   test_try_except_nestedz(Test_find_binding.test_try_except_nested  s9    	))#q11222 	))#q11222 	))#q11222	 	))#q11222	 	))#q11222
 	**322333 	**32233333r   c                 ^   d}|                      |                     d|                     d}|                      |                     d|                     d}|                     |                     d|                     d}|                     |                     d|                     d S )Nz|
            try:
                c = 6
            except:
                b = 8
            finally:
                a = 9rD   zR
            try:
                b = 8
            finally:
                a = 6zR
            try:
                b = 8
            finally:
                b = 6z|
            try:
                b = 8
            except:
                b = 9
            finally:
                b = 6r   r   s     r   test_try_except_finallyz)Test_find_binding.test_try_except_finally  s     	))#q11222
 	))#q11222
 	**322333 	**32233333r   c                    d}|                      |                     d|                     d}|                      |                     d|                     d}|                     |                     d|                     d S )Nz
            try:
                c = 6
            except:
                b = 8
            finally:
                try:
                    a = 9
                except:
                    b = 9
                finally:
                    c = 9rD   z
            try:
                b = 8
            finally:
                try:
                    pass
                finally:
                    a = 6z
            try:
                b = 8
            finally:
                try:
                    b = 6
                finally:
                    b = 7r   r   s     r   test_try_except_finally_nestedz0Test_find_binding.test_try_except_finally_nested  s     	))#q11222 	))#q11222 	**32233333r   r   )r(   r)   r*   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r      s       E E E ED D DN N NN N NB B BC C CF F FM M MK K KH H HM M MG G G

N 
N 
N4 4 44 4 4$E E E/4 /4 /4bE E E4 4 4H H H4 4 44 4 4>K4 K4 K4Z4 4 4B!4 !4 !4 !4 !4r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )Test_touch_importc                     t          d          }t          j        d d|           |                     t	          |          d           d S )Nz"""foo"""
bar()fooz"""foo"""
import foo
bar()

r   r   touch_importr"   r#   r$   r%   s     r   test_after_docstringz&Test_touch_import.test_after_docstring'  sH    '((eT222T$FGGGGGr   c                     t          d          }t          j        d d|           |                     t	          |          d           d S )Nz"""foo"""
import bar
bar()r   z'"""foo"""
import bar
import foo
bar()

r   r   s     r   test_after_importsz$Test_touch_import.test_after_imports,  sH    344eT222T$RSSSSSr   c                     t          d          }t          j        d d|           |                     t	          |          d           d S )Nbar()r   zimport foo
bar()

r   r   s     r   test_beginningz Test_touch_import.test_beginning1  E    W~~eT222T$;<<<<<r   c                     t          d          }t          j        dd|           |                     t	          |          d           d S )Nr   htmlescapezfrom html import escape
bar()

r   r   s     r   r   z"Test_touch_import.test_from_import6  sE    W~~$777T$HIIIIIr   c                     t          d          }t          j        d d|           |                     t	          |          d           d S )Nr   cgizimport cgi
bar()

r   r   s     r   test_name_importz"Test_touch_import.test_name_import;  r   r   N)r(   r)   r*   r   r   r   r   r   r+   r   r   r   r   %  sh        H H H
T T T
= = =
J J J
= = = = =r   r   c                       e Zd Zd Zd ZdS )Test_find_indentationc                     t           j        }t          d          }|                      ||          d           t          d          }|                      ||          d           d S )Nznode() )r   find_indentationr   r"   r$   fir%   s      r   test_nothingz"Test_find_indentation.test_nothingB  sb    (XD2&&&RyyD2&&&&&r   c                    t           j        }t          d          }|                      ||          d           |                      ||j        d         j        d         j        d                   d           t          d          }|                      ||j        d         j        d         j        d                   d           d S )Nzdef f():
    x()r   r   r^   r0   z    zdef f():
    x()
    y())r   r   r   r"   r   r   s      r   test_simplez!Test_find_indentation.test_simpleI  s    (())D2&&&DM!,5a8A!DEEvNNN122DM!,5a8A!DEEvNNNNNr   N)r(   r)   r*   r   r   r+   r   r   r   r   @  s7        ' ' 'O O O O Or   r   N)r   )r   r   lib2to3.pytreer   r   lib2to3r   lib2to3.fixer_utilr   r	   r
   r   lib2to3.pgen2r   r   TestCaser   r-   r<   rB   rN   rT   rg   r   r   r   r+   r   r   <module>r      sq   -       & % % % % % % %       6 6 6 6 6 6 6 6 6 6 6 6         , , , , ,G$ , , ,< < < < <G$ < < < 0 0 0 0 07# 0 0 0	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+4 4 4 4 4 4 4 4I I I I I I I I2*< *< *< *< *<G, *< *< *<XP4 P4 P4 P4 P4( P4 P4 P4d= = = = =( = = =6O O O O OG, O O O O Or   