3
yYði÷  ã               @   sr  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ƒj!ƒ Z"edƒj!ƒ Z#edƒj!ƒ Z$edƒj!ƒ Z%edƒj!ƒ Z&edƒj!ƒ Z'edƒj!ƒ 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 ƒZ9e9j:dd„ ƒ e	e9ƒdƒZ;e;j:dd„ ƒ e	eƒ ƒdƒZej: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 ZAG d!d"„ d"eBƒZCd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   úO/tmp/pip-build-ue6tjl93/setuptools/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>6   s    r.   Ú	specifierc             C   s   |d S )Nr   r   )r+   r,   r-   r   r   r   r.   9   s    Úmarkerc             C   s   t | |j|j… ƒS )N)r   Ú_original_startÚ_original_end)r+   r,   r-   r   r   r   r.   =   s    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Ü   yt j|ƒ}W n@ tk
rN } z$tdj||j|jd … ƒƒ‚W Y d d }~X nX |j| _|jrštj|jƒ}|j	ot|j
 sˆ|j	 r�|j
 r�tdƒ‚|j| _nd | _t|jr²|jjƒ ng ƒ| _t|jƒ| _|jrÒ|jnd | _d S )Nz+Invalid requirement, parse error at "{0!r}"é   zInvalid URL given)ÚREQUIREMENTÚparseStringr   r   ÚformatÚlocr$   r%   ÚurlparseÚschemeÚnetlocÚsetr&   ÚasListr   r/   r0   )ÚselfÚrequirement_stringÚreqÚeÚ
parsed_urlr   r   r   Ú__init__X   s"    *
zRequirement.__init__c             C   sz   | j g}| jr*|jdjdjt| jƒƒƒƒ | jr@|jt| jƒƒ | jrX|jdj| jƒƒ | j	rp|jdj| j	ƒƒ dj|ƒS )Nz[{0}]r!   z@ {0}z; {0}r*   )
r$   r&   Úappendr7   ÚjoinÚsortedr/   Ústrr%   r0   )r>   Úpartsr   r   r   Ú__str__m   s    zRequirement.__str__c             C   s   dj t| ƒƒS )Nz<Requirement({0!r})>)r7   rG   )r>   r   r   r   Ú__repr__~   s    zRequirement.__repr__N)r   r   r   r   rC   rI   rJ   r   r   r   r   r3   K   s   r3   )DÚ
__future__r   r   r   ÚstringÚreZsetuptools.extern.pyparsingr   r   r   r   r	   r
   r   r   r   r   ÚLZ"setuptools.extern.six.moves.urllibr   r9   Ú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_SEPERATORÚMARKERÚVERSION_AND_MARKERÚURL_AND_MARKERÚNAMED_REQUIREMENTr5   Úobjectr3   r   r   r   r   Ú<module>   sZ   
