B � f* �@sRdZddlmZddlmZddlmZddlmZmZm Z Gdd�dej �Z dS) zIFixer for apply(). This converts apply(func, v, k) into (func)(*v, **k).�)�pytree)�token)� fixer_base)�Call�Comma� parenthesizec@seZdZdZdZdd�ZdS)�FixApplyTa. power< 'apply' trailer< '(' arglist< (not argument ')' > > c Cs,|j}|d}|d}|�d�}|rF|j|jjkrF|jdjdkrFdS|rl|j|jjkrl|jdjdkrldS|j}|��}|jtj |j fkr�|j|j ks�|jdjtj kr�t |�}d|_|��}d|_|dk r�|��}d|_t�tjd �|g}|dk �r|�t�t�tj d�|g�d |d_t|||d �S) N�func�args�kwds�>�**�*z**������r� )�prefix)�syms�get�typeZargumentZchildren�valuerZcloner�NAMEZatomZpower� DOUBLESTARrrZLeaf�STAR�extendrr) �selfZnodeZresultsrr r r rZ l_newargs�r�s