Sindbad~EG File Manager
3
�uGh) � @ s\ d Z ddlmZmZmZ ddlmZ ddlmZm Z m
Z
mZ ejd�Z
G dd� dej�ZdS ) 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__
� )�patcomp�pytree�
fixer_base)�token)�Name�Call�Comma�Stringz8atom< '(' [arith_expr|atom|power|term|STRING|NAME] ')' >c @ s$ e Zd ZdZdZdd� Zdd� ZdS )�FixPrintTzP
simple_stmt< any* bare='print' any* > | print_stmt
c C s� |st �|jd�}|r4|jttd�g |jd�� d S |jd td�ksJt �|jdd � }t|�dkrvtj |d �rvd S d } }}|r�|d t
� kr�|d d� }d}dd� |d j� D �}|r�|d jd d kr�|d jdd� dkr�d}|�r2|d t
jtjd�k�r2t|�dk�st �|d j� }|d
d � }dd� |D �} | �rPd| d _|d k �sn|d k �sn|d k �r�|d k �r�| j| dtt|��� |d k �r�| j| dtt|��� |d k �r�| j| d|� ttd�| �}
|j|
_|
S )NZbare�print)�prefixr � � c S s g | ]}|j tjkr|�qS � )�typer �STRING)�.0Zleafr r �B/root/tmp/pip-build-gzoz1_uw/future/libfuturize/fixes/fix_print.py�
<listcomp>? s z&FixPrint.transform.<locals>.<listcomp>�r� �\t�\n�\r� z>>� c S s g | ]}|j � �qS r )�clone)r �argr r r r K s �sep�end�file���r! r! r! r! ���r! )r r r )�AssertionError�get�replacer r r �children�len�parend_expr�matchr Zleaves�valuer �Leafr �
RIGHTSHIFTr � add_kwargr �repr)�self�node�resultsZ
bare_print�argsr r r Z
string_leavesZl_argsZn_stmtr r r � transform$ sH
zFixPrint.transformc C sN d|_ tj| jjt|�tjtjd�|f�}|r@|j t
� � d|_ |j |� d S )Nr �=r )r r �NodeZsymsZargumentr r+ r �EQUAL�appendr )r/ Zl_nodesZs_kwdZn_exprZ
n_argumentr r r r- ^ s
zFixPrint.add_kwargN)�__name__�
__module__�__qualname__Z
BM_compatibleZPATTERNr3 r- r r r r r
s :r
N)�__doc__Zlib2to3r r r Z
lib2to3.pgen2r Zlib2to3.fixer_utilr r r r Zcompile_patternr( ZBaseFixr
r r r r �<module> s
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists