
    daf                        d Z ddlZddlZddlZddlmZ ddlZddlmZmZ ddl	m
Z ej                  j                  ej                        Zej                  j                  e      Zej                  j#                  ej                  j%                  ed            Zej                  j%                  ed      Z ej*                  e      Z ej*                  e      Zej0                  d=  ej2                  eej4                  	      Z
 ej2                  eej4                  	      Zd
 ZddZd ZddZd Z d Z!ejD                  Z"y)z Support code for test_*.py files    Ndedent)pytreerefactor)driverz..zGrammar.txtprint)convertc                 B    t         j                  t        |       d      S )NT)debug)r   parse_stringreformatstrings    4/root/Python-3.12.4/Lib/test/test_lib2to3/support.pyr   r      s    x/t<<    c                     |#t        j                         j                  |       }t        j                  d      j	                  |       y )N   )	verbosity)unittest
TestLoaderloadTestsFromModuleTextTestRunnerrun)test_modtestss     r   run_all_testsr      s9    }##%99(Ca(,,U3r   c                     t        |       dz   S )Nz

r   r   s    r   r   r   $   s    &>F""r   c                     ||D cg c]
  }| dz   |z    }}nt        j                  | dz         }|xs i }t        j                  ||d      S c c}w )a
  
    A convenience function for creating a RefactoringTool for tests.

    fixers is a list of fixers for the RefactoringTool to use. By default
    "lib2to3.fixes.*" is used. options is an optional dictionary of options to
    be passed to the RefactoringTool.
    z.fixes.fix_z.fixesT)explicit)r   get_fixers_from_packageRefactoringTool)	fixer_pkgfixersoptionsfixs       r   get_refactorerr&   '   s`     =CDc)m+c1DD11)h2FGmG##FGdCC	 Es   Ac                     t        j                  |       D ]N  \  }}}|D ]C  }|j                  d      s|j                  t         j                  j                  ||             E P y )Nz.py)oswalkendswithappendpathjoin)rootfilesdirpathdirnames	filenamesfilenames         r   _all_project_filesr4   6   s[    (* :$9! 	:H$$U+LLgx89	::r   c                  j    g } t        t        |        t        t        |        | j                          | S )N)r4   lib2to3_dirtest_dirsort)r/   s    r   all_project_filesr9   =   s)    E{E*x'	JJLLr   )NN)lib2to3NN)#__doc__r   r(   os.pathtextwrapr   r:   r   r   lib2to3.pgen2r   pgen2_driverr,   dirname__file__r6   r7   normpathr-   proj_dirgrammar_pathload_grammargrammargrammar_no_print_statementkeywordsDriverr	   driver_no_print_statementr   r   r   r&   r4   r9   TestCase r   r   <module>rM      s   &  	    $ 0ggoog../77??8$77BGGLL489ww||K7
#,
#
#L
16\66|D ''0			Wfnn	=/L//NN 
=4
#D: r   