Y@sddlmZmZmZddlZddlZddlZddlZddlm Z m Z m Z m Z ddlm Z mZmZmZddlmZddlmZddlmZmZd d d d d gZGdd d eZGdd d eZGdd d eZGdddeZGdddeZGdddeZ GdddeZ!ededBedBedBedBedBedBed Bed!Bed"Bed#Bed$Bed%Bed&Bed'Bed(Bed)Bed*BZ"d$d#d%d"d&dd'dd(dd)diZ#e"j$d+d,ed-ed.Bed/Bed0Bed1Bed2Bed3Bed4BZ%e%ed5Bed6BZ&e&j$d7d,ed8ed9BZ'e'j$d:d,ed;ed<BZ(e"e'BZ)ee)e&e)Z*e*j$d=d,ed>j+Z,ed?j+Z-eZ.e*ee,e.e-BZ/e.e/e e(e.>e e.e Z0d@dAZ1dBdCdDZ2d6dEd,d5dFd,d4ej3d0ej4d.ej5d1ej6d/ej7d3ej8iZ9dGdHZ:eZ;dIdJZ<dKdLZ=dMdNZ>dOd Z?GdPd d eZ@dS)Q)absolute_importdivisionprint_functionN)ParseException ParseResults stringStart stringEnd) ZeroOrMoreGroupForward QuotedString)Literal) string_types) SpecifierInvalidSpecifier InvalidMarkerUndefinedComparisonUndefinedEnvironmentNameMarkerdefault_environmentc@seZdZdZdS)rzE An invalid marker was found, users should refer to PEP 508. N)__name__ __module__ __qualname____doc__rr6/tmp/pip-build-3puug3g5/packaging/packaging/markers.pyrs c@seZdZdZdS)rzP An invalid operation was attempted on a value that doesn't support it. N)rrrrrrrrrs c@seZdZdZdS)rz\ A name was attempted to be used that does not exist inside of the environment. N)rrrrrrrrr%s c@s@eZdZddZddZddZddZd S) NodecCs ||_dS)N)value)selfrrrr__init__.sz Node.__init__cCs t|jS)N)strr)rrrr__str__1sz Node.__str__cCsdj|jjt|S)Nz <{0}({1!r})>)format __class__rr!)rrrr__repr__4sz Node.__repr__cCs tdS)N)NotImplementedError)rrrr serialize7szNode.serializeN)rrrr r"r%r'rrrrr,s    rc@seZdZddZdS)VariablecCs t|S)N)r!)rrrrr'=szVariable.serializeN)rrrr'rrrrr(;s r(c@seZdZddZdS)ValuecCs dj|S)Nz"{0}")r#)rrrrr'CszValue.serializeN)rrrr'rrrrr)As r)c@seZdZddZdS)OpcCs t|S)N)r!)rrrrr'Isz Op.serializeN)rrrr'rrrrr*Gs r*implementation_versionplatform_python_implementationimplementation_namepython_full_versionplatform_releaseplatform_versionplatform_machineplatform_systempython_version sys_platformos_namezos.namez sys.platformzplatform.versionzplatform.machinezplatform.python_implementationpython_implementationextracCsttj|d|dS)Nr)r(ALIASESget)sltrrrisr=z===z==z>=z<=z!=z~=>s z(_coerce_parse_result..) isinstancer)resultsrrrrHsrHTcCst|tttfstt|trft|dkrft|dttfrft|dSt|trdd|D}|rdj|Sddj|dSn-t|trdjdd |DS|SdS) Nrrcss!|]}t|ddVqdS)firstFN)_format_marker)rImrrr sz!_format_marker.. rFrGcSsg|]}|jqSr)r')rIrPrrrrKs z"_format_marker..)rLlistrErAssertionErrorlenrOjoin)markerrNinnerrrrrOs! rOcCs ||kS)Nr)lhsrhsrrrr=scCs ||kS)Nr)rYrZrrrr=sc Csy%tdj|j|g}Wntk r9YnX|j|Stj|j}|dkrtdj||||||S)Nz#Undefined {0!r} on {1!r} and {2!r}.) rrVr'rcontains _operatorsr9rr#)rYoprZspecoperrrr_eval_ops%   racCs7|j|t}|tkr3tdj||S)Nz/{0!r} does not exist in evaluation environment.)r9 _undefinedrr#) environmentnamerrrr_get_envs  rec Cs,gg}x |D]}t|tttfs4tt|tr`|djt||qt|tr|\}}}t|trt||j }|j }n|j }t||j }|djt |||q|dkst|dkr|jgqWt dd|DS) NrrCrDcss|]}t|VqdS)N)all)rIitemrrrrQsz$_evaluate_markers..rh)zandzor) rLrSrErrTappend_evaluate_markersr(rerraany) markersrcgroupsrWrYr^rZ lhs_value rhs_valuerrrrjs"      rjcCsCdj|}|j}|dkr?||dt|j7}|S)Nz{0.major}.{0.minor}.{0.micro}finalr)r# releaselevelr!serial)infoversionkindrrrformat_full_versions   rvcCsttdr0ttjj}tjj}n d}d}d|d|dtjdtjdtj d tj d tjd tj d tj d tj dddtji S)Nimplementation0r[r-r+r5r1r/r2r0r.r,r3r4) hasattrsysrvrwrtrdosplatformmachinereleasesystemr3r6)iverr-rrrrs        c@sCeZdZddZddZddZddd ZdS) rcCszyttj||_WnWtk ru}z7dj|||j|jd}t|WYdd}~XnXdS)Nz+Invalid marker: {0!r}, parse error at {1!r})rHMARKER parseString_markersrr#locr)rrWeerr_strrrrr s  zMarker.__init__cCs t|jS)N)rOr)rrrrr"szMarker.__str__cCsdjt|S)Nz)r#r!)rrrrr%szMarker.__repr__NcCs2t}|dk r"|j|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. N)rupdaterjr)rrccurrent_environmentrrrevaluate s   zMarker.evaluate)rrrr r"r%rrrrrrs    )A __future__rrroperatorr|r}r{ pyparsingrrrrr r r r r L_compatr specifiersrr__all__ ValueErrorrrrobjectrr(r)r*VARIABLEr8setParseAction VERSION_CMP MARKER_OP MARKER_VALUEBOOLOP MARKER_VAR MARKER_ITEMsuppressLPARENRPAREN MARKER_EXPR MARKER_ATOMrrHrOltleeqnegegtr]rarbrerjrvrrrrrrsx    ""     E