o
    \h                     @   sj   d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
mZ ddlmZmZ dd ZG dd	 d	ejZd
S )zn
Fixer for (metaclass=X) -> __metaclass__ = X
Some semantics (see PEP 3115) may be altered in the translation.    )
fixer_base)NamesymsNodeLeafNewline	find_root)token)indentationsuitifyc           
      C   s
  d }| j D ]}}|j }|jtjkr1|d ttjdkr0|d ttjdkr0|d r0|g| } |S q|jtjkr|j D ]G}|r@ nB|jtj	krI|}q:t|t
krd  } }}|j D ](}	|	ttjdkre|	}qX|rr|	ttjdkrr|	}qX|r|r|	}||||f} nqXq:q|S )Nr   	metaclass   =   )childrentyper   argumentr   r	   NAMEEQUALarglistCOMMAr   )
parentresultsnodekidschildcommametaequalnamearg r!   d/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/libpasteurize/fixes/fix_metaclass.pyhas_metaclass   s<   



r#   c                   @   s   e Zd ZdZdd ZdS )FixMetaclassz
    classdef<any*>
    c                 C   s   t |}|sd S |D ]}|  q
ttjd}ttjddd}|}d|_ttj	|||g}t
| |jD ]8}	|	jtjkrl|	jD ],}
|
jtjkrk|	j|
d }ttj|
j}|	|| |	|t  |	||  nq?q4d S )N__metaclass__r    )prefixr   )r#   remover   r	   r   r   r'   r   r   atomr   r   r   suiteINDENTindexvalueinsert_childr   )selfr   r   meta_resultsr   targetr   r   	stmt_nodeitemstmtlocidentr!   r!   r"   	transform5   s.   


zFixMetaclass.transformN)__name__
__module____qualname__PATTERNr7   r!   r!   r!   r"   r$   /   s    r$   N)__doc__lib2to3r   lib2to3.fixer_utilr   r   r   r   r   r   lib2to3.pygramr	   libfuturize.fixer_utilr
   r   r#   BaseFixr$   r!   r!   r!   r"   <module>   s     $