
     d                         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j        d          Zd	 Zd
 Z G d de          Z ej        d          Zd Z e            Z[ e            Z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                 H    t          | t                    r| sdS | d         dv S )NFr   '")
isinstancer   )os    dC:\Users\ChattiNader\Documents\MyHotelMatch\api\dev\Lib\site-packages\pip/_vendor/distlib/markers.py_is_literalr      s.    a&& a uQ45=    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;;r   c                   N    e Zd ZdZd d d d d d d d	 d
 d d d dZd ZdS )	Evaluatorz;
    This class is used to evaluate marker expessions.
    c                     | |k    S N xys     r   <lambda>zEvaluator.<lambda>-   
    16 r   c                     | |k    S r   r   r    s     r   r#   zEvaluator.<lambda>.   s
    AF r   c                     | |k    p| |k    S r   r   r    s     r   r#   zEvaluator.<lambda>/   s    16?QU r   c                     | |k    S r   r   r    s     r   r#   zEvaluator.<lambda>0   r$   r   c                     | |k     S r   r   r    s     r   r#   zEvaluator.<lambda>1   
    1q5 r   c                     | |k    p| |k     S r   r   r    s     r   r#   zEvaluator.<lambda>2       AFOa!e r   c                     | |k    S r   r   r    s     r   r#   zEvaluator.<lambda>3   r)   r   c                     | |k    p| |k    S r   r   r    s     r   r#   zEvaluator.<lambda>4   r+   r   c                 
    | o|S r   r   r    s     r   r#   zEvaluator.<lambda>5   s
    AG! r   c                 
    | p|S r   r   r    s     r   r#   zEvaluator.<lambda>6   s
    16 r   c                 
    | |v S r   r   r    s     r   r#   zEvaluator.<lambda>7   s
    16 r   c                 
    | |vS r   r   r    s     r   r#   zEvaluator.<lambda>8   s
    qz r   )=====~=!=<<=>>=andorinnot inc                    t          |t                    r6|d         dv r|dd         }nF||vrt          d|z            ||         }n&t          |t                    sJ |d         }|| j        vrt          d|z            |d         }|d	         }t          |d                   r-t          |d	                   rt          d
|d|d|          |                     ||          }|                     ||          }|dk    s|dk    r#|dv rt          |          }t          |          }n(|dk    r"|dv 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:  python_version)r6   r7   r8   r9   r3   r2   r5   r4   )r<   r=   )
r   r   SyntaxErrordict
operationsNotImplementedErrorr   evaluater   r   )	selfexprcontextr   r@   elhserhsrA   rB   s	            r   rI   zEvaluator.evaluate;   s   
 dL)) 	3Aw%adw&&%&<t&CDDD dD)))))dB(()*BR*GHHH;D;D4;'' UKU,D,D U!kDDD"""dd"STTT--g..C--g..C)))T5E-E-EEEEgggg)))b4D.D.Dgg#C(((T_R(c22Fr   N)__name__
__module____qualname____doc__rG   rI   r   r   r   r   r   '   s         
 "!""**!!  ++  ++##!!!!)) J         r   r   z\d+\.\d+c                  <   d } t          t          d          r, | t          j        j                  }t          j        j        }nd}d}t          j                    }t                              |          }|	                    d          }||t          j        t          j                    t          j                    t          j                    t          j                    t          j                    t          t!                                ||t          j        d}|S )Nc                     | j         d| j        d| j        }| j        }|dk    r ||d         t	          | j                  z   z  }|S )N.finalr   )majorminormicroreleaselevelstrserial)infoversionkinds      r   format_full_versionz,default_context.<locals>.format_full_version`   sQ     $


DJJJ

C 7??tAwT[!1!111Gr   implementation0 r   )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sysra   r^   nameplatformrD   _DIGITSmatchgrouposmachinepython_implementationreleasesystemr[   r   )r`   re   rd   ppvr   pvr   s          r   default_contextr}   _   s       s$%% !!4!4S5G5O!P!P!05!$ 

!
#
#CcA	
B2"87$,..*2*H*J*J$,..#?,,$,..		NN" F Mr   c                 J   	 t          |           \  }}n'# t          $ r}t          d| d|          d}~ww xY w|r!|d         dk    rt          d| d|          t          t                    }|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   	ExceptionrE   rF   DEFAULT_CONTEXTupdate	evaluatorrI   )markerexecution_contextrK   resterL   s         r   r   r      s    U!&))
dd U U UkQRQRSTTTU YQ3k&&&RVRVWXXX?##G *()))dG,,,s    
949r   )rR   rv   rerp   rr   compatr   utilr   r   r^   r   r   __all__compiler   r   r   objectr   rs   r}   r   r   r   r   r   r   <module>r      s2    
			 				 



              ' ' ' ' ' ' ' ' , , , , , ,-2:]^^   
  4 4 4 4 4 4 4 4l "*[
!
!     D "/##IKK	- - - - - -r   