a oe @sUddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZmZmZmZddlmZddlmZmZddlmZgdZeeegefZGd d d eZ Gd d d eZ!Gd ddeZ"eedddZ#d.e eee efe eedddZ$ddddej%ej&ej'ej(ej)ej*dZ+eeefe,d<eeeedddZ-eee edfdd d!Z.eeeefed"d#d$Z/d%ed&d'd(Z0eeefd)d*d+Z1Gd,d-d-Z2dS)/N)AnyCallableDictListOptionalTupleUnion) MarkerAtom MarkerListOpValueVariable parse_marker)ParserSyntaxError)InvalidSpecifier Specifiercanonicalize_name) InvalidMarkerUndefinedComparisonUndefinedEnvironmentNameMarkerdefault_environmentc@seZdZdZdS)rzE An invalid marker was found, users should refer to PEP 508. N__name__ __module__ __qualname____doc__rrEC:\Program Files\Certbot\pkgs\setuptools\_vendor\packaging\markers.pyr"src@seZdZdZdS)rzP An invalid operation was attempted on a value that doesn't support it. Nrrrrr r(src@seZdZdZdS)rz\ A name was attempted to be used that does not exist inside of the environment. Nrrrrr r.sr)resultsreturncCs|t|dtrx|d\}}}t|trD|jdkrDt|j}t|}n&t|trj|jdkrjt|j}t|}|||f|d<|S)z! Normalize extra values. rextra) isinstancetuplervaluerr )r!lhsoprhsZnormalized_extrarrr _normalize_extra_values5s   r*T)markerfirstr"cCst|tttfsJt|trHt|dkrHt|dttfrHt|dSt|trdd|D}|rnd|Sdd|dSn"t|trddd |DS|SdS) Nr rcss|]}t|ddVqdS)F)r,N)_format_marker.0mrrr Wz!_format_marker.. ()cSsg|] }|qSr) serializer.rrr ]r2z"_format_marker..)r$listr%strlenr-join)r+r,innerrrr r-Es      r-cCs||vSNrr'r)rrr cr2r?cCs||vSr=rr>rrr r?dr2)inznot in=> _operators)r'r(r)r"cCsxztd||g}Wnty,Yn0|j|ddSt|}|durntd|d|d|d|||S)NT)Z prereleasesz Undefined z on z and .)rr;r6rcontainsrCgetr)r'r(r)specZoperrrr _eval_opns rI.)valueskeyr"cGs|dkrtdd|DS|S)Nr#css|]}t|VqdSr=r)r/vrrr r1r2z_normalize..)r%)rKrJrrr _normalize}srM)markers environmentr"c Csgg}|D]}t|tttfs"Jt|trB|dt||q t|tr|\}}}t|trv|j}||}|j} n|j}|j}||} t|| |d\}} |dt ||| q |dvsJ|dkr |gq t dd|DS)N)rK)andorrRcss|]}t|VqdSr=)all)r/itemrrr r1r2z$_evaluate_markers..) r$r8r%r9append_evaluate_markersrr&rMrIany) rNrOgroupsr+r'r(r)Zenvironment_keyZ lhs_valueZ rhs_valuerrr rVs(      rVzsys._version_info)infor"cCs2d|}|j}|dkr.||dt|j7}|S)Nz{0.major}.{0.minor}.{0.micro}finalr)format releaselevelr9serial)rYversionkindrrr format_full_versions  r`r"cCs^ttjj}tjj}||tjttt tt t d t ddtjd S)NrE) implementation_nameZimplementation_versionZos_nameZplatform_machineZplatform_releaseZplatform_systemplatform_versionZpython_full_versionZplatform_python_implementationpython_versionZ sys_platform)r`sysimplementationr^nameosplatformmachinereleasesystemreZpython_implementationr;Zpython_version_tuple)Ziverrcrrr rs rc@steZdZeddddZedddZeddd Zedd d Ze e d d dZ de e eefe dddZdS)rN)r+r"c CsJztt||_Wn2tyD}ztt||WYd}~n d}~00dSr=)r* _parse_marker_markersrrr9)selfr+errr __init__szMarker.__init__racCs t|jSr=)r-rorprrr __str__szMarker.__str__cCs d|dS)Nz rrsrrr __repr__szMarker.__repr__cCst|jjt|fSr=)hash __class__rr9rsrrr __hash__szMarker.__hash__)otherr"cCst|tstSt|t|kSr=)r$rNotImplementedr9)rpryrrr __eq__s z Marker.__eq__)rOr"cCs@t}d|d<|dur4|||ddur4d|d<t|j|S)a$Evaluate a marker. Return the boolean from evaluating the given marker against the environment. environment is an optional argument to override all or part of the determined environment. The environment is determined from the current Python process. rDr#N)rupdaterVro)rprOZcurrent_environmentrrr evaluates   zMarker.evaluate)N)rrrr9rrrtruintrxrboolr{rrr}rrrr rs r)T)3operatorrirjrftypingrrrrrrrZ_parserr r r r rrrnZ _tokenizerrZ specifiersrrZutilsr__all__r9rZOperator ValueErrorrrrr*r-ltleeqnegegtrC__annotations__rIrMrVr`rrrrrr sD $