U ��.e\�@s|ddlmZmZmZddlZddlZddlmZmZm Z m Z ddlm Z m Z m Z mZmZddlmZddlmZddlmZmZdd lmZmZmZGd d �d e�Ze ejej�Z ed ��!�Z"ed ��!�Z#ed��!�Z$ed��!�Z%ed��!�Z&ed��!�Z'ed��!�Z(e d�Z)e e e)�e BZ*ee e e*��Z+e+d�Z,e+Z-ed�d�Z.e(e.Z/e-e e&e-�Z0e"e e0�e#d�Z1eej2ej3ej4B�Z5eej2ej3ej4B�Z6e5e6AZ7ee7e e&e7�ddd�d�Z8e e$e8e%e8B�Z9e9�:dd��e e9�d�Z;e;�:dd��e e��d�Ze�:d d��e'Ze/e e=�Z?e,e e1�e?e>BZ@ee@eZAeA�Bd!�Gd"d#�d#eC�ZDdS)$�)�absolute_import�division�print_functionN)� stringStart� stringEnd�originalTextFor�ParseException)� ZeroOrMore�Word�Optional�Regex�Combine)�Literal)�parse�)� MARKER_EXPR�Marker)�LegacySpecifier� Specifier� SpecifierSetc@seZdZdZdS)�InvalidRequirementzJ An invalid requirement was found, users should refer to PEP 508. N)�__name__� __module__� __qualname__�__doc__�rr�F/usr/lib/python3.8/site-packages/pip/_vendor/packaging/requirements.pyrsr�[�]�(�)�,�;�@z-_.�namez[^ ]+�url�extrasF)Z joinStringZadjacent� _raw_speccCs |jpdS)N�)r'��s�l�trrr�7�r-� specifiercCs|dS)Nrrr)rrrr-:r.�markercCst||j|j��S)N)rZ_original_startZ _original_endr)rrrr->r.zx[]c@s(eZdZdZdd�Zdd�Zdd�ZdS) � 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 Cszt�|�}WnDtk rR}z&td�||j|jd�|j���W5d}~XYnX|j|_|jr�t � |j�}|j dkr�t � |�|jkr�td��n(|j r�|j r�|j s�|j s�td�|j���|j|_nd|_t |jr�|j��ng�|_t|j�|_|jr�|jnd|_dS)NzParse error at "{0!r}": {1}��filezInvalid URL givenzInvalid URL: {0})� REQUIREMENT� parseStringrr�formatZloc�msgr$r%�urlparseZschemeZ urlunparseZnetloc�setr&ZasListrr/r0)�selfZrequirement_stringZreq�eZ parsed_urlrrr�__init__[s4��    ��  zRequirement.__init__cCs�|jg}|jr*|�d�d�t|j����|jr@|�t|j��|jrh|�d�|j��|j rh|�d�|j r�|�d�|j ��d�|�S)Nz[{0}]r!z@ {0}� z; {0}r() r$r&�appendr6�join�sortedr/�strr%r0)r:�partsrrr�__str__vs zRequirement.__str__cCsd�t|��S)Nz)r6rA)r:rrr�__repr__�szRequirement.__repr__N)rrrrr<rCrDrrrrr1Ns r1)EZ __future__rrr�string�reZpip._vendor.pyparsingrrrrr r r r r r�LZpip._vendor.six.moves.urllibrr8ZmarkersrrZ specifiersrrr� ValueErrorrZ ascii_lettersZdigitsZALPHANUM�suppressZLBRACKETZRBRACKETZLPARENZRPAREN�COMMAZ SEMICOLON�ATZ PUNCTUATIONZIDENTIFIER_ENDZ IDENTIFIER�NAMEZEXTRAZURIZURLZ EXTRAS_LISTZEXTRASZ _regex_str�VERBOSE� IGNORECASEZVERSION_PEP440ZVERSION_LEGACYZ VERSION_ONEZ VERSION_MANYZ _VERSION_SPECZsetParseActionZ VERSION_SPECZMARKER_SEPARATORZMARKERZVERSION_AND_MARKERZURL_AND_MARKERZNAMED_REQUIREMENTr4r5�objectr1rrrr�sh          �� �