Current File : //usr/lib/python3/dist-packages/packaging/__pycache__/_parser.cpython-312.pyc
�

R"fk(���dZddlZddlmZmZmZmZmZmZddl	m
Z
mZGd�d�ZGd�d	e�Z
Gd
�de�ZGd�d
e�Zee
efZeeeefZeZeeZGd�de�Zdedefd�Zdedefd�Zdedeeeeeffd�Zdedededefd�Zdedeefd�Zdedeefd�Zdedefd�Zdedefd�Zdedefd�Zdedefd�Z dedefd�Z!dedefd �Z"dedefd!�Z#dedefd"�Z$d#ede
fd$�Z%d%edefd&�Z&dedefd'�Z'y)(z�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�@�eZdZdeddfd�Zdefd�Zdefd�Zdefd�Zy)�Node�value�returnNc��||_y�N�r)�selfrs  �3/usr/lib/python3/dist-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��!�!r)r�
__module__�__qualname__�strrrrr!�rrr
r

s9���c��d�����8�#�8�"�3�"rr
c��eZdZdefd�Zy)�Variablerc��t|�Sr�r$rs rr!zVariable.serialize����4�y�rN�rr"r#r$r!r%rrr'r'����3�rr'c��eZdZdefd�Zy)�Valuerc��d|�d�S)N�"r%rs rr!zValue.serialize!s���4�&��{�rNr+r%rrr.r. s���3�rr.c��eZdZdefd�Zy)�Oprc��t|�Srr)rs rr!zOp.serialize&r*rNr+r%rrr2r2%r,rr2c�L�eZdZUeed<eed<eeed<eed<eeed<y)�ParsedRequirement�name�url�extras�	specifier�markerN)rr"r#r$�__annotations__rr�
MarkerListr%rrr5r54s&��

�I�	�H���I���N��Z� � rr5�sourcerc�6�tt|t���S�N)�rules)�_parse_requirementrr
�r=s r�parse_requirementrC?����i��m�D�E�Er�	tokenizerc��|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_detailsr5)rE�
name_tokenr6r8r7r9r:s       rrArACs������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�ATrG�URLzURL after @rIrKT��peekzwhitespace after URLzURL and whitespace)�
span_start�after�version specifierz#name and no valid version specifier)�check�readrL�positionrMrN�_parse_requirement_marker�_parse_specifier)rEr9r7r:�	url_start�specifier_starts      rrPrPXs-���I�
�C�
�F����t���������$���&�&�	����u�}��=�B�B���?�?�5�t�?�,���F�+�+�����(>��?��?�?�5�t�?�,���F�+�+�*��)�3G�
��$�,�,��$�Y�/�	����$���?�?�5�t�?�,���F�+�+�*��&��$�:�

��
��F�#�#rrXrYc��|jd�s|jd|�d�|��|j�t|�}|j	d�|S)z3
    requirement_marker = SEMICOLON marker WS?
    �	SEMICOLONz!Expected end or semicolon (after �))rXrG)r[�raise_syntax_errorr\�
_parse_markerrL)rErXrYr:s    rr^r^�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_BRACKETTrV�
RIGHT_BRACKETr8��aroundrGN)r[�enclosing_tokensrL�_parse_extras_list)rEr8s  rrOrO�s{���?�?�>��?�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)*
    rHTrGrVz"Expected comma between extra names�COMMAzextra name after commarI)r[�appendr\rNrLrerM)rEr8�extra_tokens   rrmrm�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_PARENTHESISrZrjrGN)rlrL�_parse_version_many)rE�parsed_specifierss  rr_r_�si��

�	#�	#���"�
$�
� �
	���$��/�	�:�����$�� ��� ���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)*)?
    rS�	SPECIFIER�VERSION_PREFIX_TRAILTrVz6.* suffix can only be used with `==` or `!=` operatorsr	)rX�span_end�VERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrGro)r[r]r\rNrerL)rErvrXs   rruru�s����
�/�/�+�
&��'�'�
��Y�^�^�-�2�2�2���?�?�1��?�=��(�(�H�%�"�+�+�a�/�
)�
�
�?�?�6�T�?�B��(�(�R�%�"�+�+�
)�
�
	���$�����w�'����	�Y�^�^�-�2�2�2�����$��'�/�/�+�
&�*�rc�6�tt|t���Sr?)�_parse_full_markerrr
rBs r�parse_markerr~�rDrc�B�t|�}|jdd��|S)NrKzend of marker expressionrI)rfrM)rE�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\�extendrN)rE�
expression�token�
expr_rights    rrfrfs`��%�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?
    rGrsTrVrtzmarker expressionrjN)rLr[rlrf�_parse_marker_item)rEr: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?
    rG)rL�_parse_marker_var�_parse_marker_op)rE�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\rN�replace�process_python_strre�rEs rr�r�8so�����z�"��y�~�~�/�4�4�<�<�S�#�F�G�G�	����	)�!�)�.�.�"2�"7�"7�8�8��$�$�A�	%�	
r�env_varc�6�|dvrtd�St|�S)N)�platform_python_implementation�python_implementationr�)r')r�s rr�r�Fs"���M�M��8�9�9��� � r�
python_strc�T�tj|�}tt|��Sr)�ast�literal_evalr.r$)r�rs  rr�r�Ms!�����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�NOTrGzwhitespace after 'not'rIz'in' after 'not'znot in�OPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r[r\r2rMrNrer�s rr�r�Rs������t�������$�x��	����	���������(@��A�����(:��;��(�|��	����	��)�.�.�"�'�'�(�(��+�+�
8�
�	
r)(�__doc__r��typingrrrrrr�
_tokenizerr
rr
r'r.r2�	MarkerVar�
MarkerItem�
MarkerAtomr<r5r$rCrArP�intr^rOrmr_rur~r}rfr�r�r�r�r�r�r%rr�<module>r�s����@�@�0�"�"��t��
�D��
���

�(�E�/�"�	�
�9�b�)�+�
,�
�
�
�
�#�Y�
�!�
�!�F�c�F�&7�F�C�)�C�0A�C�*0$��0$�
�3��X�j�)�)�*�0$�f���),��58����(�Y��4��9��&�)���S�	��6�	��c��"�9����@F��F��F��)��
��	�Y�	�:�	��)��
��,:�)�:�
�:�
��
�y�
�!�S�!�X�!��3��5��

�	�
�b�
r