U
    ªÃT_†  ã                   @   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mZ 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ƒ !¡ Z(edƒZ)e ee)ƒe  B Z*ee ee*ƒ ƒZ+e+dƒZ,e+Z-edƒdƒZ.e(e. Z/e-ee&e- ƒ Z0e"ee0ƒ e# dƒZ1eej2ej3ej4B ƒZ5eej2ej3ej4B ƒZ6e5e6A Z7ee7ee&e7 ƒ ddd�dƒZ8ee$e8 e% e8B ƒZ9e9 :dd„ ¡ e	e9ƒdƒZ;e; :dd„ ¡ e	eƒ ƒdƒZe :d d„ ¡ e'Z<e<e Z=e;ee=ƒ Z>e/ee=ƒ Z?e,ee1ƒ e?e>B  Z@ee@ e ZAeA Bd!¡ G d"d#„ d#eCƒZDdS )$é    )Úabsolute_importÚdivisionÚprint_functionN)ÚstringStartÚ	stringEndÚoriginalTextForÚParseException)Ú
ZeroOrMoreÚWordÚOptionalÚRegexÚCombine)ÚLiteral)Úparseé   )ÚMARKER_EXPRÚMarker)ÚLegacySpecifierÚ	SpecifierÚSpecifierSetc                   @   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   úM/tmp/pip-unpacked-wheel-sr6cxcdi/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>7   ó    r/   Ú	specifierc                 C   s   |d S )Nr   r   r+   r   r   r   r/   :   r0   Úmarkerc                 C   s   t | |j|j… ƒS )N)r   Ú_original_startÚ_original_endr+   r   r   r   r/   >   r0   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   r1   r2   )ÚselfÚrequirement_stringÚreqÚeÚ
parsed_urlr   r   r   Ú__init__[   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Úsortedr1   Ústrr%   r2   )rC   Úpartsr   r   r   Ú__str__v   s    
zRequirement.__str__c                 C   s   d  t| ƒ¡S )Nz<Requirement({0!r})>)r:   rM   )rC   r   r   r   Ú__repr__‰   s    zRequirement.__repr__N)r   r   r   r   rH   rO   rP   r   r   r   r   r5   N   s   r5   )EÚ
__future__r   r   r   ÚstringÚreZsetuptools.extern.pyparsingr   r   r   r   r	   r
   r   r   r   r   ÚLZ"setuptools.extern.six.moves.urllibr   r=   Úmarkersr   r   Ú
specifiersr   r   r   Ú
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_REQUIREMENTr8   r9   Úobjectr5   r   r   r   r   Ú<module>   sh     ÿþÿ
