a ?&Nb@sddlmZmZmZddlZddlZddlZddlmZm Z m Z m Z m Z mZmZmZmZmZddlmZddlmZmZddlmZmZmZejddkrdd lmZnddlZerdd l m!Z!m Z"m#Z#Gd d d e$Z%eej&ej'Z(e d )Z*e d)Z+e d)Z,e d)Z-e d)Z.e d)Z/e d)Z0edZ1e(ee1e(BZ2ee(ee2Z3e3dZ4e3Z5e ddZ6e0e6Z7e5ee.e5Z8e*e e8e+dZ9e ej:ej;eje=e>AZ?ee?ee.e?ddddZ@e e,e@e-e@BZAeABddeeAdZCeCBddeed ZeBd!de/ZDeDeZEeCe eEZFe7e eEZGe4e e9eGeFBZHeeHeZIeIJd"Gd#d$d$eKZLdS)%)absolute_importdivisionprint_functionN) CombineLiteralOptionalParseExceptionRegexWord ZeroOrMoreoriginalTextFor stringEnd stringStart) TYPE_CHECKING) MARKER_EXPRMarker)LegacySpecifier Specifier SpecifierSet)parse)ListrSetc@seZdZdZdS)InvalidRequirementzJ An invalid requirement was found, users should refer to PEP 508. N)__name__ __module__ __qualname____doc__rr:/usr/lib/python3.9/site-packages/packaging/requirements.pyr%sr[](),;@z-_.namez[^ ]+urlextrasF)Z joinStringZadjacent _raw_speccCs |jpdS)N)r+sltrrr Jr1 specifiercCs|dS)Nrrr-rrr r1Mr2markercCst||j|jS)N)rZ_original_startZ _original_endr-rrr r1Qr2zx[]c@s(eZdZdZddZddZddZdS) RequirementzParse 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. c Cszt|}WnFtyT}z.td||j|jd|jWYd}~n d}~00|j|_|jrt |j}|j dkrt ||jkrtdn(|j r|j r|j s|j std|j|j|_nd|_t |jr|jng|_t|j|_|jr|jnd|_dS)NzParse error at "{0!r}": {1}filezInvalid URL givenzInvalid URL: {0}) REQUIREMENT parseStringrrformatlocmsgr(r)urlparsescheme urlunparsenetlocsetr*ZasListrr3r4)selfZrequirement_stringZreqeZ parsed_urlrrr __init__ns2      zRequirement.__init__cCs|jg}|jr*|ddt|j|jr@|t|j|jrh|d|j|j rh|d|j r|d|j d|S)Nz[{0}]r%z@ {0} z; {0}r,) r(r*appendr:joinsortedr3strr)r4)rBpartsrrr __str__s zRequirement.__str__cCsdt|S)Nz)r:rI)rBrrr __repr__szRequirement.__repr__N)rrrrrDrKrLrrrr r5as r5)MZ __future__rrrrestringsysZ pyparsingrrLrrr r r r r rZ_typingrZmarkersrrZ specifiersrrr version_infoZurllibrr=typingrZ TOptionalr ValueErrorr ascii_lettersdigitsZALPHANUMsuppressZLBRACKETZRBRACKETZLPARENZRPARENCOMMAZ SEMICOLONATZ PUNCTUATIONZIDENTIFIER_ENDZ IDENTIFIERNAMEZEXTRAZURIZURLZ EXTRAS_LISTZEXTRASZ _regex_strVERBOSE IGNORECASEZVERSION_PEP440ZVERSION_LEGACYZ VERSION_ONEZ VERSION_MANYZ _VERSION_SPECZsetParseActionZ VERSION_SPECZMARKER_SEPARATORZMARKERZVERSION_AND_MARKERZURL_AND_MARKERZNAMED_REQUIREMENTr8r9objectr5rrrr sl0