U e5d"@sPddlZddlmZddlmZddlmZGdddeZGdd d eZ dS) N)PatternCompiler)pygram)does_tree_importc@seZdZdZdZdZdZdZe dZ e Z dZ dZdZdZdZdZejZddZdd Zd d Zd d ZddZdddZddZdddZddZddZddZ dS)BaseFixNrZpostFcCs||_||_|dSN)optionslogcompile_pattern)selfr r r */usr/lib64/python3.8/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 rr ;s  zBaseFix.compile_patterncCs ||_dSr)filename)r rr r r set_filenameFszBaseFix.set_filenamecCsd|i}|j||o|S)Nnode)rmatchr rZresultsr r rrMs z BaseFix.matchcCs tdSr)NotImplementedErrorrr r r transformYszBaseFix.transformxxx_todo_changemecCs2|}||jkr"|tt|j}q|j||Sr) used_namesstrnextnumbersadd)r templatenamer r rnew_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 rcannot_convertzszBaseFix.cannot_convertcCs|}|d||fdS)Nz Line %d: %s)r(r&)r rr*r+r r rwarningszBaseFix.warningcCs(|j|_||td|_d|_dS)NrT)rr itertoolscountrr#r Ztreerr r r start_trees  zBaseFix.start_treecCsdSrr r1r r r finish_treeszBaseFix.finish_tree)r)N)!__name__ __module__ __qualname__rrrr rr/r0rsetrorderZexplicitZ run_orderZ _accept_typeZkeep_line_orderZ BM_compatiblerZpython_symbolsZsymsrr rrrr"r&r-r.r2r3r r r rrs2         rcs(eZdZdZfddZddZZS)ConditionalFixNcstt|j|d|_dSr)superr9r2 _should_skip)r args __class__r rr2szConditionalFix.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)r4r5r6rAr2rD __classcell__r r r=rr9s r9) r/Zpatcomprr'rZ fixer_utilrobjectrr9r r r rs