o
    g¹«j_1  ã                   @  sŒ  d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddl
mZmZmZ G dd	„ d	ƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZed Ze	eef Zeeeef Ze	eed f Zee	deef  ZG dd„ deƒZdEdd„ZdFdd„ZdGdd „ZdHd$d%„ZdId'd(„ZdId)d*„ZdJd+d,„Z dJd-d.„Z!dKd/d0„Z"dLd1d2„Z#dLd3d4„Z$dMd5d6„Z%dNd8d9„Z&dOd;d<„Z'dPd>d?„Z(dQdAdB„Z)dRdCdD„Z*dS )Sz˜Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
é    )ÚannotationsN)ÚSequence)ÚLiteralÚ
NamedTupleÚUnioné   )ÚDEFAULT_RULESÚParserSyntaxErrorÚ	Tokenizerc                   @  sV   e Zd ZdZddd„Zddd	„Zdd
d„Zddd„Zddd„Zddd„Z	ddd„Z
dS )ÚNode©Úvaluer   ÚstrÚreturnÚNonec                 C  s
   || _ d S ©Nr   ©Úselfr   © r   úQ/var/www/html/laksyashrimp/venv/lib/python3.10/site-packages/packaging/_parser.pyÚ__init__   s   
zNode.__init__c                 C  ó   | j S r   r   ©r   r   r   r   Ú__str__   s   zNode.__str__c                 C  s   d| j j› d| j›d�S )Nú<ú(z)>)Ú	__class__Ú__name__r   r   r   r   r   Ú__repr__   s   zNode.__repr__c                 C  s   t ‚r   )ÚNotImplementedErrorr   r   r   r   Ú	serialize   s   zNode.serializec                 C  r   r   r   r   r   r   r   Ú__getstate__   s   zNode.__getstate__Úobjectc                 C  s,   t |tƒstd| jj› d|›�ƒ‚|| _d S )NúCannot restore z value from )Ú
isinstancer   Ú	TypeErrorr   r   r   r   r   r   r   Ú_restore_value#   s
   
ÿ
zNode._restore_valueÚstatec                 C  s–   t |tƒr|  |¡ d S t |tƒr-t|ƒdkr-|\}}t |tƒr-d|v r-|  |d ¡ d S t |tƒr?d|v r?|  |d ¡ d S td| jj› d|›�ƒ‚)Né   r   r#   z from )	r$   r   r&   ÚtupleÚlenÚdictr%   r   r   )r   r'   Ú_Ú	slot_dictr   r   r   Ú__setstate__*   s   

zNode.__setstate__N)r   r   r   r   ©r   r   )r   r"   r   r   )r'   r"   r   r   )r   Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r    r!   r&   r.   r   r   r   r   r      s    





r   c                   @  ó   e Zd ZdZddd„ZdS )ÚVariabler   r   r   c                 C  ó   t | ƒS r   ©r   r   r   r   r   r    ?   ó   zVariable.serializeNr/   ©r   r0   r1   r2   r    r   r   r   r   r4   <   ó    r4   c                   @  r3   )ÚValuer   r   r   c                 C  s8   t | ƒ}d|vrd|› d�S d|vrd|› d�S tdƒ‚)Nú"ú'z>Cannot serialize marker value containing both quote characters)r   Ú
ValueErrorr   r   r   r   r    F   s   ÿzValue.serializeNr/   r8   r   r   r   r   r:   C   r9   r:   c                   @  r3   )ÚOpr   r   r   c                 C  r5   r   r6   r   r   r   r   r    T   r7   zOp.serializeNr/   r8   r   r   r   r   r>   Q   r9   r>   )ÚandÚorÚ
MarkerAtomÚ
MarkerListc                   @  s6   e Zd ZU ded< ded< ded< ded< ded< d	S )
ÚParsedRequirementr   ÚnameÚurlú	list[str]ÚextrasÚ	specifierzMarkerList | NoneÚmarkerN)r   r0   r1   Ú__annotations__r   r   r   r   rC   _   s   
 rC   Úsourcer   r   c                 C  ó   t t| td�ƒS ©N)Úrules)Ú_parse_requirementr
   r   ©rK   r   r   r   Úparse_requirementj   ó   rQ   Ú	tokenizerr
   c                 C  sf   |   d¡ | jddd�}|j}|   d¡ t| ƒ}|   d¡ t| ƒ\}}}| jddd� t|||||ƒS )zI
    requirement = WS? IDENTIFIER WS? extras WS? requirement_details
    ÚWSÚ
IDENTIFIERz1package name at the start of dependency specifier©ÚexpectedÚENDzend of dependency specifier)ÚconsumeÚexpectÚtextÚ_parse_extrasÚ_parse_requirement_detailsrC   )rS   Ú
name_tokenrD   rG   rE   rH   rI   r   r   r   rO   n   s   
ÿ

rO   ú"tuple[str, str, MarkerList | None]c                 C  sÜ   d}d}d}|   d¡rF|  ¡  |  d¡ | j}| jddd�j}| j dd	d
�r+|||fS | jddd� | j dd	d
�r>|||fS t| |dd�}n#| j}t| ƒ}|  d¡ | j dd	d
�r^|||fS t| ||redndd�}|||fS )z~
    requirement_details = AT URL (WS requirement_marker?)?
                        | specifier WS? (requirement_marker)?
    Ú NÚATrT   ÚURLzURL after @rV   rX   T©Úpeekzwhitespace after URLz$semicolon (after URL and whitespace))Ú
span_startrW   zEcomma (within version specifier), semicolon (after version specifier)z0semicolon (after name with no version specifier))ÚcheckÚreadrY   ÚpositionrZ   r[   Ú_parse_requirement_markerÚ_parse_specifier)rS   rH   rE   rI   Ú	url_startÚspecifier_startr   r   r   r]   ƒ   s>   



ý

ÿú

r]   re   ÚintrW   c                C  s@   |   d¡s| jd|› d�|dd� |  ¡  t| ƒ}|  d¡ |S )z3
    requirement_marker = SEMICOLON marker WS?
    Ú	SEMICOLONz	Expected z or endN©re   Úspan_endrT   )rf   Úraise_syntax_errorrg   Ú_parse_markerrY   )rS   re   rW   rI   r   r   r   ri   ¸   s   

ý
ri   rF   c                 C  sd   | j ddd�s	g S | jdddd�� |  d¡ t| ƒ}|  d¡ W d  ƒ |S 1 s+w   Y  |S )	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    ÚLEFT_BRACKETTrc   ÚRIGHT_BRACKETrG   ©ÚaroundrT   N)rf   Úenclosing_tokensrY   Ú_parse_extras_list)rS   rG   r   r   r   r\   Í   s   ý

ù	÷	r\   c                 C  s†   g }|   d¡s	|S | |  ¡ j¡ 	 |  d¡ | j ddd�r$|  d¡ n|   d¡s,	 |S |  ¡  |  d¡ | jddd�}| |j¡ q)	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    rU   TrT   rc   z"Expected comma between extra namesÚCOMMAzextra name after commarV   )rf   Úappendrg   r[   rY   rq   rZ   )rS   rG   Úextra_tokenr   r   r   rx   à   s    


ú
õrx   c                 C  sR   | j dddd�� |  d¡ t| ƒ}|  d¡ W d  ƒ |S 1 s"w   Y  |S )zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    ÚLEFT_PARENTHESISÚRIGHT_PARENTHESISzversion specifierru   rT   N)rw   rY   Ú_parse_version_many)rS   Úparsed_specifiersr   r   r   rj   û   s   ý

ù	÷	rj   c                 C  sÐ   d}|   d¡rf| j}|  ¡ j}||7 }| j ddd�r8d}| d¡s+| d¡r-| d	¡s-d
}| j||| jd d� | j ddd�rH| jd|| jd� |  d¡ |   d¡sU	 |S ||  ¡ j7 }|  d¡ |   d¡s|S )z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    r`   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrc   z6.* suffix can only be used with `==` or `!=` operatorsz!=z==z===zN.* suffix cannot be used with pre-release, post-release, dev or local versionsr   ro   ÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrT   ry   )rf   rh   rg   r[   Ú
startswithrq   rY   )rS   r   re   rH   Úmessager   r   r   r~     sB   


ÿÿÿýý

ý

är~   c                 C  rL   rM   )Ú_parse_full_markerr
   r   rP   r   r   r   Úparse_marker5  rR   r†   c                 C  s   t | ƒ}| jddd� |S )NrX   zend of marker expressionrV   )rr   rZ   )rS   Úretvalr   r   r   r…   9  s   r…   c                 C  sB   t | ƒg}|  d¡r|  ¡ }t | ƒ}| |j|f¡ |  d¡s
|S )z4
    marker = marker_atom (BOOLOP marker_atom)+
    ÚBOOLOP)Ú_parse_marker_atomrf   rg   Úextendr[   )rS   Ú
expressionÚtokenÚ
expr_rightr   r   r   rr   ?  s   


ýrr   c                 C  s|   |   d¡ | jddd�r3| jdddd�� |   d¡ t| ƒ}|   d¡ W d  ƒ n1 s-w   Y  nt| ƒ}|   d¡ |S )	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    rT   r|   Trc   r}   zmarker expressionru   N)rY   rf   rw   rr   Ú_parse_marker_item)rS   rI   r   r   r   r‰   K  s   
ý
ù€	
r‰   Ú
MarkerItemc                 C  sJ   |   d¡ t| ƒ}|   d¡ t| ƒ}|   d¡ t| ƒ}|   d¡ |||fS )zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rT   )rY   Ú_parse_marker_varÚ_parse_marker_op)rS   Úmarker_var_leftÚ	marker_opÚmarker_var_rightr   r   r   rŽ   a  s   




rŽ   Ú	MarkerVarc              
   C  s�   |   d¡rt|  ¡ j dd¡ƒS |   d¡r@|  ¡ }zt|jƒW S  ttfy? } ztd| j	|j
|j
t|jƒ fd�|‚d}~ww | jdd	� dS )
z/
    marker_var = VARIABLE | QUOTED_STRING
    ÚVARIABLEÚ.r,   ÚQUOTED_STRINGzInvalid quoted string)rK   ÚspanNz+Expected a marker variable or quoted string)r„   )rf   Úprocess_env_varrg   r[   ÚreplaceÚprocess_python_strÚSyntaxErrorr=   r	   rK   rh   r*   rq   )rS   rŒ   Úexcr   r   r   r�   o  s&   

ýü€ÿ
ÿr�   Úenv_varc                 C  s   | dv rt dƒS t | ƒS )N)Úplatform_python_implementationÚpython_implementationr    )r4   )rŸ   r   r   r   rš   …  s   rš   Ú
python_strc                 C  s   t  | ¡}tt|ƒƒS r   )ÚastÚliteral_evalr:   r   )r¢   r   r   r   r   rœ   Œ  s   
rœ   c                 C  sr   |   d¡r|  ¡  tdƒS |   d¡r(|  ¡  | jddd� | jddd� tdƒS |   d	¡r4t|  ¡ jƒS |  d
¡S )z&
    marker_op = IN | NOT IN | OP
    ÚINÚinÚNOTrT   zwhitespace after 'not'rV   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rf   rg   r>   rZ   r[   rq   )rS   r   r   r   r‘   ‘  s   


ÿr‘   )rK   r   r   rC   )rS   r
   r   rC   )rS   r
   r   r_   )rS   r
   re   rm   rW   r   r   rB   )rS   r
   r   rF   )rS   r
   r   r   )rK   r   r   rB   )rS   r
   r   rB   )rS   r
   r   rA   )rS   r
   r   r�   )rS   r
   r   r•   )rŸ   r   r   r4   )r¢   r   r   r:   )rS   r
   r   r>   )+Ú__doc__Ú
__future__r   r£   Úcollections.abcr   Útypingr   r   r   Ú
_tokenizerr   r	   r
   r   r4   r:   r>   ÚMarkerLogicalr•   r)   r�   rA   ÚlistrB   rC   rQ   rO   r]   ri   r\   rx   rj   r~   r†   r…   rr   r‰   rŽ   r�   rš   rœ   r‘   r   r   r   r   Ú<module>   sB    ,



5




)






