a  ze"@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 F/opt/bitninja-python-dojo/embedded/lib/python3.9/lib2to3/fixer_base.py__init__/szBaseFix.__init__cCs,|jdur(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 rresultsr r rrMs z BaseFix.matchcCs tdSr)NotImplementedErrorrr r r transformYszBaseFix.transformxxx_todo_changemecCs2|}||jvr"|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 r2r r r finish_treeszBaseFix.finish_tree)r)N)!__name__ __module__ __qualname__rrrr rr0r1rsetrorderZexplicitZ run_orderZ _accept_typeZkeep_line_orderZ BM_compatiblerZpython_symbolsZsymsrr rrrr#r'r.r/r3r4r r r rrs2         rcs(eZdZdZfddZddZZS)ConditionalFixNcstt|j|d|_dSr)superr:r3 _should_skip)r args __class__r rr3szConditionalFix.start_treecCsJ|jdur|jS|jd}|d}d|dd}t||||_|jS)N.)r<skip_onsplitjoinr)r rZpkgr"r r r should_skips  zConditionalFix.should_skip)r5r6r7rBr3rE __classcell__r r r>rr:s r:) r0Zpatcomprr(rZ fixer_utilrobjectrr:r r r rs