HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/.local/lib/python3.10/site-packages/packaging/__pycache__/_parser.cpython-310.pyc
o

���g�'�@sxdZddlmZddlZddlmZmZmZmZddl	m
Z
mZGdd�d�ZGd	d
�d
e�Z
Gdd�de�ZGd
d�de�Zee
efZeeeefZeeedfZeedeefZGdd�de�ZdCdd�ZdDdd�ZdEdd�ZdFd"d#�ZdGd%d&�ZdGd'd(�ZdHd)d*�ZdHd+d,�ZdId-d.�ZdJd/d0�ZdJd1d2�Z dKd3d4�Z!dLd6d7�Z"dMd9d:�Z#dNd<d=�Z$dOd?d@�Z%dPdAdB�Z&dS)Qz�Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
�)�annotationsN)�
NamedTuple�Sequence�Tuple�Union�)�
DEFAULT_RULES�	Tokenizerc@s4eZdZddd�Zddd�Zdd	d
�Zddd�Zd
S)�Node�value�str�return�NonecCs
||_dS�N�r)�selfr�r�D/home/arjun/.local/lib/python3.10/site-packages/packaging/_parser.py�__init__s
z
Node.__init__cCs|jSrr�rrrr�__str__szNode.__str__cCsd|jj�d|�d�S)N�<z('z')>)�	__class__�__name__rrrr�__repr__sz
Node.__repr__cCst�r)�NotImplementedErrorrrrr�	serializeszNode.serializeN)rrr
r�r
r)r�
__module__�__qualname__rrrrrrrrr
s



r
c@�eZdZddd�ZdS)�Variabler
rcC�t|�Sr�rrrrrr�zVariable.serializeNr�rrrrrrrrr!�r!c@r )�Valuer
rcCsd|�d�S)N�"rrrrrr#szValue.serializeNrr%rrrrr'"r&r'c@r )�Opr
rcCr"rr#rrrrr(r$zOp.serializeNrr%rrrrr)'r&r)�
MarkerAtom�
MarkerListc@s6eZdZUded<ded<ded<ded<ded<d	S)
�ParsedRequirementr�name�url�	list[str]�extras�	specifierzMarkerList | None�markerN)rrr�__annotations__rrrrr,2s
r,�sourcerr
cC�tt|td��S�N)�rules)�_parse_requirementr	r�r4rrr�parse_requirement=�r:�	tokenizerr	cCsf|�d�|jddd�}|j}|�d�t|�}|�d�t|�\}}}|jddd�t|||||�S)zI
    requirement = WS? IDENTIFIER WS? extras WS? requirement_details
    �WS�
IDENTIFIERz1package name at the start of dependency specifier��expected�ENDzend of dependency specifier)�consume�expect�text�
_parse_extras�_parse_requirement_detailsr,)r<�
name_tokenr-r0r.r1r2rrrr8As
�

r8�"tuple[str, str, MarkerList | None]cCs�d}d}d}|�d�rF|��|�d�|j}|jddd�j}|jdd	d
�r+|||fS|jddd�|jdd	d
�r>|||fSt||dd
�}n#|j}t|�}|�d�|jdd	d
�r^|||fSt|||redndd
�}|||fS)z~
    requirement_details = AT URL (WS requirement_marker?)?
                        | specifier WS? (requirement_marker)?
    �N�ATr=�URLzURL after @r?rAT��peekzwhitespace after URLzURL and whitespace)�
span_start�after�version specifierz#name and no valid version specifier)�check�readrB�positionrCrD�_parse_requirement_marker�_parse_specifier)r<r1r.r2�	url_start�specifier_startrrrrFVs:



�

��

rFrN�intrOcCs>|�d�s|jd|�d�|d�|��t|�}|�d�|S)z3
    requirement_marker = SEMICOLON marker WS?
    �	SEMICOLONz!Expected end or semicolon (after �))rNr=)rQ�raise_syntax_errorrR�
_parse_markerrB)r<rNrOr2rrrrT�s

�
rTr/cCsd|jddd�s	gS|jdddd��|�d�t|�}|�d�Wd�|S1s+wY|S)	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    �LEFT_BRACKETTrL�
RIGHT_BRACKETr0��aroundr=N)rQ�enclosing_tokensrB�_parse_extras_list)r<r0rrrrE�s�

�	�	rEcCs�g}|�d�s	|S|�|��j�	|�d�|jddd�r$|�d�n|�d�s,	|S|��|�d�|jddd�}|�|j�q)	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    r>Tr=rLz"Expected comma between extra names�COMMAzextra name after commar?)rQ�appendrRrDrBr[rC)r<r0�extra_tokenrrrrb�s 


�
�rbcCsR|jdddd��|�d�t|�}|�d�Wd�|S1s"wY|S)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    �LEFT_PARENTHESIS�RIGHT_PARENTHESISrPr_r=N)rarB�_parse_version_many)r<�parsed_specifiersrrrrU�s�

�	�	rUcCs�d}|�d�rQ|j}||��j7}|jddd�r#|jd||jdd�|jd	dd�r3|jd
||jd�|�d�|�d�s@	|S||��j7}|�d�|�d�s|S)
z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    rI�	SPECIFIER�VERSION_PREFIX_TRAILTrLz6.* suffix can only be used with `==` or `!=` operatorsr)rN�span_end�VERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsr=rc)rQrSrRrDr[rB)r<rirNrrrrh�s0
��

�

�rhcCr5r6)�_parse_full_markerr	rr9rrr�parse_marker�r;rocCst|�}|jddd�|S)NrAzend of marker expressionr?)r\rC)r<�retvalrrrrnsrncCsBt|�g}|�d�r|��}t|�}|�|j|f�|�d�s
|S)z4
    marker = marker_atom (BOOLOP marker_atom)+
    �BOOLOP)�_parse_marker_atomrQrR�extendrD)r<�
expression�token�
expr_rightrrrr\s


�r\cCs||�d�|jddd�r3|jdddd��|�d�t|�}|�d�Wd�n1s-wYnt|�}|�d�|S)	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    r=rfTrLrgzmarker expressionr_N)rBrQrar\�_parse_marker_item)r<r2rrrrrs
�
��	
rr�
MarkerItemcCsJ|�d�t|�}|�d�t|�}|�d�t|�}|�d�|||fS)zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    r=)rB�_parse_marker_var�_parse_marker_op)r<�marker_var_left�	marker_op�marker_var_rightrrrrw(s




rw�	MarkerVarcCsH|�d�rt|��j�dd��S|�d�rt|��j�S|jdd�dS)z/
    marker_var = VARIABLE | QUOTED_STRING
    �VARIABLE�.�_�
QUOTED_STRINGz+Expected a marker variable or quoted string)�messageN)rQ�process_env_varrRrD�replace�process_python_strr[�r<rrrry6s


�ry�env_varcCs|dvrtd�St|�S)N)�platform_python_implementation�python_implementationr�)r!)r�rrrr�Dsr��
python_strcCst�|�}tt|��Sr)�ast�literal_evalr'r)r�rrrrr�Ks
r�cCsr|�d�r
|��td�S|�d�r(|��|jddd�|jddd�td�S|�d	�r4t|��j�S|�d
�S)z&
    marker_op = IN | NOT IN | OP
    �IN�in�NOTr=zwhitespace after 'not'r?z'in' after 'not'znot in�OPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rQrRr)rCrDr[r�rrrrzPs


�rz)r4rr
r,)r<r	r
r,)r<r	r
rH)r<r	rNrXrOrr
r+)r<r	r
r/)r<r	r
r)r4rr
r+)r<r	r
r+)r<r	r
r*)r<r	r
rx)r<r	r
r~)r�rr
r!)r�rr
r')r<r	r
r))'�__doc__�
__future__rr��typingrrrr�
_tokenizerrr	r
r!r'r)r~rxr*rr+r,r:r8rFrTrErbrUrhrornr\rrrwryr�r�rzrrrr�<module>s>



3