Re@sdZddlZddlZddlZddlZddlmZmZddlm Z dgZ Gddde Z dd dZ dS) zEParser for the environment markers micro-language defined in PEP 345.N)python_implementation string_types)in_venv interpretc@seZdZdZi ddd6ddd6ddd6d dd 6d dd 6d dd6ddd6ddd6ddd6Zi ejd6dejddd6ejj dddd6e j d6e e d6ejd 6ejd!6ejd"6ed#6Zdd$d%Zd&d'Zd(d)Zdd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9ZdS): Evaluatorz5 A limited evaluator for Python expressions. cCs ||kS)N)xyrr6/tmp/pip-ztkk0jow-build/pip/_vendor/distlib/markers.pyszEvaluator.eqcCs ||kS)Nr)r r rrr r sgtcCs ||kS)Nr)r r rrr r sZgtecCs ||kS)Nr)r r rrr r sincCs ||kS)Nr)r r rrr r sltcCs ||kS)Nr)r r rrr r sZltecCs| S)Nr)r rrr r snotcCs ||kS)Nr)r r rrr r !sZnoteqcCs ||kS)Nr)r r rrr r "snotin sys_platformz%s.%sNpython_version rrpython_full_versionos_nameZplatform_in_venvZplatform_releaseplatform_versionplatform_machineZplatform_python_implementationcCs|p i|_d|_dS)zu Initialise an instance. :param context: If specified, names are looked up in this mapping. N)contextsource)selfrrrr __init__3szEvaluator.__init__cCsKd}d|j|||}||t|jkrG|d7}n|S)zH Get the part of the source which is causing a problem. z%rz...)rlen)roffsetZ fragment_lensrrr get_fragment<s  zEvaluator.get_fragmentcCst|d|dS)z@ Get a handler for the specified AST node type. zdo_%sN)getattr)r node_typerrr get_handlerFszEvaluator.get_handlercCst|tr||_idd6}|r8||d.sanity_checkTzunsupported operation: %r) leftr6zipops comparatorsr.r/r0 operatorsr-) rr2rLrJZlhsrArDrKZrhsr)r2rr do_compares  "  zEvaluator.do_comparecCs|j|jS)N)r6body)rr2rrr do_expressionszEvaluator.do_expressioncCs|d}|j|jkr1d}|j|j}n+|j|jkr\d}|j|j}n|sxtd|jn|S)NFTzinvalid expression: %s)r:rr>r-)rr2r?rArrr do_nameszEvaluator.do_namecCs|jS)N)r")rr2rrr do_strszEvaluator.do_str)r/ __module__ __qualname____doc__rQsysplatform version_infoversionsplitosnamestrrreleasemachinerr>rr#r&r6r<rBrHrRrTrUrVrrrr rs@                     rcCst|j|jS)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 )rr6strip)markerZexecution_contextrrr rs )rYr+r_rZr[compatrrutilr__all__objectrrrrrr s