MINI MINI MANI MO
3
  \                  @   sr   d dl mZ d dlmZ d dlmZmZmZ dd Zdd Z	dd	 Z
d
d Zdd
 Zdd Z
G dd dejZdS )   )
fixer_base)token)symsNodeLeafc             C   sx   xr| j D ]h}|jtjkr t|S |jtjkr|j r|j d }|jtjkr|j r|j d }t|tr|j	dkrdS qW dS )N    
__metaclass__TF)
childrentyper   suite
has_metaclasssimple_stmt	expr_stmt
isinstancer   value)parentnode	expr_nodeZ	left_side r   3/usr/lib64/python3.6/lib2to3/fixes/fix_metaclass.pyr      s    
r   c             C   s   x| j D ]}|jtjkrd S qW x,t| j D ]\}}|jtjkr,P q,W tdttjg }x:| j |d d  r| j |d  }|j	|j
  |j  q\W | j	| |}d S )NzNo class suite and no ':'!   )r	   r
   r   r   	enumerater   COLON
ValueErrorr   append_childcloneremove)cls_noder   ir   	move_noder   r   r   fixup_parse_tree-   s    
r    c       
      C   s   x(t |jD ]\}}|jtjkrP qW d S |j  ttjg }ttj	|g}x2|j|d  r~|j| }|j
|j  |j  qNW | j|| |jd jd }|jd jd }	|	j
|_
d S )Nr   )r   r	   r
   r   SEMIr   r   r   r   r
   r   r   insert_childprefix)
r   r   Z	stmt_nodeZsemi_indr   Znew_exprZnew_stmtr   Z	new_leaf1Z	old_leaf1r   r   r   fixup_simple_stmtG   s    
r$   c             C   s*   | j r&| j d jtjkr&| j d j  d S )Nr   r%   )r	   r
   r   NEWLINEr   )r   r   r   r   remove_trailing_newline_   s    r'   c             c   s   x$| j D ]}|jtjkrP qW tdxtt|j D ]t\}}|jtjkr6|j r6|j d }|jtjkr6|j r6|j d }t	|t
r6|jdkr6t||| t
| |||fV  q6W d S )NzNo class suite!r   r   )r	   r
   r   r   r   listr   r
   r   r   r   r   r$   r'   )r   r   r   Zsimple_noder   Z	left_noder   r   r   
find_metasd   s    
r)   c             C   s   | j d d d }x|r.|j }|jtjkrP qW xL|r||j }t|trd|jtjkrd|jr`d|_d S |j	|j d d d  q2W d S )Nr    r%   r%   )
r	   popr
   r   INDENTr   r   DEDENTr#   extend)r   Zkidsr   r   r   r   fixup_indent{   s    r/   c               @   s   e Zd ZdZdZdd ZdS )FixMetaclassTz
    classdef<any*>
    c             C   s<  t |sd S t| d }x"t|D ]\}}}|}|j  q"W |jd j}t|jdkr|jd jtjkrt|jd }n(|jd j	 }	t
tj|	g}|jd| nt|jdkrt
tjg }|jd| nZt|jdkrt
tjg }|jdt
tjd |jd| |jdt
tjd ntd	|jd jd }
d
|
_|
j}|jr^|jt
tjd d|
_nd
|
_|jd }d
|jd _d
|jd _|j| t| |js|j  t
|d}
||
_|j|
 |jt
tjd nbt|jdkr8|jd jtjkr8|jd jtjkr8t
|d}
|jd|
 |jdt
tjd d S )Nr               r   )(zUnexpected class definition	metaclass, r*   r   pass
r%   r%   r%   )r   r    r)   r   r	   r
   lenr   arglistr   r   Z	set_childr"