o
    bc                     @   sl   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 edZG d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Stringz"atom< '(' [atom|STRING|NAME] ')' >c                   @   s$   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   s  |sJ | d}|r|ttdg |jd d S |jd tdks%J |jdd  }t|dkr;t|d r;d S d  } }}|rR|d t	 krR|d d }d}|rs|d t
tjdkrst|d	ksgJ |d  }|d
d  }dd |D }|rd|d _|d us|d us|d ur|d ur| |dtt| |d ur| |dtt| |d ur| |d| ttd|}	|j|	_|	S )Nbareprint)prefix        z>>r      c                 S   s   g | ]}|  qS  )clone).0argr   r   ./usr/lib/python3.10/lib2to3/fixes/fix_print.py
<listcomp>?   s    z&FixPrint.transform.<locals>.<listcomp> sependfile)getreplacer   r   r   childrenlenparend_exprmatchr   r   Leafr   
RIGHTSHIFTr   	add_kwargr	   repr)
selfnoderesults
bare_printargsr   r   r   l_argsn_stmtr   r   r   	transform%   s@   

zFixPrint.transformc                 C   sN   d|_ t| jjt|ttjd|f}|r |	t
  d|_ |	| d S )Nr   =r   )r   r   Nodesymsargumentr   r#   r   EQUALappendr   )r'   l_nodess_kwdn_expr
n_argumentr   r   r   r%   M   s   
zFixPrint.add_kwargN)__name__
__module____qualname__BM_compatiblePATTERNr.   r%   r   r   r   r   r
      s
    (r
   N)__doc__r   r   r   pgen2r   r   
fixer_utilr   r   r   r	   compile_patternr!   BaseFixr
   r   r   r   r   <module>   s   