File: //lib/python3/dist-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc
�
��hJJ � �x � 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+ g d�Z, ejZ e.� Z/ej` jc � Z2de3dee3e e3 f fd�Z4de e3 de
e3 fd�Z5dede
e3 defd�Z6de3dee e3 e3e
e3 f fd�Z7de3ddfd�Z8de3de3fd�Z9 G d � d!� Z:de3de:fd"�Z; d?dd#ddd#d#d#dd$�de3d%e ee e3f d&e e< d'e<d(e ee3 d)e ee3ee3 f d*e<d+e<d,e<d-e ee3ee3ee3 f f de fd.�Z=d/e3de<fd0�Z>de3d/e3de e3 fd1�Z?d/e3d2e e3 de:fd3�Z@ d?dd#ddd#dd#dd4�d/e3d%e ee3e f d&e e< d'e<d(e ee3 d)e ee3ee3 f d*e<d2e e3 d+e<d-e ee3ee3ee3 f f de fd5�ZA d@d6e3d%e e d'e<d&e e< d+e<de fd7�ZB dAd8ed'e<d&e e< d+e<d-e ee3ee3ee3 f f de fd9�ZCd:ed;e de fd<�ZDd;e de fd=�ZEd;e dee3 de fd>�ZFy)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)�
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 � � t j d| � }d }|r&|j d� }|j d� }||fS | }||fS )Nz^(.+)(\[[^\]]+\])$� � )�re�match�group)r �m�extras�path_no_extrass �@/usr/lib/python3/dist-packages/pip/_internal/req/constructors.py�
_strip_extrasr* + sT � �
���&��-�A�
�F�������������� �6�!�!� ���6�!�!� r'