0 ˆÅÍ „ ?Ì¿Ê?÷a ´iskã@sdZdZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z m Z mZddlmZddlmZmZdd lmZd!d d „ZGd d„deƒZdd„Zdd„Zdd„Zdd„Zdd„ZGdd„deƒZGdd„deƒZ Gdd„deƒZ!Gdd „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_matcherTcCsTt|ggdgƒ}g}t |j¡D].\}}}| d¡r |rD|dd…}| |¡q |S)zEReturn a sorted list of all available fix names in the given package.Ú*Úfix_éN)Ú __import__ÚpkgutilÚ iter_modulesÚ__path__Ú startswithÚappend)Z fixer_pkgZ remove_prefixÚpkgZ fix_namesÚfinderÚnameÚispkg©rú(/usr/lib64/python3.9/lib2to3/refactor.pyÚget_all_fix_namess   rc@s eZdZdS)Ú _EveryNodeN©Ú__name__Ú __module__Ú __qualname__rrrrr+srcCs’t|tjtjfƒr(|jdur t‚|jhSt|tjƒrH|jrDt|jƒSt‚t|tj ƒr‚t ƒ}|jD]}|D]}|  t|ƒ¡qhq`|St d|ƒ‚dS)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) Ú isinstancerZ NodePatternZ LeafPatternÚtyperZNegatedPatternZcontentÚ_get_head_typesZWildcardPatternÚsetÚupdateÚ Exception)ÚpatÚrÚpÚxrrrr"/s     r"c Cs¼t t¡}g}|D]v}|jrbzt|jƒ}WntyF| |¡Yqˆ0|D]}|| |¡qLq|jdur~||j |¡q| |¡qtt j j   ¡t j j ƒD]}|| |¡q t|ƒS)z^ Accepts a list of fixers and returns a dictionary of head node type --> fixer list. N)Ú collectionsÚ defaultdictÚlistÚpatternr"rrZ _accept_typerr Úpython_grammarZ symbol2numberÚvaluesÚtokensÚextendÚdict)Z fixer_listZ head_nodesZeveryÚfixerZheadsZ node_typerrrÚ_get_headnode_dictKs$     ÿr4cs‡fdd„tˆdƒDƒS)zN Return the fully qualified names for fixers in the package pkg_name. csg|]}ˆd|‘qS©Ú.r)Ú.0Úfix_name©Úpkg_namerrÚ hsÿz+get_fixers_from_package..F)rr9rr9rÚget_fixers_from_packageds ÿr<cCs|S©Nr)ÚobjrrrÚ _identityksr?csVd}t t |¡j¡‰‡fdd„}ttjtjtj hƒ}t ƒ}zü|ƒ\}}||vrTq>q>|tj krl|rf�q6d}q>|tj k�r6|dk�r6|ƒ\}}|tj ksž|dkr¢�q6|ƒ\}}|tj ks¾|dkrÂ�q6|ƒ\}}|tj krè|dkrè|ƒ\}}|tj k�r4| |¡|ƒ\}}|tj k�s.|d k�r"�q4|ƒ\}}qèq>�q6q>Wnt�yLYn0t|ƒS) NFcstˆƒ}|d|dfS)Nrr)Únext)Útok©ÚgenrrÚadvancersz(_detect_future_features..advanceTÚfromZ __future__Úimportú(ú,)rÚgenerate_tokensÚioÚStringIOÚreadlineÚ frozensetrÚNEWLINEÚNLÚCOMMENTr#ÚSTRINGÚNAMEÚOPÚaddÚ StopIteration)ÚsourceZhave_docstringrDÚignoreÚfeaturesÚtpÚvaluerrBrÚ_detect_future_featuresosB           r[c@seZdZdZdS)Ú FixerErrorzA fixer could not be loaded.N)rrrÚ__doc__rrrrr\—sr\c@sæeZdZddddœZdZdZd4dd„Zdd „Zd d „Zd d „Z dd„Z dd„Z d5dd„Z d6dd„Z dd„Zd7dd„Zdd„Zd8dd„Zdd„Z