o
0¦isk ã @ s d Z dZddlZddlZddlZddlZddlZddlZddlZddl m
Z
ddlmZm
Z
mZ ddlmZ ddlmZmZ dd lmZ d!dd„ZG d
d„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!G dd „ d e ƒZ"dS )"zÛRefactoring framework.
Used as a main program, this can refactor any number of files and/or
recursively descend down directories. Imported as a module, this
provides infrastructure to write your own refactoring tool.
z#Guido van Rossum é N)Úchainé )ÚdriverÚtokenizeÚtoken)Ú find_root)ÚpytreeÚpygram)Úbtm_matcherTc C sT t | g g dgƒ}g }t |j¡D ]\}}}| d¡r'|r"|dd… }| |¡ q|S )zEReturn a sorted list of all available fix names in the given package.Ú*Úfix_é N)Ú
__import__ÚpkgutilZiter_modulesÚ__path__Ú
startswithÚappend)Z fixer_pkgZ
remove_prefixZpkgZ fix_namesÚfinderÚnameZispkg© r ú7/opt/alt/python310/lib64/python3.10/lib2to3/refactor.pyÚget_all_fix_names s
€r c @ ó e Zd ZdS )Ú
_EveryNodeN©Ú__name__Ú
__module__Ú__qualname__r r r r r + ó r c C sŽ t | tjtjfƒr| jdu rt‚| jhS t | tjƒr$| jr"t| jƒS t‚t | tj ƒrAt
ƒ }| jD ]}|D ] }| t|ƒ¡ q4q0|S td| ƒ‚)zf Accepts a pytree Pattern Node and returns a set
of the pattern types which will match first. Nz$Oh no! I don't understand pattern %s)
Ú
isinstancer ZNodePatternZLeafPatternÚtyper ZNegatedPatternZcontentÚ_get_head_typesZWildcardPatternÚsetÚupdateÚ Exception)ZpatÚrÚpÚxr r r r! / s
ÿr! c C s¼ t t¡}g }| D ];}|jr1zt|jƒ}W n ty# | |¡ Y q w |D ] }|| |¡ q&q |jdur?||j |¡ q | |¡ q tt j
j ¡ t j
j
ƒD ] }|| |¡ qPt|ƒS )z^ Accepts a list of fixers and returns a dictionary
of head node type --> fixer list. N)ÚcollectionsÚdefaultdictÚlistÚpatternr! r r Z_accept_typer r Úpython_grammarZ
symbol2numberÚvaluesÚtokensÚextendÚdict)Z
fixer_listZ
head_nodesZeveryÚfixerZheadsZ node_typer r r Ú_get_headnode_dictK s(
ÿÿ
ÿr2 c s ‡ fdd„t ˆ dƒD ƒS )zN
Return the fully qualified names for fixers in the package pkg_name.
c s g | ]}ˆ d | ‘qS ©Ú.r )Ú.0Úfix_name©Zpkg_namer r Ú
h s ÿz+get_fixers_from_package..F)r r7 r r7 r Úget_fixers_from_packaged s
ÿr9 c C s | S ©Nr )Úobjr r r Ú _identityk s r<