a „oe× ã@svddlZddlmZmZmZmZddlmZ ddl m Z ddl m Z mZddlmZGdd „d eƒZGd d „d ƒZdS) éN)ÚAnyÚListÚOptionalÚSeté)Úparse_requirement)ÚParserSyntaxError)ÚMarkerÚ_normalize_extra_values)Ú SpecifierSetc@seZdZdZdS)ÚInvalidRequirementzJ An invalid requirement was found, users should refer to PEP 508. N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©rrúJC:\Program Files\Certbot\pkgs\setuptools\_vendor\packaging\requirements.pyr sr c@sZeZdZdZeddœdd„Zedœdd„Zedœd d „Zedœd d „Z e e d œdd„Z dS)Ú 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. N)Úrequirement_stringÚreturnc Cs z t|ƒ}Wn2ty>}ztt|ƒƒ|‚WYd}~n d}~00|j|_|jr´tj |j¡}|j dkr‚tj  |¡|jkrªtdƒ‚n(|j rš|j rš|j sª|j sªtd|j›�ƒ‚|j|_nd|_t |j rÈ|j ngƒ|_ t|jƒ|_d|_|jdu�rt t¡|_t|jƒ|j_dS)NÚfilezInvalid URL givenz Invalid URL: )Ú_parse_requirementrr ÚstrÚnameÚurlÚurllibÚparseÚurlparseÚschemeÚ urlunparseÚnetlocÚsetÚextrasr Ú specifierÚmarkerr Ú__new__r Z_markers)ÚselfrÚparsedÚeZ parsed_urlrrrÚ__init__!s0 $   ÿÿ    zRequirement.__init__)rcCs�|jg}|jr0d t|jƒ¡}| d|›d�¡|jrF| t|jƒ¡|jrn| d|j›�¡|jrn| d¡|jr†| d|j›�¡d |¡S)Nú,ú[ú]z@ ú z; Ú) rr"ÚjoinÚsortedÚappendr#rrr$)r&ÚpartsZformatted_extrasrrrÚ__str__;s zRequirement.__str__cCs d|›d�S)Nzr©r&rrrÚ__repr__OszRequirement.__repr__cCst|jjt|ƒfƒS©N)ÚhashÚ __class__r rr4rrrÚ__hash__RszRequirement.__hash__)ÚotherrcCsJt|tƒstS|j|jkoH|j|jkoH|j|jkoH|j|jkoH|j|jkSr6)Ú isinstancerÚNotImplementedrr"r#rr$)r&r:rrrÚ__eq__Us   ÿ þ ý ûzRequirement.__eq__) r rrrrr)r3r5Úintr9rÚboolr=rrrrrs  r)Ú urllib.parserÚtypingrrrrZ_parserrrZ _tokenizerrZmarkersr r Z specifiersr Ú ValueErrorr rrrrrÚs