<!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>

7Re  c               @   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 d d l m	 Z	 d g Z
 Gd d   d e  Z d d	 d  Z d S(
   uE   Parser for the environment markers micro-language defined in PEP 345.i    Ni   (   u   python_implementationu   string_types(   u   in_venvu	   interpretc             B   s¬  |  Ee  Z d  Z d Z i	 d d   d 6d d   d 6d d   d 6d	 d   d
 6d d   d 6d d   d 6d d   d 6d d   d 6d d   d 6Z i	 e j d 6d e j d d  d 6e j j	 d d  d d 6e
 j d 6e e    d 6e j   d  6e j   d! 6e j   d" 6e   d# 6Z d d$ d%  Z d& d'   Z d( d)   Z d d* d+  Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d8 d9   Z d S(:   u	   Evaluatoru5   
    A limited evaluator for Python expressions.
    c             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>   s    u   Evaluator.<lambda>u   eqc             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>   s    u   gtc             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>   s    u   gtec             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>   s    u   inc             C   s
   |  | k  S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>   s    u   ltc             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>   s    u   ltec             C   s   |  S(   N(    (   u   x(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>    s    u   notc             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>!   s    u   noteqc             C   s
   |  | k S(   N(    (   u   xu   y(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <lambda>"   s    u   notinu   sys_platformu   %s.%sNi   u   python_versionu    i   i    u   python_full_versionu   os_nameu   platform_in_venvu   platform_releaseu   platform_versionu   platform_machineu   platform_python_implementationc             C   s   | p	 i  |  _  d |  _ d S(   uu   
        Initialise an instance.

        :param context: If specified, names are looked up in this mapping.
        N(   u   contextu   Noneu   source(   u   selfu   context(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   __init__3   s    u   Evaluator.__init__c             C   sK   d } d |  j  | | |  } | | t |  j   k  rG | d 7} n  | S(   uH   
        Get the part of the source which is causing a problem.
        i
   u   %ru   ...(   u   sourceu   len(   u   selfu   offsetu   fragment_lenu   s(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   get_fragment<   s
    u   Evaluator.get_fragmentc             C   s   t  |  d | d  S(   u@   
        Get a handler for the specified AST node type.
        u   do_%sN(   u   getattru   None(   u   selfu	   node_type(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   get_handlerF   s    u   Evaluator.get_handlerc             C   s  t  | t  r | |  _ i d d 6} | r8 | | d <n  y t j | |  } Wq t k
 r } z' |  j | j  } t d |   WYd d } ~ Xq Xn  | j j	 j
   } |  j |  } | d k r|  j d k rΰ d } n |  j | j  } t d | | f   n  | |  S(   uf   
        Evaluate a source string or node, using ``filename`` when
        displaying errors.
        u   evalu   modeu   filenameu   syntax error %sNu   (source not available)u    don't know how to evaluate %r %s(   u
   isinstanceu   string_typesu   sourceu   astu   parseu   SyntaxErroru   get_fragmentu   offsetu	   __class__u   __name__u   loweru   get_handleru   Noneu
   col_offset(   u   selfu   nodeu   filenameu   kwargsu   eu   su	   node_typeu   handler(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   evaluateL   s&    	&	u   Evaluator.evaluatec             C   s5   t  | t j  s t d   d | j j | j f S(   Nu   attribute node expectedu   %s.%s(   u
   isinstanceu   astu	   Attributeu   AssertionErroru   valueu   idu   attr(   u   selfu   node(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   get_attr_keyf   s    u   Evaluator.get_attr_keyc             C   s   t  | j t j  s d } n- |  j |  } | |  j k pH | |  j k } | sd t d |   n  | |  j k r |  j | } n |  j | } | S(   Nu   invalid expression: %sF(	   u
   isinstanceu   valueu   astu   Nameu   Falseu   get_attr_keyu   contextu   allowed_valuesu   SyntaxError(   u   selfu   nodeu   validu   keyu   result(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   do_attributej   s    	u   Evaluator.do_attributec          	   C   sΌ   |  j  | j d  } | j j t j k } | j j t j k } | sR | sR t  | r^ | sk | rΈ | rΈ xJ | j d d   D]2 } |  j  |  } | r  | s­ | r | r Pq q Wn  | S(   Ni    i   (   u   evaluateu   valuesu   opu	   __class__u   astu   Oru   Andu   AssertionError(   u   selfu   nodeu   resultu   is_oru   is_andu   n(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu	   do_boolopx   s    u   Evaluator.do_boolopc       	         sΩ      f d d   }   j  }  j |  } d } x t   j   j  D] \ } } | | |  | j j j   } |  j	 k r t
 d |   n   j |  }  j	 | | |  } | sΕ Pn  | } | } qI W| S(   Nc                sb   d } t |  t j  r3 t | t j  r3 d } n  | s^  j   j  } t d |   n  d  S(   Nu   Invalid comparison: %sTF(   u   Trueu
   isinstanceu   astu   Stru   Falseu   get_fragmentu
   col_offsetu   SyntaxError(   u   lhsnodeu   rhsnodeu   validu   s(   u   nodeu   self(    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   sanity_check   s    $	u*   Evaluator.do_compare.<locals>.sanity_checku   unsupported operation: %rT(   u   leftu   evaluateu   Trueu   zipu   opsu   comparatorsu	   __class__u   __name__u   loweru	   operatorsu   SyntaxError(	   u   selfu   nodeu   sanity_checku   lhsnodeu   lhsu   resultu   opu   rhsnodeu   rhs(    (   u   nodeu   selfu4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu
   do_compare   s     	"
u   Evaluator.do_comparec             C   s   |  j  | j  S(   N(   u   evaluateu   body(   u   selfu   node(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   do_expression’   s    u   Evaluator.do_expressionc             C   s|   d } | j |  j k r1 d } |  j | j } n+ | j |  j k r\ d } |  j | j } n  | sx t d | j   n  | S(   Nu   invalid expression: %sFT(   u   Falseu   idu   contextu   Trueu   allowed_valuesu   SyntaxError(   u   selfu   nodeu   validu   result(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   do_name₯   s    u   Evaluator.do_namec             C   s   | j  S(   N(   u   s(   u   selfu   node(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   do_str±   s    u   Evaluator.do_str(   u   __name__u
   __module__u   __qualname__u   __doc__u	   operatorsu   sysu   platformu   version_infou   versionu   splitu   osu   nameu   stru   in_venvu   releaseu   machineu   python_implementationu   allowed_valuesu   Noneu   __init__u   get_fragmentu   get_handleru   evaluateu   get_attr_keyu   do_attributeu	   do_boolopu
   do_compareu   do_expressionu   do_nameu   do_str(   u
   __locals__(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu	   Evaluator   s@   

	
u	   Evaluatorc             C   s   t  |  j |  j    S(   uς   
    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
    (   u	   Evaluatoru   evaluateu   strip(   u   markeru   execution_context(    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu	   interpret΅   s    	(   u   __doc__u   astu   osu   sysu   platformu   compatu   python_implementationu   string_typesu   utilu   in_venvu   __all__u   objectu	   Evaluatoru   Noneu	   interpret(    (    (    u4   /tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu   <module>   s   	‘