ó â\e[c@s¾dZddlZddlZddlZddlZddlmZmZmZddl m Z m Z dgZ d„Z defd „ƒYZd „ZeƒZ[eƒZdd „ZdS( sG Parser for the environment markers micro-language defined in PEP 508. iÿÿÿÿNi(tpython_implementationturlparset string_types(tin_venvt parse_markert interpretcCs)t|tƒ s| rtS|ddkS(Nis'"(t isinstanceRtFalse(to((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyt _is_literalst EvaluatorcBs•eZdZi d„d6d„d6d„d6d„d6d „d 6d „d 6d „d6d„d6d„d6d„d6d„d6d„d6Zd„ZRS(s; This class is used to evaluate marker expessions. cCs ||kS(N((txty((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyt$ss==cCs ||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR %ss===cCs||kp||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR &ss~=cCs ||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR 'ss!=cCs ||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR (stcCs||kp||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR +ss>=cCs |o |S(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR ,standcCs |p |S(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR -storcCs ||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR .stincCs ||kS(N((R R ((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR /ssnot inc Cs*t|tƒr[|ddkr/|dd!}q&||krNtd|ƒ‚n||}nËt|tƒspt‚|d}||jkrœtd|ƒ‚n|d}|d }t|dƒrìt|d ƒrìtd |||fƒ‚n|j||ƒ}|j||ƒ}|j|||ƒ}|S( sƒ Evaluate a marker expression returned by the :func:`parse_requirement` function in the specified context. is'"iiÿÿÿÿsunknown variable: %stopsop not implemented: %stlhstrhssinvalid comparison: %s %s %s( RRt SyntaxErrortdicttAssertionErrort operationstNotImplementedErrorR tevaluate( tselftexprtcontexttresultRtelhsterhsRR((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR2s$      (t__name__t __module__t__doc__RR(((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyR s            cCsàd„}ttdƒr9|tjjƒ}tjj}n d}d}i |d6|d6tjd6tjƒd6tjƒd 6tj ƒd 6tj ƒd 6tjƒd 6t t ƒƒd 6tj ƒd6tj ƒd d6tjd6}|S(NcSsSd|j|j|jf}|j}|dkrO||dt|jƒ7}n|S(Ns%s.%s.%stfinali(tmajortminortmicrot releaseleveltstrtserial(tinfotversiontkind((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pytformat_full_versionNs   timplementationt0ttimplementation_nametimplementation_versiontos_nametplatform_machinetplatform_python_implementationtplatform_releasetplatform_systemtplatform_versiontplatform_in_venvtpython_full_versionitpython_versiont sys_platform(thasattrtsysR0R-tnametostplatformtmachineRtreleasetsystemR*RR=(R/R4R3R((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pytdefault_contextMs(         cCs£yt|ƒ\}}Wn)tk rA}td||fƒ‚nX|rq|ddkrqtd||fƒ‚nttƒ}|r“|j|ƒntj||ƒS(sò 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 s)Unable to interpret marker syntax: %s: %sit#s*unexpected trailing data in marker: %s: %s(Rt ExceptionRRtDEFAULT_CONTEXTtupdatet evaluatorR(tmarkertexecution_contextRtrestteR((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyRqs  (R$RBR@RCtretcompatRRRtutilRRt__all__R tobjectR RGRJRLtNoneR(((s:/tmp/pip-install-0xiv62/pip/pip/_vendor/distlib/markers.pyt s      /