o ai}@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z dgZ edZd d Zd d ZGd ddeZddZeZ[eZdddZdS)zG Parser for the environment markers micro-language defined in PEP 508. N) string_types)in_venv parse_marker)NormalizedVersion interpretz<((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")cCst|tr|s dS|ddvS)NFr'") isinstancer)or /builddir/build/BUILDROOT/alt-python310-pip-21.3.1-5.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py _is_literals r cCs2g}t|D] }|t|dqt|S)Nr)_VERSION_PATTERNfinditerappendNVgroupsset)sresultmr r r _get_versions!src @sfeZdZdZddddddddddddd dd dd dd dd dddd ZddZdS) Evaluatorz; This class is used to evaluate marker expessions. cC||kSNr xyr r r -zEvaluator.cCrrr rr r r r.rcC||kp||kSrr rr r r r/cCs||kSrr rr r r r0rcCs||kSrr rr r r r1rcCs||kp||kSrr rr r r r2r!cCs||kSrr rr r r r3rcCr rr rr r r r4r!cCs|o|Srr rr r r r5rcCs|p|Srr rr r r r6rcCs||vSrr rr r r r7rcCs||vSrr rr r r r8r) =====~=!=<<=>>=andorinnot inc Cs"t|tr#|ddvr|dd}|S||vrtd|||}|St|ts*J|d}||jvr9td||d}|d }t|drVt|d rVtd |||f|||}|||}|d ksj|d krw|d vrwt|}t|}n|d kr|d vrt|}t |}|j|||}|S)z Evaluate a marker expression returned by the :func:`parse_requirement` function in the specified context. rrrzunknown variable: %sopzop not implemented: %slhsrhszinvalid comparison: %s %s %spython_version)r&r'r(r)r#r"r%r$)r,r-) r r SyntaxErrordict operationsNotImplementedErrorr evaluaterr) selfexprcontextrr/ZelhsZerhsr0r1r r r r7;s6         zEvaluator.evaluateN)__name__ __module__ __qualname____doc__r5r7r r r r r's  rc Csdd}ttdr|tjj}tjj}nd}d}||tjttt t tt t t t ddtjd }|S)NcSs<d|j|j|jf}|j}|dkr||dt|j7}|S)Nz%s.%s.%sfinalr)majorminormicro releaselevelstrserial)infoversionkindr r r format_full_version^s z,default_context..format_full_versionimplementation0) implementation_nameimplementation_versionos_nameplatform_machineplatform_python_implementationplatform_releaseplatform_systemplatform_versionZplatform_in_venvpython_full_versionr2 sys_platform)hasattrsysrJrGnameosplatformmachinepython_implementationreleasesystemrDrr2)rIrOrNrr r r default_context]s(   rac Cs|zt|\}}Wnty}ztd||fd}~ww|r-|ddkr-td||ftt}|r8||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 Exceptionr3r4DEFAULT_CONTEXTupdate evaluatorr7)markerZexecution_contextr9rester:r r r rs   r)r>r[rerYr\compatrutilrrrGrr__all__compilerr robjectrrardrfrr r r r s$   6