ôY¯ã@sbddlmZmZmZddlZddlZddlmZmZm Z m Z ddlm Z m Z m Z mZmZddlmZddlmZddlmZmZdd lmZmZmZGd d „d eƒZe ejejƒZ ed ƒj!ƒZ"ed ƒj!ƒZ#edƒj!ƒZ$edƒj!ƒZ%edƒj!ƒZ&edƒj!ƒZ'edƒj!ƒZ(e dƒZ)e e e)ƒe BZ*ee e e*ƒƒZ+e+dƒZ,e+Z-edƒdƒZ.e(e.Z/e-e e&e-ƒZ0e"e e0ƒe#dƒZ1eej2ej3ej4BƒZ5eej2ej3ej4BƒZ6e5e6AZ7ee7e e&e7ƒddddƒdƒZ8e e$e8e%e8BƒZ9e9j:dd„ƒe e9ƒdƒZ;e;j:dd„ƒe eƒƒd ƒZej:d!d„ƒe'Z<e<eZ=e;e e=ƒZ>e/e e=ƒZ?e,e e1ƒe?e>BZ@ee@eZAGd"d#„d#eBƒZCdS)$é)Úabsolute_importÚdivisionÚprint_functionN)Ú stringStartÚ stringEndÚoriginalTextForÚParseException)Ú ZeroOrMoreÚWordÚOptionalÚRegexÚCombine)ÚLiteral)Úparseé)Ú MARKER_EXPRÚMarker)ÚLegacySpecifierÚ SpecifierÚ SpecifierSetc@seZdZdZdS)ÚInvalidRequirementzJ An invalid requirement was found, users should refer to PEP 508. N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©rrú;/tmp/pip-build-3puug3g5/packaging/packaging/requirements.pyrs rú[ú]ú(ú)ú,ú;ú@z-_.Únamez[^ ]+ÚurlÚextrasÚ joinStringÚadjacentFÚ _raw_speccCs |jp dS)NÚ)r))ÚsÚlÚtrrrÚ6sr.Ú specifiercCs|dS)Nrr)r+r,r-rrrr.9sÚmarkercCst||j|j…ƒS)N)rÚ_original_startÚ _original_end)r+r,r-rrrr.=sc@s:eZdZdZdd„Zdd„Zdd„ZdS) Ú RequirementzÁParse a requirement. Parse a given requirement string into its parts, such as name, specifier, URL, and extras. Raises InvalidRequirement on a badly-formed requirement string. cCs.ytj|ƒ}WnNtk rc}z.tdj||j|jd…ƒƒ‚WYdd}~XnX|j|_|jrÍtj|jƒ}|j oš|j s²|j r¾|j r¾tdƒ‚|j|_n d|_t |j rñ|j j ƒngƒ|_ t|jƒ|_|jr!|jnd|_dS)Nz+Invalid requirement, parse error at "{0!r}"ézInvalid URL given)Ú REQUIREMENTÚ parseStringrrÚformatÚlocr$r%ÚurlparseÚschemeÚnetlocÚsetr&ÚasListrr/r0)ÚselfÚrequirement_stringÚreqÚeÚ parsed_urlrrrÚ__init__Xs"3    'zRequirement.__init__cCs­|jg}|jr=|jdjdjt|jƒƒƒƒ|jr\|jt|jƒƒ|jr~|jdj|jƒƒ|j r |jdj|j ƒƒdj|ƒS)Nz[{0}]r!z@ {0}z; {0}r*) r$r&Úappendr7ÚjoinÚsortedr/Ústrr%r0)r>ÚpartsrrrÚ__str__ms  (   zRequirement.__str__cCsdjt|ƒƒS)Nz)r7rG)r>rrrÚ__repr__~szRequirement.__repr__N)rrrrrCrIrJrrrrr3Ks   r3)DÚ __future__rrrÚstringÚreÚ pyparsingrrrrr r r r r rÚLZsix.moves.urllibrr9ÚmarkersrrÚ specifiersrrrÚ ValueErrorrÚ ascii_lettersÚdigitsÚALPHANUMÚsuppressÚLBRACKETÚRBRACKETÚLPARENÚRPARENÚCOMMAÚ SEMICOLONÚATÚ PUNCTUATIONÚIDENTIFIER_ENDÚ IDENTIFIERÚNAMEÚEXTRAÚURIÚURLÚ EXTRAS_LISTÚEXTRASÚ _regex_strÚVERBOSEÚ IGNORECASEÚVERSION_PEP440ÚVERSION_LEGACYÚ VERSION_ONEÚ VERSION_MANYÚ _VERSION_SPECÚsetParseActionÚ VERSION_SPECÚMARKER_SEPERATORÚMARKERÚVERSION_AND_MARKERÚURL_AND_MARKERÚNAMED_REQUIREMENTr5Úobjectr3rrrrÚsZ  "(