KŠMa~ ã@sodZddlmZddlmZddlmZddlmZmZm 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@s(eZdZdZdZdd„ZdS)ÚFixApplyTa. power< 'apply' trailer< '(' arglist< (not argument ')' > > c CsÐ|j}|st‚|d}|d}|jdƒ}|r†|j|jjkrWdS|j|jjkr†|jdjdkr†dS|r»|j|jjkr»|jdjdkr»dS|j}|j ƒ}|jt j |j fkr"|j|j ks|jd jt jkr"t|ƒ}d|_|j ƒ}d|_|dk ra|j ƒ}d|_tjt jdƒ|g}|dk r½|jtƒtjt jdƒ|gƒd |d _t||d |ƒS) NÚfuncÚargsÚkwdséz**rÚÚ*ú Úprefixéþÿÿÿr)ÚsymsÚAssertionErrorÚgetÚtypeZ star_exprZargumentZchildrenÚvaluerZclonerÚNAMEZatomZpowerÚ DOUBLESTARrrZLeafÚSTARÚextendrr) ÚselfZnodeZresultsrr r r rZ l_newargs©rús