î
\á[\&  ã               @   sš   d  Z  d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z m	 Z	 m
 Z
 m Z m Z e j d ƒ Z Gd d	 „  d	 e j ƒ Z d
 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)ÚNameÚCallÚCommaÚStringÚis_tuplez"atom< '(' [atom|STRING|NAME] ')' >c               @   s4   e  Z d  Z d Z d Z d d „  Z d d „  Z d S)ÚFixPrintTzP
              simple_stmt< any* bare='print' any* > | print_stmt
              c       
      C   s8  | s t  ‚ | j d ƒ } | rJ | j t t d ƒ g  d | j ƒƒ d  S| j d t d ƒ k si t  ‚ | j d d  … } t | ƒ d k r¥ t j	 | d ƒ r¥ d  Sd  } } } | rå | d t
 ƒ  k rå | d  d … } d } n  | rE| d t j t j d ƒ k rEt | ƒ d k s"t  ‚ | d j ƒ  } | d	 d  … } n  d
 d „  | Dƒ } | rnd | d _ n  | d  k	 s’| d  k	 s’| d  k	 r| d  k	 rÀ|  j | d t t | ƒ ƒ ƒ n  | d  k	 rî|  j | d t t | ƒ ƒ ƒ n  | d  k	 r|  j | d | ƒ qn  t t d ƒ | ƒ }	 | j |	 _ |	 S)NZbareÚprintÚprefixé    é   ú z>>r   é   c             S   s   g  |  ] } | j  ƒ  ‘ q S© )Úclone)Ú.0Úargr   r   ú-/usr/lib/python3.4/lib2to3/fixes/fix_print.pyú
<listcomp>?   s   	 z&FixPrint.transform.<locals>.<listcomp>Ú ÚsepÚendÚfileéÿÿÿÿr   )ÚAssertionErrorÚgetÚreplacer   r   r   ZchildrenÚlenÚparend_exprÚmatchr   r   ÚLeafr   Ú
RIGHTSHIFTr   Ú	add_kwargr	   Úrepr)
ÚselfZnodeZresultsZ
bare_printÚargsr   r   r   Zl_argsZn_stmtr   r   r   Ú	transform%   s>    %	%$""zFixPrint.transformc             C   sr   d | _  t j |  j j t | ƒ t j t j d ƒ | f ƒ } | ra | j	 t
 ƒ  ƒ d | _  n  | j	 | ƒ d  S)Nr   ú=r   )r   r   ZNodeZsymsZargumentr   r#   r   ÚEQUALÚappendr   )r'   Zl_nodesZs_kwdZn_exprZ
n_argumentr   r   r   r%   M   s    		zFixPrint.add_kwargN)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNr)   r%   r   r   r   r   r      s   (r   N)Ú__doc__r   r   r   Zpgen2r   r   Z
fixer_utilr   r   r   r	   r
   Zcompile_patternr!   ZBaseFixr   r   r   r   r   Ú<module>   s   (	