
    dafH                     J    d Z ddlmZ ddlmZ  G d dej
                        Zy)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                       e Zd ZdZdZdZd Zy)FixIsinstanceTz
    power<
        'isinstance'
        trailer< '(' arglist< any ',' atom< '('
            args=testlist_gexp< any+ >
        ')' > > ')' >
    >
       c                    t               }|d   }|j                  }g }t        |      }|D ]  \  }}	|	j                  t        j
                  k(  rP|	j                  |v rB|t        |      dz
  k  sC||dz      j                  t        j                  k(  sgt        |       s|j                  |	       |	j                  t        j
                  k(  s|j                  |	j                          |r#|d   j                  t        j                  k(  r|d= t        |      dk(  r5|j                  }
|
j                  |d   _        |
j                  |d          y ||d d  |j                          y )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atoms              7/root/Python-3.12.4/Lib/lib2to3/fixes/fix_isinstance.py	transformzFixIsinstance.transform   s"   6?  T?  	2HCxx5::%#))~*ETQ&4a=+=+=+LN$88uzz)"&&syy1	2 ))U[[8x=A??D!%HQKLL!%DGLLN    N)__name__
__module____qualname__BM_compatiblePATTERN	run_orderr'    r(   r&   r   r      s    MG Ir(   r   N)__doc__ r   
fixer_utilr   BaseFixr   r/   r(   r&   <module>r4      s$     $J&& $r(   