o
    bcH                     @   s2   d Z ddlmZ ddlmZ G dd dejZdS )a,  Fixer that cleans up a tuple argument to isinstance after the tokens
in it were fixed.  This is mainly used to remove double occurrences of
tokens as a leftover of the long -> int / unicode -> str conversion.

eg.  isinstance(x, (int, long)) -> isinstance(x, (int, int))
       -> isinstance(x, int)
   )
fixer_base)tokenc                   @   s    e Zd ZdZdZdZdd ZdS )FixIsinstanceTz
    power<
        'isinstance'
        trailer< '(' arglist< any ',' atom< '('
            args=testlist_gexp< any+ >
        ')' > > ')' >
    >
       c                 C   s   t  }|d }|j}g }t|}|D ]8\}}	|	jtjkr9|	j|v r9|t|d k r8||d  jtjkr8t	| qq|
|	 |	jtjkrJ||	j q|rX|d jtjkrX|d= t|dkrp|j}
|
j|d _|
|d  d S ||d d < |  d S )Nargs       )setchildren	enumeratetyper   NAMEvaluelenCOMMAnextappendaddparentprefixreplacechanged)selfnoderesultsnames_insertedtestlistr   new_argsiteratoridxargatom r#   3/usr/lib/python3.10/lib2to3/fixes/fix_isinstance.py	transform   s.   $
zFixIsinstance.transformN)__name__
__module____qualname__BM_compatiblePATTERN	run_orderr%   r#   r#   r#   r$   r      s
    	r   N)__doc__ r   
fixer_utilr   BaseFixr   r#   r#   r#   r$   <module>   s   