� ��^i}����dZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z dgZ ejd��Zd �Zd �ZGd �d e��Zd �Ze��Z[e��Zdd�ZdS)zG Parser for the environment markers micro-language defined in PEP 508. �N�)� string_types)�in_venv� parse_marker)�NormalizedVersion� interpretz<((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")c�H�t|t��r|sdS|ddvS)NFr�'")� isinstancer)�os ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/distlib/markers.py� _is_literalrs.�� �a�� &� &��a���u� �Q�4�5�=��c���g}t�|��D]<}|�t|���d�����=t |��S)Nr)�_VERSION_PATTERN�finditer�append�NV�groups�set)�s�result�ms r � _get_versionsr!sY�� �F� � &� &�q� )� )�)�)��� � �b������A��'�'�(�(�(�(� �v�;�;�rc �N�eZdZdZd�d�d�d�d�d�d�d �d �d �d �d �d� Zd�ZdS)� Evaluatorz; This class is used to evaluate marker expessions. c��||kS�N���x�ys r �zEvaluator.-� ��1��6�rc��||kSrrr s r r#zEvaluator..s ��A��F�rc��||kp||kSrrr s r r#zEvaluator./s��1��6�?�Q��U�rc��||kSrrr s r r#zEvaluator.0r$rc��||kSrrr s r r#zEvaluator.1� ��1�q�5�rc��||kp||kSrrr s r r#zEvaluator.2���A��F�O�a�!�e�rc��||kSrrr s r r#zEvaluator.3r)rc��||kp||kSrrr s r r#zEvaluator.4r+rc� �|o|Srrr s r r#zEvaluator.5s ��A�G�!�rc� �|p|Srrr s r r#zEvaluator.6s ��1�6��rc� �||vSrrr s r r#zEvaluator.7s ��1��6�rc� �||vSrrr s r r#zEvaluator.8s ��q��z�r) �==�===�~=�!=�<�<=�>�>=�and�or�in�not inc���t|t��r6|ddvr |dd�}�nF||vrtd|z���||}�n&t|t��sJ�|d}||jvrt d|z���|d}|d }t |d��r-t |d ��rtd |�d |�d |�����|�||��}|�||��}|d ks|d kr#|d vrt|��}t|��}n(|d kr"|dvrt|��}t|��}|j|||��}|S)z� Evaluate a marker expression returned by the :func:`parse_requirement` function in the specified context. rr r�����zunknown variable: %s�opzop not implemented: %s�lhs�rhszinvalid comparison: � �python_version)r6r7r8r9r3r2r5r4)r<r=) r r� SyntaxError�dict� operations�NotImplementedErrorr�evaluaterr) �self�expr�contextrr@�elhs�erhsrArBs r rIzEvaluator.evaluate;s��� �d�L� )� )� 3��A�w�%����a��d�����w�&�&�%�&<�t�&C�D�D�D� ������d�D�)�)� )� )�)��d��B����(�(�)�*B�R�*G�H�H�H���;�D���;�D��4��;�'�'� U�K��U� �,D�,D� U�!�k�D�D�D�"�"�"�d�d�"S�T�T�T��-�-��g�.�.�C��-�-��g�.�.�C��)�)�)�T�5E�-E�-E��E�E�E���g�g����g�g����)�)�)�b�4D�.D�.D���g�g��#�C�(�(��(�T�_�R�(��c�2�2�F�� rN)�__name__� __module__� __qualname__�__doc__rGrIrrr rr's��������� "�!�"�"�*�*�!�!� � �+�+� � �+�+�#�#�!�!�!�!�)�)� � �J� � � � � rrc � �d�}ttd��r,|tjj��}tjj}nd}d}||t jt j��t j��t j ��t j ��t j��tt����t j ��t j ��dd�tjd� }|S)Nc��|j�d|j�d|j��}|j}|dkr ||dt |j��zz }|S)N�.�finalr)�major�minor�micro� releaselevel�str�serial)�info�version�kinds r �format_full_versionz,default_context..format_full_version^sQ�� $� � � �D�J�J�J�� � �C��� �� �7�?�?� �t�A�w��T�[�!1�!1�1� 1�G��r�implementation�0��) �implementation_name�implementation_version�os_name�platform_machine�platform_python_implementation�platform_release�platform_system�platform_version�platform_in_venv�python_full_versionrD� sys_platform)�hasattr�sysrar^�name�os�platform�machine�python_implementation�release�systemr[rrD)r`rfrers r �default_contextry]s�������s�$�%�%�!�!4�!4�S�5G�5O�!P�!P��!�0�5���!$�� �� 3�"8��7�$�,�.�.�*2�*H�*J�*J�$�,�.�.�#�?�,�,�$�,�.�.��� � �N�N�'�6�8�8�"�1�3�3�B�Q�B�7�� � � �F� �Mrc�J� t|��\}}n'#t$r}td|�d|�����d}~wwxYw|r!|ddkrtd|�d|�����tt��}|r|�|��t �||��S)z� Interpret a marker and return a result depending on environment. :param marker: The marker to interpret. :type marker: str :param execution_context: The context used for name lookup. :type execution_context: mapping z#Unable to interpret marker syntax: z: Nr�#z$unexpected trailing data in marker: )r� ExceptionrErF�DEFAULT_CONTEXT�update� evaluatorrI)�marker�execution_contextrK�rest�erLs r rr�s���U�!�&�)�)� ��d�d�� �U�U�U��k����QR�QR�S�T�T�T�����U���� �Y��Q��3����k�&�&�&�RV�RV�W�X�X�X��?�#�#�G��*����(�)�)�)� � � �d�G� ,� ,�,s�� 9�4�9r)rRrs�rerqrt�compatr�utilrrr^rr�__all__�compilerrr�objectrryr}rrrrr �r�s���� � � � � � � � � � � � ����� � � � � � �'�'�'�'�'�'�'�'�,�,�,�,�,�,� �-���2�:�]�^�^����� ��� 4�4�4�4�4��4�4�4�l���>"�/�#�#��� �I�K�K� �-�-�-�-�-�-r