U
    ËZj¼  ã                   @   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rd|d ttjdƒkrb|d ttjdƒkrb|d rb|g| } �qq
|jtjkr
|j D ]Ž}|r‚ q
|jtj	kr”|}qvt|ƒt
krvd  } }}|j D ]P}	|	ttjdƒkrÌ|	}q²|ræ|	ttjdƒkræ|	}q²|r²|r²|	}||||f} qvq²qvq
|S )Nr   Ú	metaclassé   ú=é   )ÚchildrenÚtyper   Úargumentr   r	   ÚNAMEÚEQUALZarglistÚCOMMAr   )
ÚparentÚresultsÚnodeZkidsÚchildÚcommaÚmetaÚequalÚnameÚarg© r   úd/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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 ]p}	|	jtjkrh|	jD ]X}
|
jtjkr~|	j |
¡d }ttj|
jƒ}|	 ||¡ |	 |tƒ ¡ |	 ||¡  qhq~qhd S )NZ__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PATTERNr/   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    $