a  zeøã@szdZddlZddlZddlZddlmZddlmZmZdgZ dd„Z Gd d „d e ƒZ d d „Z e ƒZ[ e ƒZdd d„ZdS)zG Parser for the environment markers micro-language defined in PEP 508. éNé)Ú string_types)Úin_venvÚ parse_markerÚ interpretcCst|tƒr|sdS|ddvS)NFrú'")Ú isinstancer)Úo©r ú]/opt/bitninja-python-dojo/embedded/lib/python3.9/site-packages/pip/_vendor/distlib/markers.pyÚ _is_literalsr c @sfeZdZdZdd„dd„dd„dd„dd„dd„d d„d d„d d„d d„d d„dd„dœ Zdd„ZdS)Ú Evaluatorz; This class is used to evaluate marker expessions. cCs||kS©Nr ©ÚxÚyr 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>=ÚandÚorÚinznot inc CsÔt|tƒrB|ddvr$|dd…}qÐ||vr8td|ƒ‚||}nŽt|tƒsPJ‚|d}||jvrntd|ƒ‚|d}|d }t|dƒr¨t|d ƒr¨td |||fƒ‚| ||¡}| ||¡}|j|||ƒ}|S) zƒ Evaluate a marker expression returned by the :func:`parse_requirement` function in the specified context. rrréÿÿÿÿzunknown variable: %sÚopzop not implemented: %sÚlhsÚrhszinvalid comparison: %s %s %s)rrÚ SyntaxErrorÚdictÚ operationsÚNotImplementedErrorr Úevaluate) ÚselfÚexprÚcontextÚresultrZelhsZerhsrrr r r r!1s$        zEvaluator.evaluateN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr!r r r r r sôr c Cs€dd„}ttdƒr(|tjjƒ}tjj}nd}d}||tjt ¡t ¡t  ¡t  ¡t ¡t t ƒƒt  ¡t  ¡dd…tjdœ }|S)NcSs<d|j|j|jf}|j}|dkr8||dt|jƒ7}|S)Nz%s.%s.%sÚfinalr)ÚmajorÚminorÚmicroÚ releaselevelÚstrÚserial)ÚinfoÚversionÚkindr r r Úformat_full_versionMs z,default_context..format_full_versionÚimplementationÚ0Úé) Úimplementation_nameÚimplementation_versionÚos_nameÚplatform_machineÚplatform_python_implementationÚplatform_releaseÚplatform_systemÚplatform_versionZplatform_in_venvÚpython_full_versionÚpython_versionÚ sys_platform)ÚhasattrÚsysr5r2ÚnameÚosÚplatformÚmachineÚpython_implementationÚreleaseÚsystemr/rrB)r4r:r9r%r r r Údefault_contextLs(   ôrMc Csˆzt|ƒ\}}Wn4tyD}ztd||fƒ‚WYd}~n d}~00|rf|ddkrftd||fƒ‚ttƒ}|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Ú ExceptionrrÚDEFAULT_CONTEXTÚupdateÚ evaluatorr!)ÚmarkerZexecution_contextr#ÚrestÚer$r r r rps & )N)r)rGrErHÚcompatrÚutilrrÚ__all__r Úobjectr rMrPrRrr r r r Ús /