3 ƒ”Re#ã@sŠdZddlZddlZddlZddlZddlmZmZmZddl m Z m Z dgZ dd„Z Gd d „d eƒZd d „ZeƒZ[eƒZdd d„ZdS)zG Parser for the environment markers micro-language defined in PEP 508. éNé)Úpython_implementationÚurlparseÚ string_types)Úin_venvÚ parse_markerÚ interpretcCs"t|tƒ s| rdS|ddkS)NFrz'")Ú isinstancer)Úo©r úŠ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el9.x86_64/opt/alt/python36/lib/python3.6/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 Ú$szEvaluator.cCs||kS)Nr )rrr r r r%scCs||kp||kS)Nr )rrr r r r&scCs||kS)Nr )rrr r r r'scCs||kS)Nr )rrr r r r(scCs||kp||kS)Nr )rrr r r r)scCs||kS)Nr )rrr r r r*scCs||kp||kS)Nr )rrr r r r+scCs|o|S)Nr )rrr r r r,scCs|p|S)Nr )rrr r r r-scCs||kS)Nr )rrr r r r.scCs||kS)Nr )rrr r r r/s) z==z===z~=z!=úz>=ÚandÚorÚinznot inc CsÔt|tƒrB|ddkr$|dd …}qÐ||kr8td|ƒ‚||}nŽt|tƒsPt‚|d}||jkrntd|ƒ‚|d}|d}t|dƒr¨t|dƒr¨td |||fƒ‚|j||ƒ}|j||ƒ}|j|||ƒ}|S) zƒ Evaluate a marker expression returned by the :func:`parse_requirement` function in the specified context. rz'"rzunknown variable: %sÚopzop not implemented: %sÚlhsÚrhszinvalid comparison: %s %s %séÿÿÿÿ) r rÚ SyntaxErrorÚdictÚAssertionErrorÚ operationsÚNotImplementedErrorr Úevaluate) ÚselfÚexprÚcontextÚresultrZelhsZerhsrrr r r r 2s$        zEvaluator.evaluateN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr r r r r rs rc Cs€dd„}ttdƒr(|tjjƒ}tjj}nd}d}||tjtjƒtjƒtj ƒtj ƒtjƒt t ƒƒtj ƒtj ƒ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_versionNs 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Úsysr4r1ÚnameÚosÚplatformÚmachinerÚreleaseÚsystemr.rrA)r3r9r8r$r r r Údefault_contextMs&    rKcCs†yt|ƒ\}}Wn2tk rB}ztd||fƒ‚WYdd}~XnX|rd|ddkrdtd||fƒ‚ttƒ}|rz|j|ƒtj||ƒ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 rqs " )N)r(rFrDrGÚreÚcompatrrrÚutilrrÚ__all__r ÚobjectrrKrNrPrr r r r Ú s/