B
    18™\H  ã               @   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|ƒ}xx|D ]p\}}	|	jtjkrt|	j|krt|t|ƒd k r–||d  jtjkr–t	|ƒ q&q&| 
|	¡ |	jtjkr&| |	j¡ q&W |r´|d jtjkr´|d= t|ƒdkrâ|j}
|
j|d _|
 |d ¡ n||d d …< | ¡  d S )NÚargsé   éÿÿÿÿé    )ÚsetÚchildrenÚ	enumerateÚtyper   ÚNAMEÚvalueÚlenÚCOMMAÚnextÚappendÚaddÚparentÚprefixÚreplaceÚchanged)ÚselfÚnodeÚresultsZnames_insertedÚtestlistr   Znew_argsÚiteratorÚidxÚargÚatom© r!   ú`/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/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   