o
    \h)                     @   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}|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  } }}|ru|d t	 kru|d d }d}dd	 |d 
 D }|ru|d jd d
kru|d jdd dv rud}|r|d ttjdkrt|dksJ |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)prefixr       c                 S   s   g | ]
}|j tjkr|qS  )typer   STRING).0leafr   r   ^/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/libfuturize/fixes/fix_print.py
<listcomp>?   s    z&FixPrint.transform.<locals>.<listcomp>r)z\tz\nz\r z>>      c                 S   s   g | ]}|  qS r   )clone)r   argr   r   r   r   K   s    sependfile)getreplacer   r   r   childrenlenparend_exprmatchr   leavesvaluer   Leafr   
RIGHTSHIFTr   	add_kwargr	   repr)selfnoderesults
bare_printargsr   r    r!   string_leavesl_argsn_stmtr   r   r   	transform$   sL   

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,   ^   s   
zFixPrint.add_kwargN)__name__
__module____qualname__BM_compatiblePATTERNr6   r,   r   r   r   r   r
      s
    :r
   N)__doc__lib2to3r   r   r   lib2to3.pgen2r   lib2to3.fixer_utilr   r   r   r	   compile_patternr&   BaseFixr
   r   r   r   r   <module>   s   