U �Qab�@srddlmZmZmZddlZddlZddlmZmZm 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@eZAGd!d"�d"eB�ZCdS)#�)�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�P/usr/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/requirements.pyrsr�[�]�(�)�,�;�@z-_.�namez[^ ]+�url�extrasF)Z joinStringZadjacent� _raw_speccCs |jpdS)N�)r'��s�l�trrr�6�r-� specifiercCs|dS)Nrrr)rrrr-9r.�markercCst||j|j��S)N)rZ_original_startZ _original_endr)rrrr-=r.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 Cs�zt�|�}Wn@tk rN}z"td�||j|jd����W5d}~XYnX|j|_|jr�t�|j�}|j r�|j r�|j s�|j s�td��|j|_nd|_t |j r�|j � �ng�|_ t|j�|_|jr�|jnd|_dS)Nz+Invalid requirement, parse error at "{0!r}"�zInvalid URL given)� REQUIREMENTZ parseStringrr�formatZlocr$r%�urlparseZschemeZnetloc�setr&ZasListrr/r0)�selfZrequirement_stringZreq�eZ parsed_urlrrr�__init__Xs,��  ��  zRequirement.__init__cCsz|jg}|jr*|�d�d�t|j����|jr@|�t|j��|jrX|�d�|j��|j rp|�d�|j ��d�|�S)Nz[{0}]r!z@ {0}z; {0}r() r$r&�appendr4�join�sortedr/�strr%r0)r7�partsrrr�__str__mszRequirement.__str__cCsd�t|��S)Nz)r4r=)r7rrr�__repr__~szRequirement.__repr__N)rrrrr9r?r@rrrrr1Ks r1)DZ __future__rrr�string�reZpkg_resources.extern.pyparsingrrrrr r r r r r�LZ%pkg_resources.extern.six.moves.urllibrr5ZmarkersrrZ 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_SEPERATORZMARKERZVERSION_AND_MARKERZURL_AND_MARKERZNAMED_REQUIREMENTr3�objectr1rrrr�sf          �� �  �