Your IP : 216.73.216.52


Current Path : /snap/certbot/current/lib64/python3.12/site-packages/packaging/__pycache__/
Upload File :
Current File : //snap/certbot/current/lib64/python3.12/site-packages/packaging/__pycache__/_parser.cpython-312.pyc

�

`I�i)���dZddlmZddlZddlmZmZmZmZm	Z	m
Z
ddlmZm
Z
Gd�d�ZGd	�d
e�ZGd�de�ZGd
�de�ZedZe
eefZe	eeefZe
eedfZee
deefZGd�de�Zd%d�Zd&d�Z				d'd�Z								d(d�Zd)d�Zd)d�Zd*d�Zd*d�Zd+d�Z d,d�Z!d,d�Z"d-d�Z#d.d �Z$d/d!�Z%d0d"�Z&d1d#�Z'd2d$�Z(y)3z�Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
�)�annotationsN)�List�Literal�
NamedTuple�Sequence�Tuple�Union�)�
DEFAULT_RULES�	Tokenizerc�0�eZdZdZdd�Zdd�Zdd�Zdd�Zy)	�Node��valuec��||_y�Nr)�selfrs  ��/build/snapcraft-certbot-53a6961353a63169611ae8a78f6bfa4f/parts/certbot/install/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�P�d|jj�d|j�d�S)N�<�(z)>)�	__class__�__name__rrs r�__repr__z
Node.__repr__s&���4�>�>�*�*�+�1�T�Z�Z�N�"�=�=rc��t�r)�NotImplementedErrorrs r�	serializezNode.serializes��!�!rN)r�str�return�None�r$r#)r�
__module__�__qualname__�	__slots__rrrr"�rrrrs���I���>�"rrc��eZdZdZdd�Zy)�Variabler*c��t|�Sr�r#rs rr"zVariable.serialize"����4�y�rNr&�rr'r(r)r"r*rrr,r,����I�rr,c��eZdZdZdd�Zy)�Valuer*c��d|�d�S)N�"r*rs rr"zValue.serialize)s���4�&��{�rNr&r0r*rrr3r3&s���I�rr3c��eZdZdZdd�Zy)�Opr*c��t|�Srr.rs rr"zOp.serialize0r/rNr&r0r*rrr7r7-r1rr7)�and�or�
MarkerAtom�
MarkerListc�@�eZdZUded<ded<ded<ded<ded<y	)
�ParsedRequirementr#�name�url�	list[str]�extras�	specifierzMarkerList | None�markerN)rr'r(�__annotations__r*rrr>r>;s��

�I�	�H����N��rr>c�6�tt|t���S�N)�rules)�_parse_requirementrr��sources r�parse_requirementrLF����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_detailsr>)�	tokenizer�
name_tokenr?rBr@rCrDs       rrIrIJs������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�ATrO�URLzURL after @rQrST��peekzwhitespace after URLz$semicolon (after URL and whitespace))�
span_startrRzEcomma (within version specifier), semicolon (after version specifier)z0semicolon (after name with no version specifier))�check�readrT�positionrUrV�_parse_requirement_marker�_parse_specifier)rYrCr@rD�	url_start�specifier_starts      rrXrX_s/���I�
�C�
�F����t���������$���&�&�	����u�}��=�B�B���?�?�5�t�?�,���F�+�+�����(>��?��?�?�5�t�?�,���F�+�+�*�� �;�
��$�,�,��$�Y�/�	����$���?�?�5�t�?�,���F�+�+�*��&��X�G�

��
��F�#�#rc��|jd�s|jd|�d�|d��|j�t|�}|j	d�|S)z3
    requirement_marker = SEMICOLON marker WS?
    �	SEMICOLONz	Expected z or endN�ra�span_endrO)rb�raise_syntax_errorrc�
_parse_markerrT)rYrarRrDs    rrere�s^���?�?�;�'��$�$���z��)�!��	%�	
�
�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_BRACKETTr_�
RIGHT_BRACKETrB��aroundrON)rb�enclosing_tokensrT�_parse_extras_list)rYrBs  rrWrW�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)*
    rPTrOr_z"Expected comma between extra names�COMMAzextra name after commarQ)rb�appendrcrVrTrmrU)rYrB�extra_tokens   rruru�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_PARENTHESISzversion specifierrrrON)rtrT�_parse_version_many)rY�parsed_specifierss  rrfrf�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)*)?
    r\�	SPECIFIER�VERSION_PREFIX_TRAILTr_z6.* suffix can only be used with `==` or `!=` operatorsr
rk�VERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrOrw)rbrdrcrVrmrT)rYr~ras   rr}r}�s����
�/�/�+�
&��'�'�
��Y�^�^�-�2�2�2���?�?�1��?�=��(�(�H�%�"�+�+�a�/�
)�
�
�?�?�6�T�?�B��(�(�R�%�"�+�+�
)�
�
	���$�����w�'����	�Y�^�^�-�2�2�2�����$��'�/�/�+�
&�*�rc�6�tt|t���SrG)�_parse_full_markerrrrJs r�parse_markerr�rMrc�B�t|�}|jdd��|S)NrSzend of marker expressionrQ)rnrU)rY�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_atomrbrc�extendrV)rY�
expression�token�
expr_rights    rrnrns`��%�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?
    rOr{Tr_r|zmarker expressionrrN)rTrbrtrn�_parse_marker_item)rYrDs  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?
    rO)rT�_parse_marker_var�_parse_marker_op)rY�marker_var_left�	marker_op�marker_var_rights    rr�r�4si�����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)rb�process_env_varrcrV�replace�process_python_strrm�rYs rr�r�Bso�����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�Ps"���M�M��8�9�9��� � rc�T�tj|�}tt|��Sr)�ast�literal_evalr3r#)�
python_strrs  rr�r�Ws!�����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�NOTrOzwhitespace after 'not'rQz'in' after 'not'znot in�OPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rbrcr7rUrVrmr�s rr�r�\s������t�������$�x��	����	���������(@��A�����(:��;��(�|��	����	��)�.�.�"�'�'�(�(��+�+�X�
�	
r)rKr#r$r>)rYrr$r>)rYrr$z"tuple[str, str, MarkerList | None])rYrra�intrRr#r$r<)rYrr$rA)rYrr$r#)rKr#r$r<)rYrr$r<)rYrr$r;)rYrr$�
MarkerItem)rYrr$�	MarkerVar)r�r#r$r,)r�r#r$r3)rYrr$r7))�__doc__�
__future__rr��typingrrrrrr	�
_tokenizerrrrr,r3r7�
MarkerLogicalr�r�r;r<r>rLrIrXrerWrurfr}r�r�rnr�r�r�r�r�r�r*rr�<module>r�s4���#�
�D�D�0�
"�
"� �t���D�������$�
��(�E�/�"�	�
�9�b�)�+�
,�
�
�:�x��5�5�
6�
�
�%��j�-�?�@�
A�
��
��F�C�*2$��2$�'�2$�j���),��8;����*�&�6�"�@F��	��,:�
�!��

r