î
\á[\m  ã               @   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	 Gd d „  d e j
 ƒ Z d S)	zIFixer for apply().

This converts apply(func, v, k) into (func)(*v, **k).é   )Úpytree)Útoken)Ú
fixer_base)ÚCallÚCommaÚparenthesizec               @   s(   e  Z d  Z d Z d Z d d „  Z d S)ÚFixApplyTa.  
    power< 'apply'
        trailer<
            '('
            arglist<
                (not argument<NAME '=' any>) func=any ','
                (not argument<NAME '=' any>) args=any [','
                (not argument<NAME '=' any>) kwds=any] [',']
            >
            ')'
        >
    >
    c       	      C   sV  |  j  } | s t ‚ | d } | d } | j d ƒ } | 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	 rä | j ƒ  } d | _ n  t j t j d ƒ | g } | d  k	 rC| j t ƒ  t j t j d ƒ | g ƒ d | d _ n  t | | d	 | ƒS)NÚfuncÚargsÚkwdsr   Ú Ú*z**ú Úprefixéþÿÿÿr   )ÚsymsÚAssertionErrorÚgetr   ZcloneÚtyper   ÚNAMEZatomZpowerZchildrenÚ
DOUBLESTARr   r   ZLeafÚSTARÚextendr   r   )	ÚselfZnodeZresultsr   r	   r
   r   r   Z	l_newargs© r   ú-/usr/lib/python3.4/lib2to3/fixes/fix_apply.pyÚ	transform   s0    	

			
zFixApply.transformN)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNr   r   r   r   r   r      s   r   N)Ú__doc__r   r   Zpgen2r   r   Z
fixer_utilr   r   r   ZBaseFixr   r   r   r   r   Ú<module>   s
   