3
W>p_#  ã               @   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ƒ s|  rdS | d dkS )NFr   z'")Ú
isinstancer   )Úo© r   ú„/home/aldo/Documentos/tesis/tesis/device auto/pruebas pulsar/pruebaclonado/envClonado/lib/python3.6/site-packages/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>$   s    zEvaluator.<lambda>c             C   s   | |kS )Nr   )r   r   r   r   r   r   %   s    c             C   s   | |kp| |kS )Nr   )r   r   r   r   r   r   &   s    c             C   s   | |kS )Nr   )r   r   r   r   r   r   '   s    c             C   s   | |k S )Nr   )r   r   r   r   r   r   (   s    c             C   s   | |kp| |k S )Nr   )r   r   r   r   r   r   )   s    c             C   s   | |kS )Nr   )r   r   r   r   r   r   *   s    c             C   s   | |kp| |kS )Nr   )r   r   r   r   r   r   +   s    c             C   s   | o|S )Nr   )r   r   r   r   r   r   ,   s    c             C   s   | p|S )Nr   )r   r   r   r   r   r   -   s    c             C   s   | |kS )Nr   )r   r   r   r   r   r   .   s    c             C   s   | |kS )Nr   )r   r   r   r   r   r   /   s    )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||ƒ}| j||ƒ}| j| ||ƒ}|S )zƒ
        Evaluate a marker expression returned by the :func:`parse_requirement`
        function in the specified context.
        r   z'"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jƒ tjƒ tj	ƒ tj
ƒ tjƒ ttƒ ƒtjƒ tjƒ 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ÚversionÚkindr   r   r   Úformat_full_versionN   s
    z,default_context.<locals>.format_full_versionÚimplementationÚ0Ú é   )Úimplementation_nameÚimplementation_versionÚos_nameÚplatform_machineÚplatform_python_implementationÚplatform_releaseÚplatform_systemÚplatform_versionZplatform_in_venvÚpython_full_versionÚpython_versionÚsys_platform)ÚhasattrÚsysr4   r1   ÚnameÚosÚplatformÚmachiner   ÚreleaseÚsystemr.   r   rA   )r3   r9   r8   r$   r   r   r   Údefault_contextM   s&    


rK   c             C   s†   yt | ƒ\}}W n2 tk
rB } ztd| |f ƒ‚W Y dd}~X nX |rd|d dkrdtd| |f ƒ‚ttƒ}|rz|j|ƒ tj||ƒ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    )ÚmarkerZexecution_contextr"   ÚrestÚer#   r   r   r   r   q   s    	"
)N)r(   rF   rD   rG   ÚreÚcompatr   r   r   Úutilr   r   Ú__all__r   Úobjectr   rK   rN   rP   r   r   r   r   r   Ú<module>	   s   /