
    Fwg                         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 Z G d dej                         Zy	)
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                    d }| j                   D ]K  }|j                   }|j                  t        j                  k(  rQ|d   t	        t
        j                  d      k(  sN|d   t	        t
        j                  d      k(  so|d   su|g|z   } |S |j                  t        j                  k(  s|j                   D ]  }|r |j                  t
        j                  k(  r|}'t        |      t        k(  s:d x}x}}|j                   D ]S  }	|	t	        t
        j                  d      k(  r|	}#|r |	t	        t
        j                  d      k(  r|	}E|sH|sK|	}|||f}   N |S )Nr   	metaclass   =   )childrentyper   argumentr   r
   NAMEEQUALarglistCOMMAr   )
parentresultsnodekidschildcommametaequalnameargs
             X/var/www/horilla/myenv/lib/python3.12/site-packages/libpasteurize/fixes/fix_metaclass.pyhas_metaclassr$      s@   G "}}99%Aw$uzz<88Q4T22Q&4-. N- YY$,,&  "E::,!E%[D(*..D.54$~~ "$uzz<"@@#&D!cT%++t-D&D$'E!e#&D',dE4&@G!"""> N    c                       e Zd ZdZd Zy)FixMetaclassz
    classdef<any*>
    c                    t        |      }|sy |D ]  }|j                           t        t        j                  d      }t        t        j
                  dd      }}d|_        t        t        j                  |||g      }t        |       |j                  D ]  }	|	j                  t        j                  k(  s!|	j                  D ]  }
|
j                  t        j                  k(  s!|	j                  j                  |
      dz   }t        t        j                  |
j                         }|	j#                  ||       |	j#                  |t%                      |	j#                  ||          y )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idents                r#   	transformzFixMetaclass.transform5   s    $T*V  	DKKM	ejj"23U[[$t4VUD$9:	MM 	DyyDJJ& MM 
DyyELL0 #mm11$7!; $U\\4:: >))#u5))#wy9))#y9
	r%   N)__name__
__module____qualname__PATTERNr;    r%   r#   r'   r'   /   s    Gr%   r'   N)__doc__lib2to3r   lib2to3.fixer_utilr   r   r   r   r   r	   lib2to3.pygramr
   libfuturize.fixer_utilr   r   r$   BaseFixr'   r@   r%   r#   <module>rG      s4   D  I I   7!H:%% r%   