a
    e                     @   s   d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z ejeZejejedZejeddZeeZeeZejd= ejeejd	Z
ejeejd	Zd
d ZdddZdd ZdddZdd Zej Z dS )z Support code for test_*.py files    Ndedent)pytreerefactor)driverz..zGrammar.txtprint)convertc                 C   s   t jt| ddS )NT)debug)r   parse_stringreformatstring r   &lib/python3.9/lib2to3/tests/support.pyr
      s    r
   c                 C   s,   |d u rt  | }t jdd| d S )N   )	verbosity)unittestZ
TestLoaderZloadTestsFromModuleZTextTestRunnerrun)Ztest_modZtestsr   r   r   run_all_tests   s    r   c                 C   s   t | d S )Nz

r   r   r   r   r   r   "   s    r   lib2to3c                    sB   |dur fdd|D }nt  d }|p0i }t j||ddS )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.
    Nc                    s   g | ]} d  | qS )z.fixes.fix_r   ).0Zfix	fixer_pkgr   r   
<listcomp>.       z"get_refactorer.<locals>.<listcomp>z.fixesT)Zexplicit)r   Zget_fixers_from_packageZRefactoringTool)r   ZfixersZoptionsr   r   r   get_refactorer%   s
    r   c                  c   s>   t tD ].\} }}|D ]}|drt j| |V  qq
d S )Nz.py)oswalkproj_direndswithpathjoin)dirpathZdirnames	filenamesfilenamer   r   r   all_project_files4   s    
r%   )NN)r   NN)!__doc__r   r   os.pathtextwrapr   r   r   r   Zlib2to3.pgen2r   Zpgen2_driverr    dirname__file__Ztest_dirnormpathr!   r   Zgrammar_pathZload_grammarZgrammarZgrammar_no_print_statementkeywordsZDriverr   Zdriver_no_print_statementr
   r   r   r   r%   ZTestCaser   r   r   r   <module>   s.   



