a
    W%b8                     @   s\   d Z ddlmZmZ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(...)"     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 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}|r4|ttdg |jd d S |jd tdksJJ |jdd  }t|dkrvt|d rvd S d  } }}|r|d t	 kr|d d }d}|r|d t
tjdkrt|d	ksJ |d  }|d
d  }dd |D }|rd|d _|d us"|d us"|d urz|d urB| |dtt| |d urb| |dtt| |d urz| |d| ttd|}	|j|	_|	S )NZbareprint)prefixr       z>>      c                 S   s   g | ]}|  qS  )clone).0argr   r   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/libfuturize/fixes/fix_print.py
<listcomp>A       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resultsZ
bare_printargsr   r   r   Zl_argsZ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   NodeZsymsZargumentr   r#   r   EQUALappendr   )r'   Zl_nodesZs_kwdZn_exprZ
n_argumentr   r   r   r%   T   s    
zFixPrint.add_kwargN)__name__
__module____qualname__ZBM_compatibleZPATTERNr+   r%   r   r   r   r   r
      s   0r
   N)__doc__Zlib2to3r   r   r   Zlib2to3.pgen2r   Zlib2to3.fixer_utilr   r   r   r	   compile_patternr!   ZBaseFixr
   r   r   r   r   <module>   s   