î
\á[\H  ã               @   sC   d  Z  d d l m Z d d l m Z Gd 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 | ƒ } xª | D]¢ \ } }	 |	 j t j k r¥ |	 j | k r¥ | t | ƒ d k  r× | | d j t j k r× t	 | ƒ q5 q× q5 | j
 |	 ƒ |	 j t j k r5 | j |	 j ƒ q5 q5 W| r| d j t j k r| d =n  t | ƒ d k r@| j }
 |
 j | d _ |
 j | d ƒ n | | d  d  … <| j ƒ  d  S)NÚargsé   é    éÿÿÿÿr	   )ÚsetZchildrenÚ	enumerateÚtyper   ÚNAMEÚvalueÚlenÚCOMMAÚnextÚappendÚaddÚparentÚprefixÚreplaceZchanged)ÚselfZnodeZresultsZnames_insertedZtestlistr   Znew_argsÚiteratorÚidxÚargZatom© r   ú2/usr/lib/python3.4/lib2to3/fixes/fix_isinstance.pyÚ	transform   s*    	
	!0
	
	zFixIsinstance.transformN)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNZ	run_orderr   r   r   r   r   r      s   r   N)Ú__doc__Ú r   Z
fixer_utilr   ZBaseFixr   r   r   r   r   Ú<module>
   s   