a a@szdZddlZddlZddlZddlmZddlmZmZdgZ ddZ Gd d d e Z d d Z e Z[ e Zdd dZdS)zG Parser for the environment markers micro-language defined in PEP 508. N) string_types)in_venv parse_marker interpretcCst|tr|sdS|ddvS)NFr'") isinstancer)or 3/usr/lib/python3.9/site-packages/distlib/markers.py _is_literalsr c @sfeZdZdZddddddddddddd dd dd dd dd dddd ZddZdS) Evaluatorz; This class is used to evaluate marker expessions. cCs||kSNr xyr r r #zEvaluator.cCs||kSrr rr r r r$rcCs||kp||kSrr rr r r r%rcCs||kSrr rr r r r&rcCs||kSrr rr r r r'rcCs||kp||kSrr rr r r r(rcCs||kSrr rr r r r)rcCs||kp||kSrr rr r r r*rcCs|o|Srr rr r r r+rcCs|p|Srr rr r r r,rcCs||vSrr rr r r r-rcCs||vSrr rr r r r.r) z==z===z~=z!=z>=andorinznot inc Cst|trB|ddvr$|dd}q||vr8td|||}nt|tsPJ|d}||jvrntd||d}|d }t|drt|d rtd |||f|||}|||}|j|||}|S) z Evaluate a marker expression returned by the :func:`parse_requirement` function in the specified context. rrrzunknown variable: %sopzop not implemented: %slhsrhszinvalid comparison: %s %s %s)rr SyntaxErrordict operationsNotImplementedErrorr evaluate) selfexprcontextresultrZelhsZerhsrrr r r r!1s$        zEvaluator.evaluateN)__name__ __module__ __qualname____doc__rr!r r r r r sr c Csdd}ttdr(|tjj}tjj}nd}d}||tjttt t tt t t t ddtjd }|S)NcSs<d|j|j|jf}|j}|dkr8||dt|j7}|S)Nz%s.%s.%sfinalr)majorminormicro releaselevelstrserial)infoversionkindr r r format_full_versionMs z,default_context..format_full_versionimplementation0) implementation_nameimplementation_versionZos_nameZplatform_machineZplatform_python_implementationZplatform_releaseZplatform_systemZplatform_versionZplatform_in_venvZpython_full_versionpython_versionZ sys_platform)hasattrsysr5r2nameosplatformmachineZpython_implementationreleasesystemr/rr;)r4r:r9r%r r r default_contextLs(   rDc Cszt|\}}Wn4tyD}ztd||fWYd}~n d}~00|rf|ddkrftd||ftt}|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: %s: %sNr#z*unexpected trailing data in marker: %s: %s)r ExceptionrrDEFAULT_CONTEXTupdate evaluatorr!)ZmarkerZexecution_contextr#rester$r r r rps & )N)r)r?r=r@compatrutilrr__all__r objectr rDrGrIrr r r r s /