<!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
    ÀÒ.e#  ã                   @   sŠ   d Z ddlZddlZddlZddlZddlmZmZmZ ddl	m
Z
mZ dgZdd„ ZG d	d
„ d
eƒ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é   )Úpython_implementationÚurlparseÚstring_types)Úin_venvÚparse_markerÚ	interpretc                 C   s   t | tƒr| sdS | d dkS )NFr   ú'")Ú
isinstancer   )Úo© r   ú?/usr/lib/python3.8/site-packages/pip/_vendor/distlib/markers.pyÚ_is_literal   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   '   r   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   *   r   c                 C   s   | |kp| |kS r   r   r   r   r   r   r   +   r   c                 C   s   | o|S r   r   r   r   r   r   r   ,   r   c                 C   s   | p|S r   r   r   r   r   r   r   -   r   c                 C   s   | |kS r   r   r   r   r   r   r   .   r   c                 C   s   | |kS r   r   r   r   r   r   r   /   r   )z==z===z~=z!=ú<z<=ú>z>=ÚandÚorÚinznot inc           	      C   sÔ   t |tƒrB|d dkr$|dd… }qÐ||kr8td| ƒ‚|| }nŽt |tƒsPt‚|d }|| jkrntd| ƒ‚|d }|d	 }t|d ƒr¨t|d	 ƒr¨td
|||f ƒ‚|  ||¡}|  ||¡}| 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)	r
   r   ÚSyntaxErrorÚdictÚAssertionErrorÚ
operationsÚNotImplementedErrorr   Úevaluate)	ÚselfÚexprÚcontextÚresultr   ZelhsZerhsr   r   r   r   r   r$   2   s$    


zEvaluator.evaluateN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   r$   r   r   r   r   r      s   ôr   c                  C   s€   dd„ } t tdƒr(| tjjƒ}tjj}nd}d}||tjt ¡ t ¡ t 	¡ t 
¡ t ¡ ttƒ ƒt ¡ t ¡ d d… 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ÚversionZkindr   r   r   Úformat_full_versionN   s
    z,default_context.<locals>.format_full_versionÚimplementationÚ0Ú é   )Úimplementation_nameÚimplementation_versionZos_nameZplatform_machineZplatform_python_implementationZplatform_releaseZplatform_systemZplatform_versionZplatform_in_venvZpython_full_versionÚpython_versionZsys_platform)ÚhasattrÚsysr7   r5   ÚnameÚosÚplatformÚmachiner   ÚreleaseÚsystemr2   r   r=   )r6   r<   r;   r(   r   r   r   Údefault_contextM   s(    

ôrF   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   Ú	Exceptionr   r    ÚDEFAULT_CONTEXTÚupdateÚ	evaluatorr$   )ZmarkerZexecution_contextr&   ÚrestÚer'   r   r   r   r   q   s    	"
)N)r,   rA   r?   rB   ÚreÚcompatr   r   r   Úutilr   r   Ú__all__r   Úobjectr   rF   rI   rK   r   r   r   r   r   Ú<module>   s   /