U ʗRe@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z dgZ edZd d Zd d ZGd ddeZedZddZeZ[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|sdS|ddkS)NFr'") isinstancer)or /builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_vendor/distlib/markers.py _is_literalsr 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. cCs||kSNr xyr r r -zEvaluator.cCs||kSrr rr r r r.rcCs||kp||kSrr rr r r r/rcCs||kSrr rr r r r0rcCs||kSrr rr r r r1rcCs||kp||kSrr rr r r r2rcCs||kSrr rr r r r3rcCs||kp||kSrr rr r r r4rcCs|o|Srr rr r r r5rcCs|p|Srr rr r r r6rcCs||kSrr rr r r r7rcCs||kSrr rr r r r8r) =====~=!=<<=>>=andorinnot inc Cs"t|trB|ddkr$|dd}n||kr8td|||}nt|tsPt|d}||jkrntd||d}|d }t|drt|d rtd |||f|||}|||}|d ks|d kr|d krt |}t |}n$|d kr|d krt |}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 rr"r!)r)r*) r r SyntaxErrordictAssertionError operationsNotImplementedErrorr evaluaterr) selfexprcontextrr,ZelhsZerhsr-r.r r r r5;s4         zEvaluator.evaluateN)__name__ __module__ __qualname____doc__r3r5r r r r r'srz\d+\.\d+c Csdd}ttdr(|tjj}tjj}nd}d}t}t|}| d}||t jt t t tttt||tjd }|S)NcSs<d|j|j|jf}|j}|dkr8||dt|j7}|S)Nz%s.%s.%sfinalr)majorminormicro releaselevelstrserial)infoversionkindr r r format_full_version`s z,default_context..format_full_versionimplementation0r) implementation_nameimplementation_versionos_nameplatform_machineplatform_python_implementationplatform_releaseplatform_systemplatform_versionZplatform_in_venvpython_full_versionr/ sys_platform)hasattrsysrHrEnameplatformr/_DIGITSmatchgrouposmachinepython_implementationreleasesystemrBr)rGrLrKZppvrpvrr r r default_context_s.     rbc Cszt|\}}Wn2tk rB}ztd||fW5d}~XYnX|rd|ddkrdtd||ftt}|rz||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 Exceptionr0r1DEFAULT_CONTEXTupdate evaluatorr5)markerZexecution_contextr7rester8r r r rs " )N)r<r\rerVrXcompatrutilrrrErr__all__compilerr robjectrrYrbrergrr r r r s$   6 "