B
    `                 @   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rd d	lmZ nd dlZerd 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 ZAeABdd  eeAdZCeCBdd  ee d ZeBd!d  e/ZDeDe ZEeCeeE ZFe7eeE ZGe4ee9 eGeFB  ZHeeH e ZIeIJd" 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   ^/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/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       r2   	specifierc             C   s   |d S )Nr   r   )r/   r0   r1   r   r   r    r2   M   r3   markerc             C   s   t | |j|j S )N)r   _original_start_original_end)r/   r0   r1   r   r   r    r2   Q   r3   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 |}W nD tk
rR } z&td||j|jd  |jW d d }~X Y nX |j| _|jrt		|j}|j
dkrt	||jkrtdn(|j
r|jr|j
s|jst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   r4   r5   )selfrequirement_stringreqe
parsed_urlr   r   r    __init__n   s(    .


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sortedr4   strr)   r5   )rF   partsr   r   r    __str__   s    
zRequirement.__str__c             C   s   d t| S )Nz<Requirement({0!r})>)r=   rP   )rF   r   r   r    __repr__   s    zRequirement.__repr__N)r   r   r   r   rK   rR   rS   r   r   r   r    r8   a   s   r8   )M
__future__r   r   r   restringsys	pyparsingr   r   Lr   r   r	   r
   r   r   r   r   _typingr   markersr   r   
specifiersr   r   r   version_infourllibr   r@   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<   objectr8   r   r   r   r    <module>   sf   0

