
    .Ph,                        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	d
hZ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)LegacyVersion	interpretz<((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")python_versionpython_full_versionc                 >    t          | t                    o| t          v S N)
isinstancer   _VERSION_MARKERSss    O/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/distlib/markers.py_is_version_markerr      s    a&&@10@+@@    c                 H    t          | t                    r| sdS | d         dv S )NFr   '")r   r   )os    r   _is_literalr   "   s.    a&& a uQ45=r   c                 J    d t                               |           D             S )Nc                 \    h | ])}t          |                                d                    *S )r   )LVgroups).0ms     r   	<setcomp>z _get_versions.<locals>.<setcomp>)   s,    DDD!Bqxxzz!}DDDr   )_VERSION_PATTERNfinditerr   s    r   _get_versionsr!   (   s%    DD'7'@'@'C'CDDDDr   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 expressions.
    c                     | |k    S r    xys     r   <lambda>zEvaluator.<lambda>2   
    16 r   c                     | |k    S r   r%   r&   s     r   r)   zEvaluator.<lambda>3   s
    AF r   c                     | |k    p| |k    S r   r%   r&   s     r   r)   zEvaluator.<lambda>4       16?QU r   c                     | |k    S r   r%   r&   s     r   r)   zEvaluator.<lambda>5   r*   r   c                     | |k     S r   r%   r&   s     r   r)   zEvaluator.<lambda>6   
    !a% r   c                     | |k    p| |k     S r   r%   r&   s     r   r)   zEvaluator.<lambda>7   r-   r   c                     | |k    S r   r%   r&   s     r   r)   zEvaluator.<lambda>8   r0   r   c                     | |k    p| |k    S r   r%   r&   s     r   r)   zEvaluator.<lambda>9   r-   r   c                 
    | o|S r   r%   r&   s     r   r)   zEvaluator.<lambda>:   s
    AG! r   c                 
    | p|S r   r%   r&   s     r   r)   zEvaluator.<lambda>;   s
    16 r   c                 
    | |v S r   r%   r&   s     r   r)   zEvaluator.<lambda><   s
    16 r   c                 
    | |vS r   r%   r&   s     r   r)   zEvaluator.<lambda>=   s
    qz r   )=====~=!=<<=>>=andorinnot inc                    t          |t                    r6|d         dv r|dd         }na||vrt          d|z            ||         }nAt          |t                    sJ |d         }|| j        vrt          d|z            |d         }|d	         }t          |d                   r-t          |d	                   rt          d
|d|d|          |                     ||          }|                     ||          }t          |          st          |          r#|dv rt          |          }t          |          }n1t          |          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:  )r<   r=   r>   r?   r9   r8   r;   r:   )rB   rC   )r   r   SyntaxErrordict
operationsNotImplementedErrorr   evaluater   r   r!   )	selfexprcontextresultrF   elhserhsrG   rH   s	            r   rN   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#D)) )-?-E-E )IIIgggg#D)) )b4D.D.Dgg#C(((T_R(c22Fr   N)__name__
__module____qualname____doc__rL   rN   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_versionh   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_venvr
   r	   sys_platform)hasattrsysrg   rd   nameplatformr	   _DIGITSmatchgrouposmachinepython_implementationreleasesystemra   r   )rf   rk   rj   ppvr   pvrR   s          r   default_contextr   f   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   	ExceptionrJ   rK   DEFAULT_CONTEXTupdate	evaluatorrN   )markerexecution_contextrP   resterQ   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   )rX   r{   reru   rw   compatr   utilr   r   rd   r   r   __all__compiler   r   r   r   r!   objectr#   rx   r   r   r   r   r%   r   r   <module>r      sS    
			 				 



              ' ' ' ' ' ' ' ' ( ( ( ( ( (-2:]^^ $&;< A A A  E E E4 4 4 4 4 4 4 4n "*[
!
!! ! !H "/##IKK	- - - - - -r   