3 \ @sldZddlmZddlmZddlmZddlmZddlmZm Z m Z m Z ej dZ Gdd d ejZd S) a Fixer for print. Change: 'print' into 'print()' 'print ...' into 'print(...)' 'print ... ,' into 'print(..., end=" ")' 'print >>x, ...' into 'print(..., file=x)' No changes are applied if print_function is imported from __future__ )patcomp)pytree)token) fixer_base)NameCallCommaStringz"atom< '(' [atom|STRING|NAME] ')' >c@s$eZdZdZdZddZddZdS)FixPrintTzP simple_stmt< any* bare='print' any* > | print_stmt c Cs|st|jd}|r4|jttdg|jddS|jdtdksJt|jdd}t|dkrvtj |drvdSd}}}|r|dt kr|dd}d}|r|dt j t jdkrt|dkst|dj}|d d}d d |D}|rd |d_|dk s"|dk s"|dk rz|dk rB|j|d tt||dk rb|j|dtt||dk rz|j|d|ttd|} |j| _| S)NZbareprint)prefix z>>rcSsg|] }|jqS)clone).0argrr!/usr/lib64/python3.6/fix_print.py ?sz&FixPrint.transform..sependfiler)AssertionErrorgetreplacerrr Zchildrenlen parend_exprmatchrrLeafr RIGHTSHIFTr add_kwargr repr) selfZnoderesultsZ bare_printargsrrrZl_argsZn_stmtrrr transform%s>          zFixPrint.transformcCsNd|_tj|jjt|tjtjd|f}|r@|j t d|_|j |dS)Nr=r) r rZNodeZsymsZargumentrr"rEQUALappendr)r&Zl_nodesZs_kwdZn_exprZ n_argumentrrrr$Ms   zFixPrint.add_kwargN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNr)r$rrrrr s(r N)__doc__rrrZpgen2rrZ fixer_utilrrrr Zcompile_patternr ZBaseFixr rrrrs