B <$tt@sPddlZddlmZddlmZddlmZGdddeZGdd d eZ dS) N)PatternCompiler)pygram)does_tree_importc@seZdZdZdZdZdZdZe dZ e Z dZ dZdZdZdZdZejZddZdd Zd d Zd d ZddZdddZddZdddZddZddZddZ dS)BaseFixNrZpostFcCs||_||_|dS)N)optionslogcompile_pattern)selfrr r 5/opt/alt/python37/lib/python3.7/lib2to3/fixer_base.py__init__/szBaseFix.__init__cCs,|jdk r(t}|j|jdd\|_|_dS)NT)Z with_tree)PATTERNrr pattern pattern_tree)r ZPCr r r r ;s zBaseFix.compile_patterncCs ||_dS)N)filename)r rr r r set_filenameFszBaseFix.set_filenamecCsd|i}|j||o|S)Nnode)rmatch)r rresultsr r r rMs z BaseFix.matchcCs tdS)N)NotImplementedError)r rrr r r transformYszBaseFix.transformxxx_todo_changemecCs6|}x ||jkr$|tt|j}qW|j||S)N) used_namesstrnextnumbersadd)r templatenamer r r new_nameis   zBaseFix.new_namecCs.|jrd|_|jd|j|j|dS)NFz### In file %s ###) first_logr appendr)r messager r r log_messagetszBaseFix.log_messagecCs>|}|}d|_d}||||f|r:||dS)NzLine %d: could not convert: %s) get_linenoZcloneprefixr%)r rreasonlinenoZ for_outputmsgr r r cannot_convertzszBaseFix.cannot_convertcCs|}|d||fdS)Nz Line %d: %s)r'r%)r rr)r*r r r warningszBaseFix.warningcCs(|j|_||td|_d|_dS)NrT)rr itertoolscountrr")r treerr r r start_trees  zBaseFix.start_treecCsdS)Nr )r r0rr r r finish_treeszBaseFix.finish_tree)r)N)!__name__ __module__ __qualname__rrrrrr.r/rsetrorderZexplicitZ run_orderZ _accept_typeZkeep_line_orderZ BM_compatiblerZpython_symbolsZsymsrr rrrr!r%r,r-r1r2r r r r rs2         rcs(eZdZdZfddZddZZS)ConditionalFixNcstt|j|d|_dS)N)superr8r1 _should_skip)r args) __class__r r r1szConditionalFix.start_treecCsJ|jdk r|jS|jd}|d}d|dd}t||||_|jS)N.)r:skip_onsplitjoinr)r rZpkgr r r r should_skips  zConditionalFix.should_skip)r3r4r5r?r1rB __classcell__r r )r<r r8s r8) r.Zpatcomprr&rZ fixer_utilrobjectrr8r r r r s