ž 7’ReŠc@sŽdZddlZddlZddlZddlZddlmZmZddlm Z dgZ Gdd„de ƒZ dd d„ZdS( uEParser for the environment markers micro-language defined in PEP 345.iNi(upython_implementationu string_types(uin_venvu interpretcBs¬|EeZdZdZi dd„d6dd„d6dd„d6d d„d 6d d„d 6d d„d6dd„d6dd„d6dd„d6Zi ejd6dejdd…d6ejj ddƒdd6e j d6e e ƒƒd6ejƒd 6ejƒd!6ejƒd"6eƒd#6Zdd$d%„Zd&d'„Zd(d)„Zdd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„ZdS(:u Evaluatoru5 A limited evaluator for Python expressions. cCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyusuEvaluator.ueqcCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyusugtcCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyusugtecCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyusuincCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyusultcCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyusultecCs| S(N((ux((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu sunotcCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu!sunoteqcCs ||kS(N((uxuy((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu"sunotinu sys_platformu%s.%sNiupython_versionu iiupython_full_versionuos_nameuplatform_in_venvuplatform_releaseuplatform_versionuplatform_machineuplatform_python_implementationcCs|p i|_d|_dS(uu Initialise an instance. :param context: If specified, names are looked up in this mapping. N(ucontextuNoneusource(uselfucontext((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu__init__3suEvaluator.__init__cCsKd}d|j|||…}||t|jƒkrG|d7}n|S(uH Get the part of the source which is causing a problem. i u%ru...(usourceulen(uselfuoffsetu fragment_lenus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu get_fragment<s  uEvaluator.get_fragmentcCst|d|dƒS(u@ Get a handler for the specified AST node type. udo_%sN(ugetattruNone(uselfu node_type((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu get_handlerFsuEvaluator.get_handlercCst|tƒr›||_idd6}|r8||d.sanity_checkuunsupported operation: %rT( uleftuevaluateuTrueuzipuopsu comparatorsu __class__u__name__uloweru operatorsu SyntaxError( uselfunodeu sanity_checkulhsnodeulhsuresultuopurhsnodeurhs((unodeuselfu4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu do_compare„s  "  uEvaluator.do_comparecCs|j|jƒS(N(uevaluateubody(uselfunode((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu do_expression’suEvaluator.do_expressioncCs|d}|j|jkr1d}|j|j}n+|j|jkr\d}|j|j}n|sxtd|jƒ‚n|S(Nuinvalid expression: %sFT(uFalseuiducontextuTrueuallowed_valuesu SyntaxError(uselfunodeuvaliduresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyudo_name₯suEvaluator.do_namecCs|jS(N(us(uselfunode((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyudo_str±suEvaluator.do_str(u__name__u __module__u __qualname__u__doc__u operatorsusysuplatformu version_infouversionusplituosunameustruin_venvureleaseumachineupython_implementationuallowed_valuesuNoneu__init__u get_fragmentu get_handleruevaluateu get_attr_keyu do_attributeu do_boolopu do_compareu do_expressionudo_nameudo_str(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu Evaluators@                    u EvaluatorcCst|ƒj|jƒƒS(uς 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 (u Evaluatoruevaluateustrip(umarkeruexecution_context((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyu interpret΅s (u__doc__uastuosusysuplatformucompatupython_implementationu string_typesuutiluin_venvu__all__uobjectu EvaluatoruNoneu interpret(((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/markers.pyus     ‘