o
     JAf"                     @   sR   	 d dl Z ddlmZ ddlmZ ddlmZ G dd deZG dd	 d	eZ	dS )
    N   )PatternCompiler)pygram)does_tree_importc                   @   s   e Zd Z	 dZdZdZdZdZe	dZ
e ZdZdZdZdZdZdZejZdd Zdd	 Zd
d Zdd Zdd ZdddZdd ZdddZdd Zdd Zdd Z dS )BaseFixNr   ZpostF   c                 C   s   	 || _ || _|   d S N)optionslogcompile_pattern)selfr	   r
    r   )/usr/lib/python3.10/lib2to3/fixer_base.py__init__/   s   zBaseFix.__init__c                 C   s2   	 | j d urt }|j| j dd\| _| _d S d S )NT)Z	with_tree)PATTERNr   r   patternpattern_tree)r   ZPCr   r   r   r   ;   s   
zBaseFix.compile_patternc                 C   s   	 || _ d S r   )filename)r   r   r   r   r   set_filenameF   s   
zBaseFix.set_filenamec                 C   s   	 d|i}| j ||o|S )Nnode)r   matchr   r   resultsr   r   r   r   M   s   zBaseFix.matchc                 C   s   	 t  r   )NotImplementedErrorr   r   r   r   	transformY   s   zBaseFix.transformxxx_todo_changemec                 C   s<   	 |}|| j v r|tt| j }|| j v s| j | |S r   )
used_namesstrnextnumbersadd)r   templatenamer   r   r   new_namei   s   

zBaseFix.new_namec                 C   s.   | j rd| _ | jd| j  | j| d S )NFz### In file %s ###)	first_logr
   appendr   )r   messager   r   r   log_messaget   s   zBaseFix.log_messagec                 C   sD   	 |  }| }d|_d}| |||f  |r | | d S d S )N zLine %d: could not convert: %s)
get_linenoZcloneprefixr'   )r   r   reasonlinenoZ
for_outputmsgr   r   r   cannot_convertz   s   zBaseFix.cannot_convertc                 C   s    	 |  }| d||f  d S )NzLine %d: %s)r)   r'   )r   r   r+   r,   r   r   r   warning   s   zBaseFix.warningc                 C   s*   	 |j | _ | | td| _d| _d S )Nr   T)r   r   	itertoolscountr   r$   r   Ztreer   r   r   r   
start_tree   s
   

zBaseFix.start_treec                 C   s   	 d S r   r   r2   r   r   r   finish_tree   s   zBaseFix.finish_tree)r   r   )!__name__
__module____qualname__r   r   r   r	   r   r0   r1   r   setr   orderZexplicitZ	run_orderZ_accept_typeZkeep_line_orderZBM_compatibler   Zpython_symbolsZsymsr   r   r   r   r   r#   r'   r.   r/   r3   r4   r   r   r   r   r      s6    



r   c                       s*   e Zd Z	 dZ fddZdd Z  ZS )ConditionalFixNc                    s   t t| j|  d | _d S r   )superr:   r3   _should_skip)r   args	__class__r   r   r3      s   
zConditionalFix.start_treec                 C   sJ   | j d ur| j S | jd}|d }d|d d }t|||| _ | j S )N.)r<   skip_onsplitjoinr   )r   r   Zpkgr"   r   r   r   should_skip   s   
zConditionalFix.should_skip)r5   r6   r7   rB   r3   rE   __classcell__r   r   r>   r   r:      s
    r:   )
r0   Zpatcompr   r(   r   Z
fixer_utilr   objectr   r:   r   r   r   r   <module>   s    