3

g1                 @   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rd dl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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=j>dd  e	e=dZ?e?j>d d  e	e d!Zej>d"d  e+Z@e@e ZAe?eeA ZBe3eeA ZCe0ee5 eCeBB  ZDeeD e ZEeEjFd# G d$d% d%eGZHdS )&    )absolute_importdivisionprint_functionN)stringStart	stringEndoriginalTextForParseException)
ZeroOrMoreWordOptionalRegexCombine)Literal)parse   )MYPY_CHECK_RUNNING)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   F/tmp/pip-unpacked-wheel-v59g9nu1/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>;   s    r0   	specifierc             C   s   |d S )Nr   r   )r-   r.   r/   r   r   r   r0   >   s    markerc             C   s   t | |j|j S )N)r   _original_start_original_end)r-   r.   r/   r   r   r   r0   B   s    zx[]c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	RequirementzParse 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 nD tk
rR } z(tdj||j|jd  |jW Y d d }~X nX |j| _|jrt	j	|j}|j
dkrt	j||jkrtdn.|j
o|j s|j
 r|j rtdj|j|j| _nd | _t|jr|j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___   s(    .


zRequirement.__init__c             C   s   | j g}| jr*|jdjdjt| j | jr@|jt| j | jrh|jdj| j | j	rh|jd | j	r|jdj| j	 dj|S )Nz[{0}]r#   z@ {0} z; {0}r,   )
r&   r(   appendr:   joinsortedr1   strr'   r2   )rC   partsr   r   r   __str__{   s    
zRequirement.__str__c             C   s   dj 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   R   s   r5   )I
__future__r   r   r   stringrepip._vendor.pyparsingr   r   r   r   r	   r
   r   r   r   r   Lpip._vendor.six.moves.urllibr   r=   _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_REQUIREMENTr8   r9   objectr5   r   r   r   r   <module>   sd   

