File: //usr/local/lib/python3.9/site-packages/libfuturize/fixes/__pycache__/fix_print.cpython-39.pyc
a
��?h) � @ s\ d Z ddlmZmZmZ ddlmZ ddlmZm Z m
Z
mZ e�d�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� |sJ �|� d�}|r4|�ttd�g |jd�� d S |jd td�ksJJ �|jdd � }t|�dkrvt�|d �rvd S d } }}|r�|d t � kr�|d d� }d}dd � |d �
� D �}|r�|d jd d
kr�|d jdd� dv r�d
}|�r2|d t�
tjd�k�r2t|�dk�sJ �|d �� }|dd � }dd � |D �} | �rPd
| d _|d u�sn|d u�sn|d u�r�|d u�r�| �| dtt|��� |d u�r�| �| dtt|��� |d u�r�| �| d|� ttd�| �}
|j|
_|
S )NZbare�print)�prefixr � ���� c S s g | ]}|j tjkr|�qS � )�typer �STRING)�.0Zleafr r �E/usr/local/lib/python3.9/site-packages/libfuturize/fixes/fix_print.py�
<listcomp>? � z&FixPrint.transform.<locals>.<listcomp>�r���)z\tz\nz\r� z>>� � c S s g | ]}|� � �qS r )�clone)r �argr r r r K r �sep�end�file)�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$ sP
����
zFixPrint.transformc C sN d|_ t�| jjt|�t�tjd�|f�}|r@|� t
� � d|_ |� |� d S )Nr �=r )r r �NodeZsyms�argumentr r( r �EQUAL�appendr )r, Zl_nodesZs_kwdZn_exprZ
n_argumentr r r r* ^ s
��zFixPrint.add_kwargN)�__name__�
__module__�__qualname__Z
BM_compatibleZPATTERNr0 r* r r r r r
s :r
N)�__doc__Zlib2to3r r r Z
lib2to3.pgen2r Zlib2to3.fixer_utilr r r r �compile_patternr% ZBaseFixr
r r r r �<module> s �