3
\ � @ sr d dl mZ d dlmZ d dlmZmZmZ dd� Zdd� Z dd � Z
d
d� Zdd
� Zdd� Z
G dd� dej�ZdS )� )�
fixer_base)�token)�syms�Node�Leafc C sx xr| j D ]h}|jtjkr t|�S |jtjkr|j r|j d }|jtjkr|j r|j d }t|t�r|j dkrdS qW dS )N� �
__metaclass__TF)
�children�typer �suite�
has_metaclass�simple_stmt� expr_stmt�
isinstancer �value)�parent�node� 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 td��ttjg �}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_child�clone�remove)�cls_noder �ir � move_noder r r �fixup_parse_tree- s
r c
C s� x(t |j�D ]\}}|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_child�prefix)
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 td��x�tt|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|t�rd|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