o
    xŸŽi5  ã                   @   s˜  d dl mZmZmZ d dlZd dlZd dlmZmZm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ d dlmZ ddlmZ dd	lmZmZ dd
lmZmZmZ erXd dlmZ G dd„ de ƒZ!eej"ej# ƒZ$edƒ %¡ Z&edƒ %¡ Z'edƒ %¡ Z(edƒ %¡ Z)edƒ %¡ Z*edƒ %¡ Z+edƒ %¡ Z,edƒZ-e$ee-ƒe$ B Z.ee$ee.ƒ ƒZ/e/dƒZ0e/Z1edƒdƒZ2e,e2 Z3e1ee*e1 ƒ Z4e&ee4ƒ e' dƒZ5eej6ej7ej8B ƒZ9eej6ej7ej8B ƒZ:e9e:A Z;ee;ee*e; ƒ ddd�dƒZ<ee(e< e) e<B ƒZ=e= >dd„ ¡ e	e=ƒdƒZ?e? >d d„ ¡ e	eƒ ƒd!ƒZe >d"d„ ¡ e+Z@e@e ZAe?eeAƒ ZBe3eeAƒ ZCe0ee5ƒ eCeBB  ZDeeD e ZEeE Fd#¡ G d$d%„ d%eGƒZHdS )&é    )Úabsolute_importÚdivisionÚprint_functionN)ÚstringStartÚ	stringEndÚoriginalTextForÚParseException)Ú
ZeroOrMoreÚWordÚOptionalÚRegexÚCombine)ÚLiteral)Úparseé   )ÚTYPE_CHECKING)ÚMARKER_EXPRÚMarker)ÚLegacySpecifierÚ	SpecifierÚSpecifierSet)ÚListc                   @   s   e Zd ZdZdS )ÚInvalidRequirementzJ
    An invalid requirement was found, users should refer to PEP 508.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úsC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\setuptools/_vendor/packaging/requirements.pyr      s    r   ú[ú]ú(ú)ú,ú;ú@z-_.Únamez[^ ]+ÚurlÚextrasF)Ú
joinStringÚadjacentÚ	_raw_specc                 C   s
   |j pdS )NÚ )r+   ©ÚsÚlÚtr   r   r   Ú<lambda>;   s   
 r1   Ú	specifierc                 C   s   |d S )Nr   r   r-   r   r   r   r1   >   s    Úmarkerc                 C   s   t | |j|j… ƒS )N)r   Ú_original_startÚ_original_endr-   r   r   r   r1   B   s    zx[]c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú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.
    c              
   C   s  zt  |¡}W n ty$ } ztd ||j|jd … |j¡ƒ‚d }~ww |j| _|jr]t	 	|j¡}|j
dkrDt	 |¡|jkrCtdƒ‚n|j
rP|jrP|j
sX|jsXtd |j¡ƒ‚|j| _nd | _t|jri|j ¡ ng ƒ| _t|jƒ| _|jr||j| _d S d | _d S )NzParse error at "{0!r}": {1}é   ÚfilezInvalid URL givenzInvalid URL: {0})ÚREQUIREMENTÚparseStringr   r   ÚformatÚlocÚmsgr&   r'   ÚurlparseÚschemeÚ
urlunparseÚnetlocÚsetr(   ÚasListr   r2   r3   )ÚselfÚrequirement_stringÚreqÚeÚ
parsed_urlr   r   r   Ú__init___   s8   ÿÿ€ÿ
ÿÿÿ
zRequirement.__init__c                 C   sŠ   | j g}| jr| d d t| jƒ¡¡¡ | jr | t| jƒ¡ | jr4| d | j¡¡ | j	r4| d¡ | j	r@| d | j	¡¡ d |¡S )Nz[{0}]r#   z@ {0}ú z; {0}r,   )
r&   r(   Úappendr;   ÚjoinÚsortedr2   Ústrr'   r3   )rD   Úpartsr   r   r   Ú__str__{   s   

zRequirement.__str__c                 C   s   d  t| ƒ¡S )Nz<Requirement({0!r})>)r;   rN   )rD   r   r   r   Ú__repr__�   s   zRequirement.__repr__N)r   r   r   r   rI   rP   rQ   r   r   r   r   r6   R   s
    r6   )IÚ
__future__r   r   r   ÚstringÚreZsetuptools.extern.pyparsingr   r   r   r   r	   r
   r   r   r   r   ÚLÚurllibr   r>   Z_typingr   Úmarkersr   r   Ú
specifiersr   r   r   Útypingr   Ú
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_SEPARATORÚMARKERÚVERSION_AND_MARKERÚURL_AND_MARKERÚNAMED_REQUIREMENTr9   r:   Úobjectr6   r   r   r   r   Ú<module>   sl   ÿþÿ
