�
���c\ � � � d dl Z d dlZd dlZd dlmZmZmZ d dl m
Z
mZmZm
Z
mZmZmZmZmZmZ ddlmZmZ ddlmZmZmZ G d� de� � Z eej ej z � � Z ed � � � � � Z! ed
� � � � � Z" ed� � � � � Z# ed� � � � � Z$ ed
� � � � � Z% ed� � � � � Z& ed� � � � � Z' ed� � Z(e ee(� � ez z Z) e
e ee)� � z � � Z* e*d� � Z+e*Z, ed� � d� � Z-e'e-z Z.e, ee%e,z � � z Z/ e! ee/� � z e"z d� � Z0 eej1 e j2 e j3 z � � Z4 eej1 e j2 e j3 z � � Z5e4e5z Z6 e
e6 ee%e6z � � z d
d�� � d� � Z7 ee#e7z e$z e7z � � Z8e8�9 d� � � ee8� � d� � Z:e:�9 d� � � e e� � � � d� � Z ej9 d� � � e&Z;e;ez Z<e: ee<� � z Z=e. ee<� � z Z>e+ ee0� � z e>e=z z Z?ee?z ez Z@e@�A d� � G d� d� � ZBdS ) � N)�List�Optional�Set)
�Combine�Literalr �ParseException�Regex�Word�
ZeroOrMore�originalTextFor� stringEnd�stringStart� )�MARKER_EXPR�Marker)�LegacySpecifier� Specifier�SpecifierSetc � � e Zd ZdZdS )�InvalidRequirementzJ
An invalid requirement was found, users should refer to PEP 508.
N)�__name__�
__module__�__qualname__�__doc__� � �K/usr/lib/python3/dist-packages/setuptools/_vendor/packaging/requirements.pyr r s � � � � � �� � � r r �[�]�(�)�,�;�@z-_.�namez[^ ]+�url�extrasF)�
joinString�adjacent� _raw_specc � � |j pdS )N� )r* ��s�l�ts r �<lambda>r1 @ s
� �Q�[�->�B� r � specifierc � � |d S )Nr r r- s r r1 r1 C s
� �A�a�D� r �markerc �D � t | |j |j � � � S )N)r �_original_start�
_original_endr- s r r1 r1 G s � �F�1�Q�.���@�A�B�B� r zx[]c �: � e Zd ZdZdeddfd�Zdefd�Zdefd�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.
�requirement_string�returnNc � � t � |� � }nA# t $ r4}t d||j |j dz � �d|j � �� � �d }~ww xY w|j | _ |j r�t j �
|j � � }|j dk r8t j � |� � |j k rt d� � �n3|j r|j
r|j s|j
st d|j � �� � �|j | _ nd | _ t |j r|j � � � ng � � | _ t# |j � � | _ |j r|j nd | _ d S )NzParse error at "� z": �filezInvalid URL givenz
Invalid URL: )�REQUIREMENT�parseStringr r �loc�msgr% r& |