Viewing File: /opt/hc_python/lib/python3.12/site-packages/packaging/__pycache__/_parser.cpython-312.pyc

�

+O0h�'���dZddlmZddlZddlmZmZmZmZddl	m
Z
mZGd�d�ZGd	�d
e�Z
Gd�de�ZGd
�de�Zee
efZeeeefZeeedfZeedeefZGd�de�Zd$d�Zd%d�Z				d&d�Z								d'd�Zd(d�Zd(d�Zd)d�Zd)d�Zd*d�Zd+d�Zd+d�Z d,d�Z!d-d�Z"d.d �Z#d/d!�Z$d0d"�Z%d1d#�Z&y)2z�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�,�eZdZdd�Zdd�Zdd�Zdd�Zy)�Nodec��||_y�N��value)�selfrs  �@/opt/hc_python/lib/python3.12/site-packages/packaging/_parser.py�__init__z
Node.__init__s	����
�c��|jSrr�rs r�__str__zNode.__str__s���z�z�rc�<�d|jj�d|�d�S)N�<z('z')>)�	__class__�__name__rs r�__repr__z
Node.__repr__s"���4�>�>�*�*�+�2�d�V�3�7�7rc��t�r)�NotImplementedErrorrs r�	serializezNode.serializes��!�!rN)r�str�return�None�r!r )r�
__module__�__qualname__rrrr�rrrrs����8�"rrc��eZdZdd�Zy)�Variablec��t|�Sr�r rs rrzVariable.serialize����4�y�rNr#�rr$r%rr&rrr(r(���rr(c��eZdZdd�Zy)�Valuec��d|�d�S)N�"r&rs rrzValue.serialize#s���4�&��{�rNr#r,r&rrr/r/"s��rr/c��eZdZdd�Zy)�Opc��t|�Srr*rs rrzOp.serialize(r+rNr#r,r&rrr3r3'r-rr3�
MarkerAtom�
MarkerListc�@�eZdZUded<ded<ded<ded<ded<y	)
�ParsedRequirementr �name�url�	list[str]�extras�	specifierzMarkerList | None�markerN)rr$r%�__annotations__r&rrr8r82s��

�I�	�H����N��rr8c�6�tt|t���S�N)�rules)�_parse_requirementr
r	��sources r�parse_requirementrF=����i��m�D�E�Erc��|jd�|jdd��}|j}|jd�t|�}|jd�t	|�\}}}|jdd��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_detailsr8)�	tokenizer�
name_tokenr9r<r:r=r>s       rrCrCAs������d���!�!��R�"��J��?�?�D�
���d��
�9�
%�F�
���d��7�	�B��C��F�
���U�%B��C��T�3��	�6�B�Brc��d}d}d}|jd�r�|j�|jd�|j}|j	dd��j
}|jdd	�
�r|||fS|j	dd��|jdd	�
�r|||fSt
||d�
�}nR|j}t|�}|jd�|jdd	�
�r|||fSt
|||rdnd�
�}|||fS)z~
    requirement_details = AT URL (WS requirement_marker?)?
                        | specifier WS? (requirement_marker)?
    �N�ATrI�URLzURL after @rKrMT��peekzwhitespace after URLzURL and whitespace)�
span_start�after�version specifierz#name and no valid version specifier)�check�readrN�positionrOrP�_parse_requirement_marker�_parse_specifier)rSr=r:r>�	url_start�specifier_starts      rrRrRVs-���I�
�C�
�F����t���������$���&�&�	����u�}��=�B�B���?�?�5�t�?�,���F�+�+�����(>��?��?�?�5�t�?�,���F�+�+�*��)�3G�
��$�,�,��$�Y�/�	����$���?�?�5�t�?�,���F�+�+�*��&��$�:�

��
��F�#�#rc��|jd�s|jd|�d�|��|j�t|�}|j	d�|S)z3
    requirement_marker = SEMICOLON marker WS?
    �	SEMICOLONz!Expected end or semicolon (after �))r[rI)r^�raise_syntax_errorr_�
_parse_markerrN)rSr[r\r>s    rrara�s[���?�?�;�'��$�$�/��w�a�8�!�	%�	
��N�N��
�9�
%�F�
���d���Mrc���|jdd��sgS|jddd��5|jd�t|�}|jd�ddd�|S#1swYSxYw)	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    �LEFT_BRACKETTrY�
RIGHT_BRACKETr<��aroundrIN)r^�enclosing_tokensrN�_parse_extras_list)rSr<s  rrQrQ�sv���?�?�>��?�5��	�	�	#�	#����
$�
�
	���$��#�I�.�����$��
��M�
��M�s�.A"�"A,c��g}|jd�s|S|j|j�j�	|j	d�|jdd��r|jd�n|jd�s	|S|j�|j	d�|j
dd��}|j|j���)	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    rJTrIrYz"Expected comma between extra names�COMMAzextra name after commarK)r^�appendr_rPrNrhrO)rSr<�extra_tokens   rrprp�s����F��?�?�<�(��
�
�M�M�)�.�.�"�'�'�(�
����$���?�?�<�d�?�3��(�(�)M�N�����)���M�
	�������$���&�&�|�>V�&�W���
�
�k�&�&�'�rc��|jddd��5|jd�t|�}|jd�ddd�|S#1swYSxYw)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    �LEFT_PARENTHESIS�RIGHT_PARENTHESISr]rmrIN)rorN�_parse_version_many)rS�parsed_specifierss  rrbrb�sd��

�	#�	#���"�
$�
�
	���$��/�	�:�����$��
���
���s�.A
�
Ac��d}|jd�r�|j}||j�jz
}|jdd��r!|j	d||jdz��|jd	d��r|j	d
||j��|jd�|jd�s	|S||j�jz
}|jd�|jd�r��|S)
z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    rV�	SPECIFIER�VERSION_PREFIX_TRAILTrYz6.* suffix can only be used with `==` or `!=` operatorsr)r[�span_end�VERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrIrr)r^r`r_rPrhrN)rSryr[s   rrxrx�s����
�/�/�+�
&��'�'�
��Y�^�^�-�2�2�2���?�?�1��?�=��(�(�H�%�"�+�+�a�/�
)�
�
�?�?�6�T�?�B��(�(�R�%�"�+�+�
)�
�
	���$�����w�'����	�Y�^�^�-�2�2�2�����$��'�/�/�+�
&�*�rc�6�tt|t���SrA)�_parse_full_markerr
r	rDs r�parse_markerr��rGrc�B�t|�}|jdd��|S)NrMzend of marker expressionrK)rirO)rS�retvals  rr�r�s%��
�9�
%�F�
���U�%?��@��Mrc���t|�g}|jd�rJ|j�}t|�}|j|j|f�|jd�r�J|S)z4
    marker = marker_atom (BOOLOP marker_atom)+
    �BOOLOP)�_parse_marker_atomr^r_�extendrP)rS�
expression�token�
expr_rights    rriris`��%�Y�/�0�J�
�/�/�(�
#���� ��'�	�2�
����5�:�:�z�2�3��/�/�(�
#��rc�4�|jd�|jdd��rK|jddd��5|jd�t|�}|jd�ddd�nt	|�}|jd�S#1swY�xYw)	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    rIrvTrYrwzmarker expressionrmN)rNr^rori�_parse_marker_item)rSr>s  rr�r�s������d�����)���5�
�
'�
'���&�(�
�

���d�#�!.�y�!9�F����d�#�
�
�$�I�.��
���d���M�
�
�s�.B�Bc���|jd�t|�}|jd�t|�}|jd�t|�}|jd�|||fS)zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rI)rN�_parse_marker_var�_parse_marker_op)rS�marker_var_left�	marker_op�marker_var_rights    rr�r�(si�����d��'�	�2�O�
���d�� ��+�I�
���d��(��3��
���d���Y�(8�9�9rc��|jd�r3t|j�jj	dd��S|jd�r#t|j�j�S|j
d��y)z/
    marker_var = VARIABLE | QUOTED_STRING
    �VARIABLE�.�_�
QUOTED_STRINGz+Expected a marker variable or quoted string)�messageN)r^�process_env_varr_rP�replace�process_python_strrh�rSs rr�r�6so�����z�"��y�~�~�/�4�4�<�<�S�#�F�G�G�	����	)�!�)�.�.�"2�"7�"7�8�8��$�$�A�	%�	
rc�6�|dvrtd�St|�S)N)�platform_python_implementation�python_implementationr�)r()�env_vars rr�r�Ds"���M�M��8�9�9��� � rc�T�tj|�}tt|��Sr)�ast�literal_evalr/r )�
python_strrs  rr�r�Ks!�����Z�(�E���U���rc��|jd�r|j�td�S|jd�rA|j�|jdd��|jdd��td�S|jd	�r#t|j�j�S|jd
�S)z&
    marker_op = IN | NOT IN | OP
    �IN�in�NOTrIzwhitespace after 'not'rKz'in' after 'not'znot in�OPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r^r_r3rOrPrhr�s rr�r�Ps������t�������$�x��	����	���������(@��A�����(:��;��(�|��	����	��)�.�.�"�'�'�(�(��+�+�X�
�	
r)rEr r!r8)rSr
r!r8)rSr
r!z"tuple[str, str, MarkerList | None])rSr
r[�intr\r r!r6)rSr
r!r;)rSr
r!r )rEr r!r6)rSr
r!r6)rSr
r!r5)rSr
r!�
MarkerItem)rSr
r!�	MarkerVar)r�r r!r()r�r r!r/)rSr
r!r3)'�__doc__�
__future__rr��typingrrrr�
_tokenizerr	r
rr(r/r3r�r�r5r r6r8rFrCrRrarQrprbrxr�r�rir�r�r�r�r�r�r&rr�<module>r�s*���#�
�5�5�0�"�"��t��
�D��
���

�(�E�/�"�	�
�9�b�)�+�
,�
�
�:�x��5�5�
6�
�
�e�L�*�c�9�:�
;�
��
��F�C�*0$��0$�'�0$�f���),��58����(�&�6�"�@F��	��,:�
�!��

r
Back to Directory File Manager