<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    ʗRe                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZ dgZedZd	d
 Zdd ZG dd deZedZdd Ze Z[e ZdddZdS )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                 C   s   t | tr| sdS | d dkS )NFr   '")
isinstancer   )o r   /builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_vendor/distlib/markers.py_is_literal   s    r   c                 C   s2   g }t | D ]}|t| d  qt|S )Nr   )_VERSION_PATTERNfinditerappendNVgroupsset)sresultmr   r   r   _get_versions!   s    r   c                   @   sf   e Zd ZdZdd dd dd dd dd dd d	d d
d dd dd dd dd dZdd ZdS )	Evaluatorz;
    This class is used to evaluate marker expessions.
    c                 C   s   | |kS Nr   xyr   r   r   <lambda>-       zEvaluator.<lambda>c                 C   s   | |kS r   r   r   r   r   r   r   .   r   c                 C   s   | |kp| |kS r   r   r   r   r   r   r   /   r   c                 C   s   | |kS r   r   r   r   r   r   r   0   r   c                 C   s   | |k S r   r   r   r   r   r   r   1   r   c                 C   s   | |kp| |k S r   r   r   r   r   r   r   2   r   c                 C   s   | |kS r   r   r   r   r   r   r   3   r   c                 C   s   | |kp| |kS r   r   r   r   r   r   r   4   r   c                 C   s   | o|S r   r   r   r   r   r   r   5   r   c                 C   s   | p|S r   r   r   r   r   r   r   6   r   c                 C   s   | |kS r   r   r   r   r   r   r   7   r   c                 C   s   | |kS r   r   r   r   r   r   r   8   r   )=====~=!=<<=>>=andorinnot inc           	      C   s"  t |trB|d dkr$|dd }n||kr8td| || }nt |tsPt|d }|| jkrntd| |d }|d	 }t|d rt|d	 rtd
|||f | ||}| ||}|dks|dkr|dkrt	|}t	|}n$|dkr|dkrt	|}t
|}| j| ||}|S )z
        Evaluate a marker expression returned by the :func:`parse_requirement`
        function in the specified context.
        r   r   r   zunknown variable: %sopzop not implemented: %slhsrhszinvalid comparison: %s %s %spython_version)r#   r$   r%   r&   r    r   r"   r!   )r)   r*   )r	   r   SyntaxErrordictAssertionError
operationsNotImplementedErrorr   evaluater   r   )	selfexprcontextr   r,   ZelhsZerhsr-   r.   r   r   r   r5   ;   s4    



zEvaluator.evaluateN)__name__
__module____qualname____doc__r3   r5   r   r   r   r   r   '   s   r   z\d+\.\d+c                  C   s   dd } t tdr(| tjj}tjj}nd}d}t }t|}|	d}||t
jt t t t t tt ||tjd}|S )Nc                 S   s<   d| j | j| jf }| j}|dkr8||d t| j 7 }|S )Nz%s.%s.%sfinalr   )majorminormicroreleaselevelstrserial)infoversionkindr   r   r   format_full_version`   s
    z,default_context.<locals>.format_full_versionimplementation0 r   )implementation_nameimplementation_versionos_nameplatform_machineplatform_python_implementationplatform_releaseplatform_systemplatform_versionZplatform_in_venvpython_full_versionr/   sys_platform)hasattrsysrH   rE   nameplatformr/   _DIGITSmatchgrouposmachinepython_implementationreleasesystemrB   r   )rG   rL   rK   Zppvr   pvr   r   r   r   default_context_   s.    



rb   c              
   C   s   zt | \}}W n2 tk
rB } ztd| |f W 5 d}~X Y nX |rd|d dkrdtd| |f tt}|rz|| 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: %s: %sNr   #z*unexpected trailing data in marker: %s: %s)r   	Exceptionr0   r1   DEFAULT_CONTEXTupdate	evaluatorr5   )markerZexecution_contextr7   rester8   r   r   r   r      s    	"
)N)r<   r\   rerV   rX   compatr   utilr   r   rE   r   r   __all__compiler   r   r   objectr   rY   rb   re   rg   r   r   r   r   r   <module>   s$   
6
"