Your IP : 216.73.217.13


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__/markers.cpython-312.pyc

�

�j�B�	�Z�UddlmZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZm
Z
ddlmZmZmZmZmZddlmZddlmZddlmZmZdd	lmZgd
�Zd*d�Zeeeeeefge fZ!e	dZ"	d
dhZ#hd�Z$Gd�de%�Z&Gd�de%�Z'Gd�de%�Z(Gd�de�Z)				d+d�Z*d,d�Z+	d-					d.d�Z,d�d�d�ejZejZej\ejZd�d�Z/d e0d!<d/d"�Z1								d0d#�Z2						d1d$�Z3d2d%�Z4d3d&�Z5Gd'�d(�Z6				d4d)�Z7y)5�)�annotationsN)�AbstractSet�Callable�Literal�Mapping�	TypedDict�Union�cast�)�
MarkerAtom�
MarkerList�Op�Value�Variable)�parse_marker)�ParserSyntaxError)�InvalidSpecifier�	Specifier)�canonicalize_name)�Environment�EvaluateContext�
InvalidMarker�Marker�UndefinedComparison�UndefinedEnvironmentName�default_environmentc��tS�N)�__all__����/build/snapcraft-certbot-54d6d23c1eba5f776fc280588daee8b3/parts/certbot/install/lib/python3.12/site-packages/packaging/markers.py�__dir__r#s���Nr!)�metadata�	lock_file�requirement�extras�dependency_groups>�python_version�platform_release�python_full_version�implementation_versionc��eZdZdZy)rz�Raised when attempting to create a :class:`Marker` from invalid input.

    This error indicates that the given marker string does not conform to the
    :ref:`specification of dependency specifiers <pypug:dependency-specifiers>`.
    N��__name__�
__module__�__qualname__�__doc__r r!r"rr6s��r!rc��eZdZdZy)rz�Raised when evaluating an unsupported marker comparison.

    This can happen when marker values are compared as versions but do not
    conform to the :ref:`specification of version specifiers
    <pypug:version-specifiers>`.
    Nr.r r!r"rr>s��r!rc��eZdZdZy)rzJRaised when evaluating a marker that references a missing environment key.Nr.r r!r"rrGs��Tr!rc��eZdZUdZded<	ded<	ded<	ded<	ded<	ded<	ded	<	ded
<	ded<	ded<	ded
<y)rz�
    A dictionary that represents a Python environment as captured by
    :func:`default_environment`. All fields are required.
    �str�implementation_namer,�os_name�platform_machiner*�platform_system�platform_versionr+�platform_python_implementationr)�sys_platformN)r/r0r1r2�__annotations__r r!r"rrKs����
��>����
�L��
���������������%(�'����9���r!rc�:�t|t�s|S|\}}}t|t�r0|jdk(r!t	|j�}t|�}n?t|t�r/|jdk(r t	|j�}t|�}|||fS)N�extra)�
isinstance�tupler�valuerr)�result�lhs�op�rhs�normalized_extras     r"�_normalize_extrasrI�s����f�e�$��
��L�C��S��#�x� �S�Y�Y�'�%9�,�S�Y�Y�7���$�%��	�C��	"�s�y�y�G�';�,�S�Y�Y�7���$�%����C�<�r!c�>�|D�cgc]
}t|���c}Scc}w)z!
    Normalize extra values.
    )rI)�results�rs  r"�_normalize_extra_valuesrM�s��
+2�2�Q��a� �2�2��2s�c���t|tttf�sJ�t|t�r5t	|�dk(r't|dttf�rt|d�St|t�r3d�|D�}|rdj
|�Sddj
|�zdzSt|t�r-dj
|D�cgc]}|j���c}�S|Scc}w)Nrrc3�6K�|]}t|d�����y�w)F)�firstN)�_format_marker)�.0�ms  r"�	<genexpr>z!_format_marker.<locals>.<genexpr>�s����@�A����/�/�@�s�� �(�))rA�listrBr6�lenrQ�join�	serialize)�markerrP�innerrSs    r"rQrQ�s����f�t�U�C�0�1�1�1�	�6�4� ���K�1���v�a�y�4��-�0��f�Q�i�(�(��&�$��@��@����8�8�E�?�"�����%��(�3�.�.�	�F�E�	"��x�x��7�1�����7�8�8��
��8s�C%c�
�||vSrr �rErGs  r"�<lambda>r`�s
��3�#�:�r!c�
�||vSrr r_s  r"r`r`�s
��s�#�~�r!c��y�NFr ��_lhs�_rhss  r"r`r`���r!c��yrcr rds  r"r`r`�rgr!)�inznot in�<z<=z==z!=z>=�>zdict[str, Operator]�
_operatorsc	��|j�}|tvr#	t|�|���}|j|d��St
j
|�}|�td|�d|�d|�d���|||�S#t$rY�@wxYw)NT)�prereleasesz
Undefined z on z and �.)r[�MARKERS_REQUIRING_VERSIONr�containsrrl�getr)rErFrG�key�op_str�spec�opers       r"�_eval_oprw�s���
�\�\�^�F�
�'�'�	8���x��u�-�.�D��=�=��$�=�7�7�&�N�N�6�2�D��|�!�J�r�f�D���u�S�G�1�"M�N�N���S�>��� �	��	�s�A1�1	A=�<A=c��|dk(rt|t�sJd��||fS|tvrJt|t�rt|�t|�fSt|�|D�chc]
}t|���c}fS||fScc}w)Nr@zextra value must be a string)rAr6�MARKERS_ALLOWING_SETr)rErGrs�vs    r"�
_normalizer{�s����g�~��#�s�#�C�%C�C�#��S�z��
�"�"��c�3��%�c�*�,=�c�,B�C�C�%�c�*�3�,O�a�->�q�-A�,O�P�P���8�O��-Ps�A7c	�D�gg}|D�]}t|t�r|djt||���3t|t�r�|\}}}t|t
�r|j}||}|j}	n|j}|j}||}	t|t�sJd��t||	|��\}}	|djt|||	|�����|dk(r|jg���|dk(r��td|����td�|D��S)N���zlhs must be a string)rs�or�andzUnexpected marker c3�2K�|]}t|����y�wr)�all)rR�items  r"rTz$_evaluate_markers.<locals>.<genexpr>s����,�T�s�4�y�,�s�)rArX�append�_evaluate_markersrBrrCr6r{rw�	TypeError�any)
�markers�environment�groupsr\rErFrG�environment_key�	lhs_value�	rhs_values
          r"r�r��s��!#�t�F��=���f�d�#��2�J���/���D�E�
���
&�!�L�C��S��#�x�(�"%�)�)��'��8�	��I�I�	��I�I�	�"%�)�)��'��8�	��i��-�E�/E�E�-�#-�i���#X� �I�y��2�J���h�y�"�i�_�U�V�
�t�^��M�M�"��
�u�_���0��
�;�<�<�/=�2�,�V�,�,�,r!c��|j�d|j�d|j��}|j}|dk7r||dt	|j
�zz
}|S)Nro�finalr)�major�minor�micro�releaselevelr6�serial)�info�version�kinds   r"�_format_full_versionr�sW������A�d�j�j�\��4�:�:�,�7�G����D��w���4��7�S����-�-�-���Nr!c���ttjj�}tjj}||t
jt
j�t
j�t
j�t
j�t
j�t
j�djt
j�dd�tjd�S)z�Return the default marker environment for the current Python process.

    This is the base environment used by :meth:`Marker.evaluate`.
    roN�)r7r,r8r9r*r:r;r+r<r)r=)r��sys�implementationr��name�os�platform�machine�release�systemr)�python_implementationrZ�python_version_tuple)�iverr7s  r"rr's���
 �� 2� 2� :� :�;�D��,�,�1�1��2�"&��7�7�$�,�,�.�$�,�,�.�#�?�?�,�$�,�,�.�'�6�6�8�*2�*H�*H�*J��(�(�8�#@�#@�#B�2�A�#F�G�����r!c��eZdZdZdZdd�Zedd��Zdd�Zdd�Z	dd�Z
dd�Zdd	�Zdd
�Z
dd�Zdd�Z		d					dd�Zy
)ra�Represents a parsed dependency marker expression.

    Marker expressions are parsed according to the
    :ref:`specification of dependency specifiers <pypug:dependency-specifiers>`.

    :param marker: The string representation of a marker expression.
    :raises InvalidMarker: If ``marker`` cannot be parsed.

    Instances are safe to serialize with :mod:`pickle`. They use a stable
    format so the same pickle can be loaded in future packaging releases.

    .. versionchanged:: 26.2

        Added a stable pickle format. Pickles created with packaging 26.2+ can
        be unpickled with future releases.  Backward compatibility with pickles
        from packaging < 26.2 is supported but may be removed in a future
        release.
    )�_markersc��g|_	tt|��|_y#t$r}t	t|��|�d}~wwxYwr)r�rM�
_parse_markerrrr6)�selfr\�es   r"�__init__zMarker.__init__SsD��%'��
�	/�3�M�&�4I�J�D�M��"!�	/���A��'�Q�.��	/�s�#�	A�A�Ac�6�|j|�}||_|S)z�Create a Marker instance from a pre-parsed marker tree.

        This avoids re-parsing serialised marker strings when combining markers.
        )�__new__r�)�clsr��news   r"�
_from_markerszMarker._from_markersqs���k�k�#�������
r!c�,�t|j�Sr)rQr��r�s r"�__str__zMarker.__str__{s���d�m�m�,�,r!c�N�d|jj�dt|��d�S)NrjrVz)>)�	__class__r/r6r�s r"�__repr__zMarker.__repr__~s&���4�>�>�*�*�+�1�S��Y�M��<�<r!c�*�tt|��Sr)�hashr6r�s r"�__hash__zMarker.__hash__�s���C��I��r!c�\�t|t�stSt|�t|�k(Sr)rAr�NotImplementedr6�r��others  r"�__eq__z
Marker.__eq__�s%���%��(�!�!��4�y�C��J�&�&r!c��t|�Sr)r6r�s r"�__getstate__zMarker.__getstate__�s���4�y�r!c��t|t�r	tt|��|_yt|t�r!d|vr|d}t|t�r||_yt|t�rDt|�dk(r6|\}}t|t�r!d|vr|d}t|t�r||_yt
d|����#t
$r}t
d|���|�d}~wwxYw)NzCannot restore Marker from r�r�)rAr6rMr�r�rr��dictrXrBrY)r��state�excr��_�	slot_dicts      r"�__setstate__zMarker.__setstate__�s����e�S�!�
R� 7�
�e�8L� M��
�
��e�T�"�z�U�':��J�'�G��'�4�(� '��
���e�U�#��E�
�a�� �L�A�y��)�T�*�z�Y�/F�#�J�/���g�t�,�$+�D�M���5�e�Y�?�@�@��#%�
R��"=�e�Y� G�H�c�Q��
R�s�B?�?	C�C�Cc�~�t|t�stS|j|jd|jg�S)Nr�rArr�r�r�r�s  r"�__and__zMarker.__and__�s2���%��(�!�!��!�!�4�=�=�%����"H�I�Ir!c�~�t|t�stS|j|jd|jg�S)Nr~r�r�s  r"�__or__z
Marker.__or__�s2���%��(�!�!��!�!�4�=�=�$����"G�H�Hr!Nc�>�tdt��}|dk(r$|jt�t���n
|dk(rd|d<|�6|j|�d|vr!td|d�}|rt	|�nd|d<t|jt|��S)a"Evaluate a marker.

        Return the boolean from evaluating this marker against the environment.
        The environment is determined from the current Python process unless
        passed in explicitly.

        :param environment: Mapping containing keys and values to override the
           detected environment.
        :param EvaluateContext context: The context in which the marker is
            evaluated, which influences what marker names are considered valid.
            Accepted values are ``"metadata"`` (for core metadata; default),
            ``"lock_file"``, and ``"requirement"`` (i.e. all other situations).
        :raises UndefinedComparison: If the marker uses a comparison on values
            that are not valid versions per the :ref:`specification of version
            specifiers <pypug:version-specifiers>`.
        :raises UndefinedEnvironmentName: If the marker references a value that
            is missing from the evaluation environment.
        :returns: ``True`` if the marker matches, otherwise ``False``.

        �!dict[str, str | AbstractSet[str]]r%)r'r(r$�r@z
str | None)r
r�update�	frozensetrr�r��_repair_python_full_version)r�r��context�current_environmentr@s     r"�evaluatezMarker.evaluate�s���2#�/�1D�1F�
���k�!��&�&� �{�i�k�
'�
��
�
"�+-���(��"��&�&�{�3��-�-��\�+>�w�+G�H��KP�/@��/G�VX�#�G�,� ��M�M�6�7J�K�
�	
r!)r\r6�return�None)r�r
r�r)r�r6)r��int)r��objectr��bool)r�r�r�r�)r�rr�r)Nr$)r�z+Mapping[str, str | AbstractSet[str]] | Noner�rr�r�)r/r0r1r2�	__slots__r��classmethodr�r�r�r�r�r�r�r�r�r�r r!r"rr=s}���&�I�/�<����-�=��'��
A�0J�
I�DH�#-�.
�@�.
�!�.
�
�	.
r!rc�V�td|d�}|jd�r|�d�|d<|S)z�
    Work around platform.python_version() returning something that is not PEP 440
    compliant for non-tagged Python builds.
    r6r+�+�local)r
�endswith)�envr+s  r"r�r��s=���u�c�*?�&@�A���#�#�C�(�(;�'<�E�%B��!�"��Jr!)r�z	list[str])rD�MarkerList | MarkerAtom | strr�r�)rKr
r�r
)T)r\zlist[str] | MarkerAtom | strrPzbool | Noner�r6)
rEr6rFrrG�str | AbstractSet[str]rsr6r�r�)rEr6rGr�rsr6r�z"tuple[str, str | AbstractSet[str]])r�r
r�r�r�r�)r�zsys._version_infor�r6)r�r)r�r�r�r�)8�
__future__r�operatorr�r�r��typingrrrrrr	r
�_parserrr
rrrrr��
_tokenizerr�
specifiersrr�utilsrrr#r6r��Operatorrryrp�
ValueErrorrrrrrIrMrQ�eq�nerlr>rwr{r�r�rrr�r r!r"�<module>r�s���
#��	��
�R�R�R�@�@�2�)�3�$�����S�%��[��%5� 5�6�7��=�>���@�A���!�"5�6�����J���*��U�z�U�J�)�J�Z
�)�
�"�
� 3�@D��(��1<����:&�-�	!�
�+�+�
�+�+�
�+�+�
�+�+�	!�	#�
��	��"�	��)��03��'��*-�
�-�&G�-�	�-�B��,b
�b
�J
�	*�
�&�
r!