U
    +|jö  ã                   @   s°  d dl mZmZmZ d dlZd dlZd dlZd dlmZm	Z
mZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ ddlmZmZmZ ejd  dkr¨d d	lmZ nd dlZerÈd d
l m!Z!mZ"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ƒ )¡ Z0edƒZ1e(ee1ƒe( B Z2ee(ee2ƒ ƒZ3e3dƒZ4e3Z5edƒdƒZ6e0e6 Z7e5ee.e5 ƒ Z8e*ee8ƒ e+ dƒZ9eej:ej;ej<B ƒZ=eej:ej;ej<B ƒZ>e=e>A Z?ee?ee.e? ƒ ddd�dƒZ@ee,e@ e- e@B ƒZAeA Bdd„ ¡ eeAƒdƒZCeC Bdd„ ¡ eeƒ ƒd ƒZe Bd!d„ ¡ e/ZDeDe ZEeCeeEƒ ZFe7eeEƒ ZGe4ee9ƒ eGeFB  ZHeeH e ZIeI Jd"¡ G d#d$„ d$eKƒZLdS )%é    )Úabsolute_importÚdivisionÚprint_functionN)
ÚCombineÚLiteralÚOptionalÚParseExceptionÚRegexÚWordÚ
ZeroOrMoreÚoriginalTextForÚ	stringEndÚstringStarté   )ÚTYPE_CHECKING)ÚMARKER_EXPRÚMarker)ÚLegacySpecifierÚ	SpecifierÚSpecifierSeté   )Úparse)ÚListr   ÚSetc                   @   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   újC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_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>J   ó    r3   Ú	specifierc                 C   s   |d S )Nr   r   r/   r   r   r    r3   M   r4   Úmarkerc                 C   s   t | |j|j… ƒS )N)r   Ú_original_startÚ_original_endr/   r   r   r    r3   Q   r4   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 nD tk
rR } z&td ||j|jd … |j¡ƒ‚W 5 d }~X Y nX |j| _|jrÄt	 	|j¡}|j
dkr’t	 |¡|jkrºtdƒ‚n(|j
rª|jrª|j
sº|jsºtd |j¡ƒ‚|j| _nd | _t|jrÜ|j ¡ ng ƒ| _t|jƒ| _|jrü|jn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   r5   r6   )ÚselfÚrequirement_stringÚreqÚeÚ
parsed_urlr   r   r    Ú__init__n   s4     ÿÿ

ÿÿ
zRequirement.__init__c                 C   sŠ   | j g}| jr*| d d t| jƒ¡¡¡ | jr@| t| jƒ¡ | jrh| d | j¡¡ | j	rh| d¡ | j	r€| d | j	¡¡ d |¡S )Nz[{0}]r%   z@ {0}ú z; {0}r.   )
r(   r*   Úappendr>   ÚjoinÚsortedr5   Ústrr)   r6   )rG   Úpartsr   r   r    Ú__str__Š   s    
zRequirement.__str__c                 C   s   d  t| ƒ¡S )Nz<Requirement({0!r})>)r>   rQ   )rG   r   r   r    Ú__repr__ž   s    zRequirement.__repr__N)r   r   r   r   rL   rS   rT   r   r   r   r    r9   a   s   r9   )MÚ
__future__r   r   r   ÚreÚstringÚsysÚpip._vendor.pyparsingr   r   ÚLr   r   r	   r
   r   r   r   r   Ú_typingr   Úmarkersr   r   Ú
specifiersr   r   r   Úversion_infoÚurllibr   rA   Útypingr   Z	TOptionalr   Ú
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_REQUIREMENTr<   r=   Úobjectr9   r   r   r   r    Ú<module>   sp   0  ÿþÿ
