o
    ,º]¼  ã                   @   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r�d  } }}|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!   ú^/var/www/html/myproject/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     $