ó
è¾bc           @   so   d  Z  d d l m Z d d l m Z d d l m Z d d l m Z m Z m	 Z	 d e j
 f d „  ƒ  YZ d S(	   sI   Fixer for apply().

This converts apply(func, v, k) into (func)(*v, **k).i   (   t   pytree(   t   token(   t
   fixer_base(   t   Callt   Commat   parenthesizet   FixApplyc           B   s   e  Z e Z d  Z d „  Z RS(   s.  
    power< 'apply'
        trailer<
            '('
            arglist<
                (not argument<NAME '=' any>) func=any ','
                (not argument<NAME '=' any>) args=any [','
                (not argument<NAME '=' any>) kwds=any] [',']
            >
            ')'
        >
    >
    c   	      C   sÜ  |  j  } | s t ‚ | d } | d } | j d ƒ } | r‰ | j |  j  j k rW d  S| j |  j  j k r‰ | j d j d k r‰ d  Sn  | r¾ | j |  j  j k r¾ | j d j d k r¾ d  S| j } | j	 ƒ  } | j t
 j | j f k r(| j | j k s| j d j t
 j k r(t | ƒ } n  d | _ | j	 ƒ  } d | _ | d  k	 rj| j	 ƒ  } d | _ n  t j t
 j d ƒ | g } | d  k	 rÉ| j t ƒ  t j t
 j d	 ƒ | g ƒ d
 | d _ n  t | | d | ƒS(   Nt   funct   argst   kwdsi    s   **iþÿÿÿt    u   *u   **u    t   prefix(   t   symst   AssertionErrort   gett   typet	   star_exprt   argumentt   childrent   valueR   t   cloneR   t   NAMEt   atomt   powert
   DOUBLESTARR   t   NoneR    t   Leaft   STARt   extendR   R   (	   t   selft   nodet   resultsR   R   R   R	   R   t	   l_newargs(    (    s-   /usr/lib/python2.7/lib2to3/fixes/fix_apply.pyt	   transform   sB    	

			
(   t   __name__t
   __module__t   Truet   BM_compatiblet   PATTERNR!   (    (    (    s-   /usr/lib/python2.7/lib2to3/fixes/fix_apply.pyR      s   N(   t   __doc__R
   R    t   pgen2R   R   t
   fixer_utilR   R   R   t   BaseFixR   (    (    (    s-   /usr/lib/python2.7/lib2to3/fixes/fix_apply.pyt   <module>   s
   