o
    i                     @   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EQUALZarglistCOMMAr   )
parentresultsnodeZkidschildcommametaequalnamearg r   p/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   Zatomr   r   r   ZsuiteINDENTindexvalueZinsert_childr   )selfr   r   Zmeta_resultsr   targetr   r   Z	stmt_nodeitemstmtlocidentr   r   r    	transform5   s.   


zFixMetaclass.transformN)__name__
__module____qualname__ZPATTERNr0   r   r   r   r    r"   /   s    r"   N)__doc__Zlib2to3r   Zlib2to3.fixer_utilr   r   r   r   r   r   Zlib2to3.pygramr	   Zlibfuturize.fixer_utilr
   r   r!   ZBaseFixr"   r   r   r   r    <module>   s     $