HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/site-packages/wheel/vendored/packaging/__pycache__/_parser.cpython-37.pyc
B

O��g�(�@s�dZddlZddlmZmZmZmZmZmZddl	m
Z
mZGdd�d�ZGdd	�d	e�Z
Gd
d�de�ZGdd
�d
e�Zee
efZeeeefZeZeeZGdd�de�Zeed�dd�Zeed�dd�Zeeeeeefd�dd�Zeeeed�dd�Zeeed�dd�Zeeed�dd�Zeed�dd �Zeed�d!d"�Zeed�d#d$�Zeed�d%d&�Z eed�d'd(�Z!eed�d)d*�Z"eed�d+d,�Z#eed�d-d.�Z$ee
d/�d0d1�Z%eed2�d3d4�Z&eed�d5d6�Z'dS)7z�Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains ENBF-inspired grammar representing
the implementation.
�N)�Any�List�
NamedTuple�Optional�Tuple�Union�)�
DEFAULT_RULES�	Tokenizerc@sFeZdZedd�dd�Zed�dd�Zed�dd	�Zed�d
d�ZdS)�NodeN)�value�returncCs
||_dS)N)r)�selfr�r�D/tmp/pip-unpacked-wheel-f1gdtpe6/wheel/vendored/packaging/_parser.py�__init__sz
Node.__init__)r
cCs|jS)N)r)rrrr�__str__szNode.__str__cCsd|jj�d|�d�S)N�<z('z')>)�	__class__�__name__)rrrr�__repr__sz
Node.__repr__cCst�dS)N)�NotImplementedError)rrrr�	serializeszNode.serialize)r�
__module__�__qualname__�strrrrrrrrrr
src@seZdZed�dd�ZdS)�Variable)r
cCst|�S)N)r)rrrrrszVariable.serializeN)rrrrrrrrrrsrc@seZdZed�dd�ZdS)�Value)r
cCsd|�d�S)N�"r)rrrrr!szValue.serializeN)rrrrrrrrrr src@seZdZed�dd�ZdS)�Op)r
cCst|�S)N)r)rrrrr&szOp.serializeN)rrrrrrrrrr%src@s>eZdZUeed<eed<eeed<eed<eeed<dS)�ParsedRequirement�name�url�extras�	specifier�markerN)rrrr�__annotations__rr�
MarkerListrrrrr 4s

r )�sourcer
cCstt|td��S)N)�rules)�_parse_requirementr
r	)r(rrr�parse_requirement?sr+)�	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,Z
name_tokenr!r#r"r$r%rrrr*Cs



r*cCs�d}d}d}|�d�r�|��|�d�|j}|jddd�j}|jdd	d
�rV|||fS|jddd�|jdd	d
�r||||fSt||dd
�}nF|j}t|�}|�d�|jdd	d
�r�|||fSt|||r�dndd
�}|||fS)z~
    requirement_details = AT URL (WS requirement_marker?)?
                        | specifier WS? (requirement_marker)?
    �N�ATr-�URLzURL after @)r/r0T)�peekzwhitespace after URLzURL and whitespace)�
span_start�afterzversion specifierz#name and no valid version specifier)�check�readr1�positionr2r3�_parse_requirement_marker�_parse_specifier)r,r$r"r%Z	url_startZspecifier_startrrrr5Xs4





r5)r,r:r;r
cCs>|�d�s |jd|�d�|d�|��t|�}|�d�|S)z3
    requirement_marker = SEMICOLON marker WS?
    �	SEMICOLONz!Expected end or semicolon (after �))r:r-)r<�raise_syntax_errorr=�
_parse_markerr1)r,r:r;r%rrrr?�s


r?c	CsN|jddd�sgS|jdddd��"|�d�t|�}|�d�WdQRX|S)	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    ZLEFT_BRACKETT)r9Z
RIGHT_BRACKETr#)�aroundr-N)r<�enclosing_tokensr1�_parse_extras_list)r,r#rrrr4�s

r4cCs�g}|�d�s|S|�|��j�x`|�d�|jddd�rH|�d�n|�d�sTP|��|�d�|jddd�}|�|j�q$W|S)	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    r.r-T)r9z"Expected comma between extra names�COMMAzextra name after comma)r/)r<�appendr=r3r1rCr2)r,r#Zextra_tokenrrrrG�s



rGc	Cs<|jdddd��"|�d�t|�}|�d�WdQRX|S)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    �LEFT_PARENTHESIS�RIGHT_PARENTHESISzversion specifier)rEr-N)rFr1�_parse_version_many)r,�parsed_specifiersrrrr@�s

r@cCs�d}x�|�d�r�|j}||��j7}|jddd�rH|jd||jdd�|jd	dd�rh|jd
||jd�|�d�|�d�s~P||��j7}|�d�qW|S)
z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    r6Z	SPECIFIERZVERSION_PREFIX_TRAILT)r9z6.* suffix can only be used with `==` or `!=` operatorsr)r:Zspan_endZVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsr-rH)r<r>r=r3rCr1)r,rMr:rrrrL�s(


rLcCstt|td��S)N)r))�_parse_full_markerr
r	)r(rrr�parse_marker�srOcCst|�}|jddd�|S)Nr0zend of marker expression)r/)rDr2)r,�retvalrrrrNsrNcCs>t|�g}x.|�d�r8|��}t|�}|�|j|f�qW|S)z4
    marker = marker_atom (BOOLOP marker_atom)+
    �BOOLOP)�_parse_marker_atomr<r=�extendr3)r,Z
expression�tokenZ
expr_rightrrrrDs
rDc	Csh|�d�|jddd�rR|jdddd��"|�d�t|�}|�d�WdQRXnt|�}|�d�|S)	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    r-rJT)r9rKzmarker expression)rEN)r1r<rFrD�_parse_marker_item)r,r%rrrrRs



rRcCsJ|�d�t|�}|�d�t|�}|�d�t|�}|�d�|||fS)zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    r-)r1�_parse_marker_var�_parse_marker_op)r,Zmarker_var_leftZ	marker_opZmarker_var_rightrrrrU*s



rUcCsH|�d�r t|��j�dd��S|�d�r8t|��j�S|jdd�dS)z/
    marker_var = VARIABLE | QUOTED_STRING
    �VARIABLE�.�_Z
QUOTED_STRINGz+Expected a marker variable or quoted string)�messageN)r<�process_env_varr=r3�replace�process_python_strrC)r,rrrrV8s

rV)�env_varr
cCs$|dks|dkrtd�St|�SdS)N�platform_python_implementation�python_implementation)r)r_rrrr\Fsr\)�
python_strr
cCst�|�}tt|��S)N)�ast�literal_evalrr)rbrrrrr^Ps
r^cCsv|�d�r|��td�S|�d�rP|��|jddd�|jddd�td�S|�d	�rht|��j�S|�d
�SdS)z&
    marker_op = IN | NOT IN | OP
    �IN�inZNOTr-zwhitespace after 'not')r/z'in' after 'not'znot in�OPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not inN)r<r=rr2r3rC)r,rrrrWUs


rW)(�__doc__rc�typingrrrrrr�
_tokenizerr	r
rrrrZ	MarkerVarZ
MarkerItemZ
MarkerAtomr'r rr+r*r5�intr?r4rGr@rLrOrNrDrRrUrVr\r^rWrrrr�<module>s> 2