File: //usr/lib/python3.9/site-packages/pip/_internal/req/__pycache__/constructors.cpython-39.pyc
a
?�f@ � @ s� d Z ddlZddlZddlZddlmZ ddlmZmZ ddl m
Z
ddlmZm
Z
ddlmZ ddlmZmZ dd lmZ dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z( e#�r"ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 g d�Z2e�3e4�Z5e
j6�7� Z8dd� Z9dd� Z:dd� Z;dd� Z<dd� Z=G d d!� d!e>�Z?d"d#� Z@d3d%d&�ZAd'd(� ZBd)d*� ZCd+d,� ZDd4d-d.�ZEd5d/d0�ZFd6d1d2�ZGdS )7a~ 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)�Marker)�InvalidRequirement�Requirement)� Specifier)�RequirementParseError�parse_requirements)�InstallationError)�PyPI�TestPyPI)�Link)�Wheel)�make_pyproject_path)�InstallRequirement)�
deprecated)�ARCHIVE_EXTENSIONS)�is_installable_dir�splitext)�MYPY_CHECK_RUNNING)�path_to_url)�is_url�vcs)�Any�Dict�Optional�Set�Tuple�Union)�ParsedRequirement)�install_req_from_editable�install_req_from_line�parse_editablec C s t | �d �� }|tv rdS dS )z9Return True if `name` is a considered as an archive file.� TF)r �lowerr )�nameZext� r$ �B/usr/lib/python3.9/site-packages/pip/_internal/req/constructors.py�is_archive_file1 s r&