o ,]8 @s\dZddlmZmZmZddlmZddlmZm Z m Z m Z e dZ GdddejZdS) a,Fixer for print. Change: "print" into "print()" "print ..." into "print(...)" "print(...)" not changed "print ... ," into "print(..., end=' ')" "print >>x, ..." into "print(..., file=x)" No changes are applied if print_function is imported from __future__ )patcomppytree fixer_base)token)NameCallCommaStringz8atom< '(' [arith_expr|atom|power|term|STRING|NAME] ')' >c@s$eZdZdZdZddZddZdS)FixPrintTzP simple_stmt< any* bare='print' any* > | print_stmt c Cs|sJ|d}|r|ttdg|jddS|jdtdks%J|jdd}t|dkr;t|dr;dSd}}}|rR|dt krR|dd}d}|rs|dt t j dkrst|d ksgJ|d}|d d}d d |D}|rd |d_|dus|dus|dur|dur||dtt||dur||dtt||dur||d|ttd|} |j| _| S)Nbareprint)prefixr z>>cSsg|]}|qS)clone).0argrr=/usr/lib/python3/dist-packages/libfuturize/fixes/fix_print.py Asz&FixPrint.transform..sependfile)getreplacerrr childrenlen parend_exprmatchrrLeafr RIGHTSHIFTr add_kwargr repr) selfnoderesults bare_printargsrrrl_argsn_stmtrrr transform$s@      zFixPrint.transformcCsNd|_t|jjt|ttjd|f}|r | t d|_| |dS)Nr=r) r rNodesymsargumentrr#rEQUALappendr)r'l_nodess_kwdn_expr n_argumentrrrr%Ts   zFixPrint.add_kwargN)__name__ __module__ __qualname__ BM_compatiblePATTERNr.r%rrrrr s  0r N)__doc__lib2to3rrr lib2to3.pgen2rlib2to3.fixer_utilrrrr compile_patternr!BaseFixr rrrrs