HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/packaging/__pycache__/_parser.cpython-310.pyc
o

�N�g�%�@s�dZddlZddlmZmZmZmZmZmZddl	m
Z
mZGdd�d�ZGdd	�d	e�Z
Gd
d�de�ZGdd
�d
e�Zee
efZeeeefZeZeeZGdd�de�Zdedefdd�Zdedefdd�Zdedeeeeeffdd�Zdedededefdd�Zdedeefdd�Zdedeefdd �Zdedefd!d"�Zdedefd#d$�Zdedefd%d&�Zdedefd'd(�Z dedefd)d*�Z!dedefd+d,�Z"dedefd-d.�Z#d/ede
fd0d1�Z$d2edefd3d4�Z%dedefd5d6�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@sHeZdZdeddfdd�Zdefdd�Zdefdd	�Zdefd
d�ZdS)�Node�value�returnNcCs
||_dS�N�r)�selfr�r�E/opt/saltstack/salt/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.serialize)r�
__module__�__qualname__�strrrrrrrrrr
s
rc@�eZdZdefdd�ZdS)�Variabler
cC�t|�Sr�rrrrrr�zVariable.serializeN�rrrrrrrrrr �r c@r)�Valuer
cCsd|�d�S)N�"rrrrrr!szValue.serializeNr$rrrrr& r%r&c@r)�Opr
cCr!rr"rrrrr&r#zOp.serializeNr$rrrrr(%r%r(c@s>eZdZUeed<eed<eeed<eed<eeed<dS)�ParsedRequirement�name�url�extras�	specifier�markerN)rrrr�__annotations__rr�
MarkerListrrrrr)4s
r)�sourcer
cC�tt|td��S�N)Zrules)�_parse_requirementr
r	�r1rrr�parse_requirement?�r6�	tokenizercCsf|�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))r8Z
name_tokenr*r,r+r-r.rrrr4Cs
�

r4cCs�d}d}d}|�d�r:|��|�d�|j}|jddd�j}|jdd	d
�r+|||fS|jddd�t||dd
�}n#|j}t|�}|�d�|jdd	d
�rR|||fSt|||rYdndd
�}|||fS)z}
    requirement_details = AT URL (WS requirement_marker)?
                        | specifier WS? (requirement_marker)?
    �N�ATr9ZURLzURL after @r;r=T��peekzwhitespace after URLzURL and whitespace)�
span_start�afterzversion specifierz#name and no valid version specifier)�check�readr>�positionr?r@�_parse_requirement_marker�_parse_specifier)r8r-r+r.Z	url_startZspecifier_startrrrrBXs6


�

��

rBrGrHcCs@|�d�s|jd|�d�|d�n|��t|�}|�d�|S)z3
    requirement_marker = SEMICOLON marker WS?
    Z	SEMICOLONz!Expected end or semicolon (after �))rGr9)rI�raise_syntax_errorrJ�
_parse_markerr>)r8rGrHr.rrrrL�s

�
rLcCs`|jddd�s	gS|�dd��|�d�t|�}|�d�Wd�|S1s)wY|S)zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    ZLEFT_BRACKETTrEZ
RIGHT_BRACKETr9N)rI�enclosing_tokensr>�_parse_extras_list)r8r,rrrrA�s

��rAcCs�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:Tr9rEz"Expected comma between extra names�COMMAzextra name after commar;)rI�appendrJr@r>rOr?)r8r,Zextra_tokenrrrrR�s 


�
�rRcCsN|�dd��|�d�t|�}|�d�Wd�|S1s wY|S)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    �LEFT_PARENTHESIS�RIGHT_PARENTHESISr9N)rQr>�_parse_version_many)r8�parsed_specifiersrrrrM�s

��rMcCstd}|�d�r8||��j7}|jddd�}||j7}|�d�|�d�s'	|S||��j7}|�d�|�d�s|S)z:
    version_many = (OP VERSION (COMMA OP VERSION)*)?
    rC�OP�VERSIONzversion after operatorr;r9rS)rIrJr@r?r>)r8rXZ
version_tokenrrrrW�s



�

�rWcCr2r3)rPr
r	r5rrr�parse_marker�r7r[cCsBt|�g}|�d�r|��}t|�}|�|j|f�|�d�s
|S)z4
    marker = marker_atom (BOOLOP marker_atom)+
    ZBOOLOP)�_parse_marker_atomrIrJ�extendr@)r8Z
expression�tokenZ
expr_rightrrrrP�s


�rPcCsx|�d�|jddd�r1|�dd��|�d�t|�}|�d�Wd�n1s+wYnt|�}|�d�|S)zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    r9rUTrErVN)r>rIrQrP�_parse_marker_item)r8r.rrrr\�s

��
r\cCsJ|�d�t|�}|�d�t|�}|�d�t|�}|�d�|||fS)zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    r9)r>�_parse_marker_var�_parse_marker_op)r8Zmarker_var_leftZ	marker_opZmarker_var_rightrrrr_s




r_cCsH|�d�rt|��j�dd��S|�d�rt|��j�S|jdd�dS)z/
    marker_var = VARIABLE | QUOTED_STRING
    ZVARIABLE�.�_Z
QUOTED_STRINGz+Expected a marker variable or quoted string)�messageN)rI�process_env_varrJr@�replace�process_python_strrO�r8rrrr`s


�r`�env_varcCs |dks|dkrtd�St|�S)NZplatform_python_implementation�python_implementation)r )rirrrre,sre�
python_strcCst�|�}tt|��Sr)�astZliteral_evalr&r)rkrrrrrg6s
rgcCsr|�d�r
|��td�S|�d�r(|��|jddd�|jddd�td�S|�d	�r4t|��j�S|�d
�S)z&
    marker_op = IN | NOT IN | OP
    �IN�inZNOTr9zwhitespace after 'not'r;z'in' after 'not'znot inrYzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rIrJr(r?r@rOrhrrrra;s


�ra)'�__doc__rl�typingrrrrrrZ
_tokenizerr	r
rr r&r(Z	MarkerVarZ
MarkerItemZ
MarkerAtomr0r)rr6r4rB�intrLrArRrMrWr[rPr\r_r`rergrarrrr�<module>sR �
�/���
�