U
    A`*	                     @   sR   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	 G d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   s4  | j }|st|d }|d }|d}|rN|j| j jkrN|jd jdkrNd S |rt|j| j jkrt|jd jdkrtd S |j}| }|jt	j
|jfkr|j|jks|jd jt	jkrt|}d|_| }d|_|d k	r| }d|_tt	jd	|g}|d k	r&|t tt	jd|g d
|d _t|||dS )Nfuncargskwds    >   ***r    r    )prefix)symsAssertionErrorgettypeZargumentZchildrenvaluer   Zcloner   NAMEZatomZpower
DOUBLESTARr   r   ZLeafSTARextendr   r   )	selfZnodeZresultsr   r	   r
   r   r   Z	l_newargs r   -/usr/lib/python3.8/lib2to3/fixes/fix_apply.py	transform   sH    



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
   