ó `8(Zc@s‹dZddlZddlZddlZddlZddlmZmZddlm Z dgZ de fd„ƒYZ dd „ZdS( sEParser for the environment markers micro-language defined in PEP 345.iÿÿÿÿNi(tpython_implementationt string_types(tin_venvt interprett EvaluatorcBs^eZdZi d„d6d„d6d„d6d„d6d „d 6d „d 6d „d6d„d6d„d6Zi ejd6dejd d6ejjddƒdd6e j d6e e ƒƒd6ej ƒd6ejƒd6ejƒd6eƒd 6Zd,d!„Zd"„Zd#„Zd,d$„Zd%„Zd&„Zd'„Zd(„Zd)„Zd*„Zd+„ZRS(-s5 A limited evaluator for Python expressions. cCs ||kS(N((txty((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pytsteqcCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyRstgtcCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyRstgtecCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyRstincCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyRstltcCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyRstltecCs| S(N((R((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyR stnotcCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyR!stnoteqcCs ||kS(N((RR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyR"stnotint sys_platforms%s.%sitpython_versiont iitpython_full_versiontos_nametplatform_in_venvtplatform_releasetplatform_versiontplatform_machinetplatform_python_implementationcCs|p i|_d|_dS(su Initialise an instance. :param context: If specified, names are looked up in this mapping. N(tcontexttNonetsource(tselfR((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyt__init__3scCsHd}d|j|||!}||t|jƒkrD|d7}n|S(sH Get the part of the source which is causing a problem. i s%rs...(Rtlen(Rtoffsett fragment_lents((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyt get_fragment<s  cCst|d|dƒS(s@ Get a handler for the specified AST node type. sdo_%sN(tgetattrR(Rt node_type((s8/tmp/pip-build-0nEYGB/pip/pip/_vendor/distlib/markers.pyt get_handlerFscCst|tƒr‰||_idd6}|r8||ds     ¡