o
     JAf                     @   sj   	 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 )
   )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   sX  | d}|r|ttdg |jd d S |jdd  }t|dkr,t|d r,d S d  } }}|rC|d t	 krC|d d }d}|r\|d t
tjdkr\|d  }|d	d  }d
d |D }|rjd|d _|d usv|d usv|d ur|d ur| |dtt| |d ur| |dtt| |d ur| |d| ttd|}	|j|	_|	S )NZbareprint)prefix        z>>   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)
selfZ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   ZNodeZsymsargumentr   r"   r   EQUALappendr   )r&   Zl_nodesZs_kwdZn_exprZ
n_argumentr   r   r   r$   M   s   
zFixPrint.add_kwargN)__name__
__module____qualname__ZBM_compatibleZPATTERNr)   r$   r   r   r   r   r
      s
    (r
   N)r   r   r   Zpgen2r   r   Z
fixer_utilr   r   r   r	   compile_patternr    ZBaseFixr
   r   r   r   r   <module>   s   