File: //usr/local/lib/python3.7/site-packages/pip/_internal/req/__pycache__/constructors.cpython-37.pyc
B
L��gJJ � @ s� d Z ddlZddlZddlZddlZddlmZmZmZm Z m
Z
mZmZ ddl
mZ ddlmZmZ ddlmZ ddlmZ ddlmZmZ dd lmZ dd
lmZ ddlmZ ddlm Z dd
l!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+ dddgZ,e�-e.�Z/ej0�1� Z2e3ee3e e3 f d�dd�Z4e e3 e
e3 d�dd�Z5ee
e3 ed�dd�Z6e3ee e3 e3e
e3 f d�dd�Z7e3dd �d!d"�Z8e3e3d#�d$d%�Z9G d&d'� d'�Z:e3e:d�d(d)�Z;dIdd*ddd*d*d*dd+�e3e ee e3f e e< e<e ee3 e ee3ee3 f e<e<e<e ee3ee3ee3 f f e d,�d-d�Z=e3e<d.�d/d0�Z>e3e3e e3 d1�d2d3�Z?e3e e3 e:d4�d5d6�Z@dJdd*ddd*dd*dd7�e3e ee3e f e e< e<e ee3 e ee3ee3 f e<e e3 e<e ee3ee3ee3 f f e d8�d9d�ZAdKe3e e e<e e< e<e d:�d;d<�ZBdLee<e e< e<e ee3ee3ee3 f f e d=�d>d?�ZCee e d@�dAdB�ZDe e dC�dDdE�ZEe ee3 e dF�dGdH�ZFdS )Ma~ Backing implementation for InstallRequirement's various constructors
The idea here is that these formed a major chunk of InstallRequirement's size
so, moving them and support code dedicated to them outside of that class
helps creates for better understandability for the rest of the code.
These are meant to be used elsewhere within pip to create instances of
InstallRequirement.
� N)�
Collection�Dict�List�Optional�Set�Tuple�Union)�Marker)�InvalidRequirement�Requirement)� Specifier)�InstallationError)�PyPI�TestPyPI)�Link)�Wheel)�ParsedRequirement)�InstallRequirement)�is_archive_file)�is_installable_dir)�get_requirement)�path_to_url)�is_url�vcs�install_req_from_editable�install_req_from_line�parse_editable)�path�returnc C s6 t �d| �}d }|r*|�d�}|�d�}n| }||fS )Nz^(.+)(\[[^\]]+\])$� � )�re�match�group)r �m�extras�path_no_extras� r'