
    z%i                          	 d dl mZ d dlmZ d dlmZmZmZ d Zd Z	d Z
d Zd Zd	 Z G d
 dej                        Zy)   )
fixer_base)token)symsNodeLeafc                    	 | j                   D ]  }|j                  t        j                  k(  rt	        |      c S |j                  t        j
                  k(  sK|j                   sX|j                   d   }|j                  t        j                  k(  s|j                   s|j                   d   }t        |t              s|j                  dk(  s y y)N    __metaclass__TF)
childrentyper   suitehas_metaclasssimple_stmt	expr_stmt
isinstancer   value)parentnode	expr_node	left_sides       O/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/lib2to3/fixes/fix_metaclass.pyr   r      s    
  	 99

" &&YY$***t}}a(I~~/I4F4F%..q1	i.!?:	      c                    	 | j                   D ]!  }|j                  t        j                  k(  s! y  t	        | j                         D ]$  \  }}|j                  t
        j                  k(  s$ n t        d      t        t        j                  g       }| j                   |dz   d  rT| j                   |dz      }|j                  |j                                |j                          | j                   |dz   d  rT| j                  |       |}y )NzNo class suite and no ':'!   )r   r   r   r   	enumerater   COLON
ValueErrorr   append_childcloneremove)cls_noder   ir   	move_nodes        r   fixup_parse_treer$   -   s     !! 99

" X../ 7499#7 566 R E


AaCD
!%%ac*	9??,- 

AaCD
! % Dr   c                 z   	 t        |j                        D ]$  \  }}|j                  t        j                  k(  s$ n y |j                          t        t        j                  g       }t        t        j                  |g      }|j                  |d  rN|j                  |   }|j                  |j                                |j                          |j                  |d  rN| j                  ||       |j                  d   j                  d   }|j                  d   j                  d   }	|	j                  |_        y )Nr	   )r   r   r   r   SEMIr    r   r   r   r   r   r   insert_childprefix)
r   r"   	stmt_nodesemi_indr   new_exprnew_stmtr#   	new_leaf1	old_leaf1s
             r   fixup_simple_stmtr/   G   s    $I$6$67 $99

" 	KKMDNNB'HD$$xj1H


XY
'&&x0	ioo/0 

XY
' 8$!!!$--a0I""1%..q1I ''Ir   c                     | j                   rI| j                   d   j                  t        j                  k(  r| j                   d   j	                          y y y )N)r   r   r   NEWLINEr    )r   s    r   remove_trailing_newliner3   _   s@    }}r*//5==@b  " A}r   c              #   6  K   | j                   D ]!  }|j                  t        j                  k(  s! n t	        d      t        t        |j                               D ]  \  }}|j                  t        j                  k(  s$|j                   s1|j                   d   }|j                  t        j                  k(  s^|j                   sk|j                   d   }t        |t              s|j                  dk(  st        |||       t        |       |||f  y w)NzNo class suite!r	   r
   )r   r   r   r   r   listr   r   r   r   r   r   r/   r3   )r!   r   r"   simple_noder   	left_nodes         r   
find_metasr8   d   s     !! ,99

", *++ y78 1;t///K4H4H#,,Q/I~~/I4F4F%..q1	i.!?:%dA{;+K8K001s/   -DAD D,D:DD'D7"Dc                    	 | j                   d d d   }|r1|j                         }|j                  t        j                  k(  rn|r1|rv|j                         }t        |t              r1|j                  t        j                  k7  r|j                  rd|_        y |j                  |j                   d d d          |ruy y )Nr1    )
r   popr   r   INDENTr   r   DEDENTr(   extend)r   kidsr   s      r   fixup_indentr@   {   s     >>$B$D
xxz99$  xxzdD!dii5<<&?{{ KKdd+, r   c                       e Zd ZdZdZd Zy)FixMetaclassTz
    classdef<any*>
    c                    t        |      sy t        |       d }t        |      D ]  \  }}}|}|j                           |j                  d   j
                  }t        |j                        dk(  r|j                  d   j
                  t        j                  k(  r|j                  d   }n4|j                  d   j                         }	t        t        j                  |	g      }|j                  d|       nt        |j                        dk(  r-t        t        j                  g       }|j                  d|       nt        |j                        dk(  rt        t        j                  g       }|j                  dt        t        j                  d             |j                  d|       |j                  dt        t        j                   d             nt#        d	      |j                  d   j                  d   }
d
|
_        |
j&                  }|j                  r1|j)                  t        t        j*                  d             d|
_        nd|
_        |j                  d   }d|j                  d   _        d|j                  d   _        |j)                  |       t-               |j                  s^|j                          t        |d      }||_        |j)                  |       |j)                  t        t        j.                  d             y t        |j                        dkD  r|j                  d   j
                  t        j0                  k(  rt|j                  d   j
                  t        j2                  k(  rIt        |d      }|j                  d|       |j                  dt        t        j.                  d             y y y y )Nr	               r   )(zUnexpected class definition	metaclass, r:   r   pass
r1   )r   r$   r8   r    r   r   lenr   arglistr   r   	set_childr'   r   r   RPARLPARr   r   r(   r   COMMAr@   r2   r<   r=   )selfr   resultslast_metaclassr   r"   stmt	text_typerQ   r   meta_txtorig_meta_prefixr   	pass_leafs                 r   	transformzFixMetaclass.transform   s   T" (. 	NE1d!NKKM	 MM!$))	 t}}" }}Q$$4--* q)//1t||fX6q'*1$ 4<<,Ga)1$ 4<<,Gaejj#!67a)aejj#!67:;; "**1-66q9$#??  ekk3!78!HO HO #++A.	')	1$')	1$^,U ~~LLNY/I/Ii(d5==$78 1$..$))U\\9..$))U\\9Y/Ir9-r4t#<=	 : : %r   N)__name__
__module____qualname__BM_compatiblePATTERNr^    r   r   rB   rB      s    MGL>r   rB   N)r:   r   pygramr   
fixer_utilr   r   r   r   r$   r/   r3   r8   r@   BaseFixrB   rd   r   r   <module>rh      sJ   (   ) )&4(0#
1.-,S>:%% S>r   