o
    DDi54                     @   s  d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ eddddeddddeddddeddddeddddedddddedee defddZeddedddedee defd d!Zed"d#ed$d%dedee defd&d'Z ed(d)ed*d+dedee defd,d-Z!ed.d/ed0d1dedee defd2d3Z"ed4d5ed6d5dedee defd7d8Z#d9S ):    )AnyListOptionalSequenceUnion)PartialParserSyntaxError)MaybeSentinel)
AnnotationNameParam
Parameters
ParamSlash	ParamStar)AssignEqualComma)grouper)with_production)ParserConfig)ParamStarPartial) parse_parenthesizable_whitespacetypedargslistaW  (
      (tfpdef_assign (',' tfpdef_assign)* ',' tfpdef_posind [',' [ tfpdef_assign (
            ',' tfpdef_assign)* [',' [
            tfpdef_star (',' tfpdef_assign)* [',' [tfpdef_starstar [',']]]
          | tfpdef_starstar [',']]]
      | tfpdef_star (',' tfpdef_assign)* [',' [tfpdef_starstar [',']]]
      | tfpdef_starstar [',']]] )
    |  (tfpdef_assign (',' tfpdef_assign)* [',' [
       tfpdef_star (',' tfpdef_assign)* [',' [tfpdef_starstar [',']]]
      | tfpdef_starstar [',']]]
      | tfpdef_star (',' tfpdef_assign)* [',' [tfpdef_starstar [',']]]
      | tfpdef_starstar [','])
    )z>=3.8)versionz(tfpdef_assign (',' tfpdef_assign)* [',' [tfpdef_star (',' tfpdef_assign)* [',' [tfpdef_starstar [',']]] | tfpdef_starstar [',']]]| tfpdef_star (',' tfpdef_assign)* [',' [tfpdef_starstar [',']]] | tfpdef_starstar [','])z>=3.6,<=3.7z(tfpdef_assign (',' tfpdef_assign)* [',' [tfpdef_star (',' tfpdef_assign)* [',' tfpdef_starstar] | tfpdef_starstar]]| tfpdef_star (',' tfpdef_assign)* [',' tfpdef_starstar] | tfpdef_starstar)z<=3.5varargslistaE  vfpdef_assign (',' vfpdef_assign)* ',' vfpdef_posind [',' [ (vfpdef_assign (',' vfpdef_assign)* [',' [
            vfpdef_star (',' vfpdef_assign)* [',' [vfpdef_starstar [',']]]
          | vfpdef_starstar [',']]]
      | vfpdef_star (',' vfpdef_assign)* [',' [vfpdef_starstar [',']]]
      | vfpdef_starstar [',']) ]] | (vfpdef_assign (',' vfpdef_assign)* [',' [
            vfpdef_star (',' vfpdef_assign)* [',' [vfpdef_starstar [',']]]
          | vfpdef_starstar [',']]]
      | vfpdef_star (',' vfpdef_assign)* [',' [vfpdef_starstar [',']]]
      | vfpdef_starstar [',']
    )z(vfpdef_assign (',' vfpdef_assign)* [',' [vfpdef_star (',' vfpdef_assign)* [',' [vfpdef_starstar [',']]] | vfpdef_starstar [',']]]| vfpdef_star (',' vfpdef_assign)* [',' [vfpdef_starstar [',']]] | vfpdef_starstar [','])z(vfpdef_assign (',' vfpdef_assign)* [',' [vfpdef_star (',' vfpdef_assign)* [',' vfpdef_starstar] | vfpdef_starstar]]| vfpdef_star (',' vfpdef_assign)* [',' vfpdef_starstar] | vfpdef_starstar)configchildrenreturnc                    s$  g t jg dt jg  d dttt  dtttf dttt  f fdd}}t|dD ]<\}}|d u rMt|t	rGt
d|||}q6tt| |jt| |jd	}t|t	ri||t|d
}q6|||j|d
}q6ttrt dkrt
dtttt dS )NFcurrent_paramparamr   c                    s  t |tr| u r| } | S tdt |tr0| u r,tdkr,|g } | S tdt |jtr\|jdkr\|jd u r\| u rMsM| | S |  u rX | | S t	dt |jtr|jdkr|jd ur| u ryd| | S |  u r | | S tdt |jtr|jdkr|jd u r| u r| } | S td	t |jtr|jd
kr|jd u r| d ur|d } | S tdtd)NzBCannot have multiple star ('*') markers in a single argument list.r   zCCannot have multiple slash ('/') markers in a single argument list. z@Cannot have a non-default argument following a default argument.Tz3Cannot have any arguments after a kwargs expansion.*zNExpected a keyword argument but found a starred positional argument expansion.z**zVMultiple starred keyword argument expansions are not allowed in a single argument listzLogic error!)

isinstancer   	Exceptionr   lenstarstrdefaultappendr   )r   r   kwonly_paramsparamsposonly_indposonly_paramsseen_defaultstar_arg
star_kwarg Z/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_parser/conversions/params.py	add_parami   sz   

Y
J 
>
<



,
*

z#convert_argslist.<locals>.add_param   z/Named (keyword) arguments must follow a bare *.whitespace_beforewhitespace_after)commar   )r+   r*   r)   r-   r(   r.   )r   DEFAULTr   r   r   r   r   r   r    r   r   r   r   r4   r5   with_changesr"   r   tuple)r   r   r1   current	parameterr6   r/   r'   r0   convert_argslist   sZ   F


j
	
	r<   tfpdef_starz'*' [tfpdef]vfpdef_starz'*' [vfpdef]c                 C   s8   t |dkr|\}t S |\}}|j|jt| |jdS )N   r#   whitespace_after_star)r"   r   r8   stringr   r5   )r   r   r#   r   r/   r/   r0   convert_fpdef_star  s   rC   tfpdef_starstarz'**' tfpdefvfpdef_starstarz'**' vfpdefc                 C   s    |\}}|j |jt| |jdS )Nr@   )r8   rB   r   r5   )r   r   starstarr   r/   r/   r0   convert_fpdef_starstar  s   rG   tfpdef_assignztfpdef ['=' test]vfpdef_assignzvfpdef ['=' test]c                 C   sH   t |dkr|\}|S |\}}}|jtt| |jt| |jd|jdS )Nr?   r3   )equalr%   )r"   r8   r   r   r4   r5   value)r   r   childr   rJ   r%   r/   r/   r0   convert_fpdef_assign(  s   
rM   tfpdefzNAME [':' test]vfpdefNAMEc                 C   sf   t |dkr|\}t|j}d }n|\}}}t|j}tt| |jt| |j|jd}td||d dS )Nr?   )whitespace_before_indicatorwhitespace_after_indicator
annotationr   )r#   namerS   r%   )	r"   r
   rB   r	   r   r4   r5   rK   r   )r   r   rL   namenoderS   rT   colontypehintr/   r/   r0   convert_fpdef=  s    



rX   tfpdef_posindz'/'vfpdef_posindc                 C   s   t  S )N)r   )r   r   r/   r/   r0   convert_fpdef_slashV  s   r[   N)$typingr   r   r   r   r   libcst._exceptionsr   libcst._maybe_sentinelr   libcst._nodes.expressionr	   r
   r   r   r   r   libcst._nodes.opr   r   libcst._parser.custom_itertoolsr   #libcst._parser.production_decoratorr   libcst._parser.types.configr   libcst._parser.types.partialsr    libcst._parser.whitespace_parserr   r<   rC   rG   rM   rX   r[   r/   r/   r/   r0   <module>   s~    		
		 /
"