a 97ag@sdZddlmZddlmZmZmZmZmZddl m Z m Z m Z dZ dZdZdZd d Zefd d Zefd dZGdddejZdS)zg Fixer for Python 3 function parameter syntax This fixer is rather sensitive to incorrect py3k syntax. ) fixer_base)tokenStringNewlineCommaName) indentationsuitify DoubleStarz=%(name)s = %(kwargs)s['%(name)s']; del %(kwargs)s['%(name)s']z'if '%(name)s' in %(kwargs)s: %(assign)szelse: %(name)s = %(default)sZ _3to2kwargsccs|djtjkrt|dks Jd}t|}||kr||}|j}|jtjkrX|d7}q,|durn|jtjkrnq|j}|j}|dur|jtj kr|j}|d7}nd}||fV|d7}q,dS)z Generator that yields tuples of (name, default_value) for each parameter in the list If no default is given, then it is default_value is None (not Leaf(token.NAME, 'None')) rN) typerSTARlenZ prev_siblingNAME DOUBLESTARvalueZ next_siblingEQUAL) raw_paramsZcurr_idxZmax_idxZ curr_itemZ prev_itemnameZnxt default_valuery/private/var/folders/s6/9n5zrl012gv99k63s4q6ccsd4s6mqz/T/pip-target-f5cq3f2q/lib/python/libpasteurize/fixes/fix_kwargs.py gen_paramss&    rcCs|djtjksJ|djtjkrJ|d|d|dd}n |dd}|D] }|jtjkrt|qZdSqZdS)z Removes all keyword-only args from the params list and a bare star, if any. Does not add the kwargs dict if needed. Returns True if more action is needed, False if not (more action is needed if no kwargs dict exists) rr r NFT)r rrCOMMAremover)rkwargs_defaultZ kw_paramsparamrrr remove_params+s     rcCs~d}d}|ddD]\}|jtjkr(qq|jtjkr>|s>d}q|jtjkr`|r`|rX|jndS|jtjkrd}q|rz|SdS)z Returns string with the name of the kwargs dict if the params after the first star need fixing Otherwise returns empty string Fr NT)r rrrrr)rrZ found_kwargsZ needs_fixtrrr needs_fixingAs  r"c@seZdZdZdZddZdS) FixKwargsz^funcdef< 'def' NAME parameters< '(' arglist=typedargslist< params=any* > ')' > ':' suite=any >c Cs|d}t|D]$\}}|jtjkr||d}q:qdSt|}|sJdSt||jd}|jd}t|} t|D]\} } | dur| dt | dt t | |d| dqv| dt | dt t | | d| d| dt | dt tt | |d| |d| dqv| |_d|jd_t|} | r|d } t| jd krr| jd jtjkrr| t| td d| t|dS) Nparamsr )rkwargs)prefix)rdefault)Zassignrr'r arglistr ) enumerater rrr"r childrenrrZ insert_childrr_assign_template_else_template _if_templater(rrrZ append_childrr r)selfnoderesultsZparams_rawlistiitemZ new_kwargsZsuiteZ first_stmtidentrrZmust_add_kwargsr*rrr transform`s<     , $ zFixKwargs.transformN)__name__ __module__ __qualname__Z run_orderZPATTERNr8rrrrr#Zsr#N)__doc__Zlib2to3rZlib2to3.fixer_utilrrrrrZlibfuturize.fixer_utilrr r r/r1r0Z_kwargs_default_namerrr"ZBaseFixr#rrrrs