
    Fwgg                         d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
mZmZ dZdZdZdZd	 Zefd
ZefdZ G d dej(                        Zy)zg
Fixer for Python 3 function parameter syntax
This fixer is rather sensitive to incorrect py3k syntax.
    )
fixer_base)tokenStringNewlineCommaName)indentationsuitify
DoubleStarz=%(name)s = %(kwargs)s['%(name)s']; del %(kwargs)s['%(name)s']z'if '%(name)s' in %(kwargs)s: %(assign)szelse: %(name)s = %(default)s_3to2kwargsc              #     K   | d   j                   t        j                  k(  rt        |       dkD  sJ d}t        |       }||k  r| |   }|j                  }|j                   t        j
                  k7  r|dz  }9||j                   t        j                  k(  ry|j                  }|j                  }|/|j                   t        j                  k(  r|j                  }|dz  }nd}||f |dz  }||k  ryyw)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'))
    r         N)
typer   STARlenprev_siblingNAME
DOUBLESTARvaluenext_siblingEQUAL)
raw_paramscurr_idxmax_idx	curr_item	prev_itemnamenxtdefault_values           U/var/www/horilla/myenv/lib/python3.12/site-packages/libpasteurize/fixes/fix_kwargs.py
gen_paramsr"      s     
 a=+J!0CCCH*oG
W
x(	**	>>UZZ'MH Y^^u7G7G%G$$?sxx5;;6,,MMH M]##A! W
s   C2C75C7c                 V   | d   j                   t        j                  k(  sJ | d   j                   t        j                  k(  r,| d   j	                          | d   j	                          | dd }n| dd }|D ]1  }|j                   t        j
                  k7  r|j	                          1 y y)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)
    r   r   r   N   FT)r   r   r   COMMAremover   )r   kwargs_default	kw_paramsparams       r!   remove_paramsr*   +   s     a=+++!}U[[(11qrN	qrN	 ::)))LLN	     c                 P   d}d}| dd D ]  }|j                   t        j                  k(  r!|j                   t        j                  k(  r|sd}C|j                   t        j                  k(  r|r|r|j                  c S dc S |j                   t        j
                  k(  sd} |r|S dS )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   r   r%   r   r   r   )r   r'   found_kwargs	needs_fixts        r!   needs_fixingr1   A   s    
 LI^ 466U[[ VVuzz!,IVVuzz!l'1770S0VVu'''L4 "+~33r+   c                       e Zd ZdZdZd Zy)	FixKwargs   z^funcdef< 'def' NAME parameters< '(' arglist=typedargslist< params=any* > ')' > ':' suite=any >c                 F   |d   }t        |      D ])  \  }}|j                  t        j                  k(  s$||d  } n y t	        |      }|sy t        |       |j                  d   }|j                  d   }t        |      }	t        |      D ]  \  }
}|B|j                  dt                      |j                  dt        t        |
|dz  |	             J|j                  dt                      |j                  dt        t        |
|dz  |	             |j                  dt                      |j                  dt        t        t        |
|dz  |
|dz  |	              |	|_        d|j                  d   _        t!        |      }|r|d	   }t#        |j                        d
kD  rC|j                  d   j                  t        j$                  k7  r|j'                  t)                      |j'                  t+        d             |j'                  t-        |             y y )Nparams   r   )r   kwargs)prefix)r   default)assignr   r8   r-   arglistr    )	enumerater   r   r   r1   r
   childrenr	   r"   insert_childr   r   _assign_template_else_template_if_templater9   r*   r   r%   append_childr   r   r   )selfnoderesultsparams_rawlistiitem
new_kwargssuite
first_stmtidentr   r    must_add_kwargsr<   s                 r!   	transformzFixKwargs.transform`   s    + 0 	GAtyyEJJ&!/!3	
  ".1
 a ^^A&
J'#-n#= 	rD-$""1gi0""1f-=Xb?c-clq&rs""1gi0""1f^dWd=e-ens&tu""1gi0""1f\FVaeq{X|F|  GK  Wa  <b  .b  kp  'q  r	r "
#&q  (7j)G7##$q(W-=-=b-A-F-F%++-U$$UW-  4!89  j!12 r+   N)__name__
__module____qualname__	run_orderPATTERNrQ    r+   r!   r3   r3   Z   s    IoG33r+   r3   N)__doc__lib2to3r   lib2to3.fixer_utilr   r   r   r   r   libfuturize.fixer_utilr	   r
   r   rB   rD   rC   _kwargs_default_namer"   r*   r1   BaseFixr3   rW   r+   r!   <module>r^      s^     B B C CS 90% 4 .B , -A 4293
"" 93r+   