File: //usr/local/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc
o
��i�@ � @ sj 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) g d�Z*e�+e,�Z-ej.�/� Z0de1de e1ee1 f fdd�Z2dee1 dee1 fdd�Z3de1de ee1 e1ee1 f fdd�Z4de1ddfdd�Z5d e1de1fd!d"�Z6G d#d$� d$�Z7de1de7fd%d&�Z8 ' ' ' ' dFde1d(ee
ee1f d)ee9 d*e9d+eee1ef d,e9d-e9d.e9d/eee1e1f defd0d1�Z:d2e1de9fd3d4�Z;de1d2e1dee1 fd5d6�Z<d2e1d7ee1 de7fd8d9�Z= ' ' ' dGd2e1d(ee
e1ef d)ee9 d*e9d+eee1ef d,e9d7ee1 d-e9d/eee1e1f defd:d;�Z> ' ' dHd<e1d(ee d*e9d)ee9 d-e9d/eee1e1f defd=d>�Z? ' ' dId?ed*e9d)ee9 d-e9d/eee1e1f defd@dA�Z@dBedCedefdDdE�ZAdS )Ja~ 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 s<