B
/ @ s d Z ddlZddlZddlZddlZddlmZ ddlmZm Z ddl
mZ dgZ
edZd d
Zdd ZG d
d deZedZdd Ze Z[e ZdddZdS )zG
Parser for the environment markers micro-language defined in PEP 508.
N )string_types)in_venvparse_marker)NormalizedVersion interpretz<((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")c C s t | tr| sdS | d dkS )NFr z'")
isinstancer )o r
@/opt/alt/python37/lib/python3.7/site-packages/distlib/markers.py_is_literal s r c C s6 g }x(t | D ]}|t| d qW t|S )Nr )_VERSION_PATTERNfinditerappendNVgroupsset)sresultmr
r
r
_get_versions! s r c
@ sf e Zd ZdZdd dd dd dd dd dd d d d
d dd dd d
d dd dZdd ZdS ) Evaluatorz;
This class is used to evaluate marker expessions.
c C s | |kS )Nr
)xyr
r
r - zEvaluator.c C s | |kS )Nr
)r r r
r
r r . r c C s | |kp| |kS )Nr
)r r r
r
r r / r c C s | |kS )Nr
)r r r
r
r r 0 r c C s | |k S )Nr
)r r r
r
r r 1 r c C s | |kp| |k S )Nr
)r r r
r
r r 2 r c C s | |kS )Nr
)r r r
r
r r 3 r c C s | |kp| |kS )Nr
)r r r
r
r r 4 r c C s | o|S )Nr
)r r r
r
r r 5 r c C s | p|S )Nr
)r r r
r
r r 6 r c C s | |kS )Nr
)r r r
r
r r 7 r c C s | |kS )Nr
)r r r
r
r r 8 r )z==z===z~=z!=z>=andorinznot inc C s" t |trB|d dkr$|dd }n||kr8td| || }nt |tsPt|d }|| jkrntd| |d }|d }t|d rt|d rtd
|||f | ||}| ||}|dks|dkr|dkrt |}t |}n$|dkr|d
krt |}t
|}| j| ||}|S )z
Evaluate a marker expression returned by the :func:`parse_requirement`
function in the specified context.
r z'"r zunknown variable: %sopzop not implemented: %slhsrhszinvalid comparison: %s %s %spython_version)r z<=r z>=z===z==z!=z~=)r znot in)r r SyntaxErrordictAssertionError
operationsNotImplementedErrorr evaluater r ) selfexprcontextr r" ZelhsZerhsr# r$ r
r
r r+ ; s2
zEvaluator.evaluateN)__name__
__module____qualname____doc__r) r+ r
r
r
r r ' s r z\d+\.\d+c
C s dd } t tdr(| tjj}tjj}nd}d}t }t|}| d}||t
jt t t
t t tt ||tjd}|S )Nc S s<