관리-도구
편집 파일: constructors.cpython-38.pyc
U ʗRe�@ � @ s� d Z ddlZddlZddlZddlmZmZmZmZm Z m Z ddlmZ ddl mZmZ ddlmZ ddlmZ ddlmZmZ dd lmZ dd lmZ ddlmZ ddlmZ dd lm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) dddgZ*e�+e,�Z-ej.�/� Z0e1e e1ee1 f d�dd�Z2ee1 ee1 d�dd�Z3e1e ee1 e1ee1 f d�dd�Z4e1dd�dd�Z5e1e1d �d!d"�Z6G d#d$� d$�Z7e1e7d�d%d&�Z8d>e1ee ee1f ee9 e9eee1ef e9e9e9eee1e1f ed(� d)d�Z:e1e9d*�d+d,�Z;e1e1ee1 d-�d.d/�Z<e1ee1 e7d0�d1d2�Z=d?e1ee e1ef ee9 e9eee1ef e9ee1 e9eee1e1f ed3� d4d�Z>d@e1ee e9ee9 e9eee1e1f ed5�d6d7�Z?dAee9ee9 e9eee1e1f ed8�d9d:�Z@eeed;�d<d=�ZAdS )Ba~ 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)�Any�Dict�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&