3
�Pf�� � @ s0 d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlmZ d dl
mZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d lmZmZ d d
lmZ d dlmZmZ d dl!m"Z" d dl#Z$d d
l%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZO d dlPmQZQ d dlRmSZS d dlTmUZU d dl#mVZVmWZW ejXeY�ZZej[j\j]� Z^dd� Z_dd� Z`G dd� dea�Zbd d!� Zcd$d"d#�ZddS )%� )�absolute_importN)� sysconfig)�change_root)�
FeedParser)�
pkg_resources�six)�
specifiers)�Marker)�InvalidRequirement�Requirement)�canonicalize_name)�Version�parse)�configparser)�
native_str�
get_stdlib�WINDOWS)�is_url�url_to_path�path_to_url�is_archive_file)�InstallationError�UninstallationError)�bin_py�running_under_virtualenv�PIP_DELETE_MARKER_FILENAME�bin_user)�display_path�rmtree�ask_path_exists�
backup_dir�is_installable_dir�dist_in_usersite�dist_in_site_packages�dist_in_install_path�
egg_link_path�call_subprocess�read_text_file�FakeFile�_make_build_dir�
ensure_dir�get_installed_version�normalize_path�
dist_is_local)�Hashes)�RemovedInPip10Warning)�
indent_log)�SETUPTOOLS_SHIM)�open_spinner)�UninstallPathSet)�vcs)�move_wheel_files�Wheelc C s6 t jd| �}d }|r*|jd�}|jd�}n| }||fS )Nz^(.+)(\[[^\]]+\])$� � )�re�match�group)�path�m�extrasZpath_no_extras� r? �!/usr/lib/python3.6/req_install.py�
_strip_extras9 s
rA c C s t dd� | D ��S )Nc s s | ]}t j|�V qd S )N)r Z
safe_extra)�.0�extrar? r? r@ � F s z_safe_extras..)�set)r> r? r? r@ �_safe_extrasE s rF c @ s� e Zd ZdQdd�ZedRdd��ZedSdd ��Zd
d� Zdd
� Zdd� Z e
dd� �Ze
dd� �Zdd� Z
dd� Zdd� Ze
dd� �Ze
dd� �Ze
dd� �Zd d!� Zd"d#� Zd$d%� Zd&d'� Zejd(�Ze
d)d*� �Zd+d,� ZdTd-d.�ZdUd/d0�Zd1d2� Zd3d4� Zd5d6� Z d7d8� Z!dVd9d:�Z"g dddfd;d<�Z#d=d>� Z$d?d@� Z%dAdB� Z&f