
    z%i"                     ^    	 d dl Z ddlmZ ddlmZ ddlmZ  G d de      Z G d d	e      Z	y)
    N   )PatternCompiler)pygram)does_tree_importc                       e Zd Z	 dZdZdZdZdZ ej                  d      Z
 e       ZdZdZdZdZdZdZej(                  Zd Zd Zd Zd	 Zd
 ZddZd ZddZd Zd Zd Z y)BaseFixNr   postF   c                 B    	 || _         || _        | j                          y N)optionslogcompile_pattern)selfr   r   s      F/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/lib2to3/fixer_base.py__init__zBaseFix.__init__/   s#    	     c                     	 | j                   5t               }|j                  | j                   d      \  | _        | _        y y )NT)	with_tree)PATTERNr   r   patternpattern_tree)r   PCs     r   r   zBaseFix.compile_pattern;   sJ    	
 <<# "B.0.@.@KO /A /Q+DL$+ $r   c                     	 || _         y r   )filename)r   r   s     r   set_filenamezBaseFix.set_filenameF   s    	 !r   c                 L    	 d|i}| j                   j                  ||      xr |S )Nnode)r   matchr   r   resultss      r   r   zBaseFix.matchM   s.    	 4.||!!$0<W<r   c                     	 t               r   )NotImplementedErrorr    s      r   	transformzBaseFix.transformY   s    	 "##r   c                     	 |}|| j                   v r0|t        t        | j                              z   }|| j                   v r0| j                   j	                  |       |S r   )
used_namesstrnextnumbersadd)r   templatenames      r   new_namezBaseFix.new_namei   sW    	 doo%c$t||"455D doo%D!r   c                     | j                   r/d| _         | j                  j                  d| j                  z         | j                  j                  |       y )NFz### In file %s ###)	first_logr   appendr   )r   messages     r   log_messagezBaseFix.log_messaget   s:    >>"DNHHOO04==@A r   c                     	 |j                         }|j                         }d|_        d}| j                  |||fz         |r| j                  |       y y )N zLine %d: could not convert: %s)
get_linenocloneprefixr2   )r   r   reasonlineno
for_outputmsgs         r   cannot_convertzBaseFix.cannot_convertz   s[    	 "ZZ\

.
334V$ r   c                 R    	 |j                         }| j                  d||fz         y )NzLine %d: %s)r5   r2   )r   r   r8   r9   s       r   warningzBaseFix.warning   s-    	 "&&)99:r   c                     	 |j                   | _         | j                  |       t        j                  d      | _        d| _        y )Nr   T)r&   r   	itertoolscountr)   r/   r   treer   s      r   
start_treezBaseFix.start_tree   s9    	 //(# q)r   c                      	 y r    rB   s      r   finish_treezBaseFix.finish_tree   s    	 	r   )xxx_todo_changemer   )!__name__
__module____qualname__r   r   r   r   r   r@   rA   r)   setr&   orderexplicit	run_order_accept_typekeep_line_orderBM_compatibler   python_symbolssymsr   r   r   r   r$   r-   r2   r<   r>   rD   rG   rF   r   r   r   r      s     GGLGHiooa GJEHIL OM
   D
	Q!
=$ 	!%;
r   r   c                   *     e Zd Z	 dZ fdZd Z xZS )ConditionalFixNc                 4    t        t        | 
  |  d | _        y r   )superrV   rD   _should_skip)r   args	__class__s     r   rD   zConditionalFix.start_tree   s    nd.5 r   c                     | j                   | j                   S | j                  j                  d      }|d   }dj                  |d d       }t	        |||      | _         | j                   S )N.)rY   skip_onsplitjoinr   )r   r   pkgr,   s       r   should_skipzConditionalFix.should_skip   sh    ($$$ll  %2whhs3Bx ,S$=   r   )rI   rJ   rK   r_   rD   rc   __classcell__)r[   s   @r   rV   rV      s    J G!!r   rV   )
r@   patcompr   r4   r   
fixer_utilr   objectr   rV   rF   r   r   <module>rh      s5    9  %  (Xf Xv!W !r   