ó
è¾bc           @   sC   d  Z  d d l m Z d d l m Z d e j f d „  ƒ  YZ d S(   s,  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)
i   (   t
   fixer_base(   t   tokent   FixIsinstancec           B   s#   e  Z e Z d  Z d Z d „  Z RS(   s˜   
    power<
        'isinstance'
        trailer< '(' arglist< any ',' atom< '('
            args=testlist_gexp< any+ >
        ')' > > ')' >
    >
    i   c         C   sU  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× | j	 ƒ  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 | | (| j ƒ  d  S(   Nt   argsi   iÿÿÿÿi    (   t   sett   childrent	   enumeratet   typeR   t   NAMEt   valuet   lent   COMMAt   nextt   appendt   addt   parentt   prefixt   replacet   changed(   t   selft   nodet   resultst   names_insertedt   testlistR   t   new_argst   iteratort   idxt   argt   atom(    (    s2   /usr/lib/python2.7/lib2to3/fixes/fix_isinstance.pyt	   transform   s*    	
	!0
	
	(   t   __name__t
   __module__t   Truet   BM_compatiblet   PATTERNt	   run_orderR   (    (    (    s2   /usr/lib/python2.7/lib2to3/fixes/fix_isinstance.pyR      s   N(   t   __doc__t    R    t
   fixer_utilR   t   BaseFixR   (    (    (    s2   /usr/lib/python2.7/lib2to3/fixes/fix_isinstance.pyt   <module>
   s   