관리-도구
편집 파일: candidates.cpython-38.pyc
U &?�foM � @ s� d dl Z d dlZd dlmZmZmZmZmZmZm Z m Z d dlmZ d dl mZmZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZmZ d d lmZ d d lmZm Z d dl!m"Z" d dl#m$Z$ d d l%m&Z& ddl'm(Z(m)Z)m*Z* er�ddl+m,Z, e �-e.�Z/e d Z0e ed�Z1e(ee0 d�dd�Z2ee"e"d�dd�Z3ee"e"d�dd�Z4ee"e"d�dd�Z5G dd� de(�Z6G d d!� d!e6�Z7G d"d#� d#e6�Z8G d$d%� d%e(�Z9G d&d'� d'e(�Z:G d(d)� d)e(�Z;dS )*� N)� TYPE_CHECKING�Any� FrozenSet�Iterable�Optional�Tuple�Union�cast)�InvalidRequirement)�NormalizedName�canonicalize_name)�Version)� HashError�InstallationSubprocessError�MetadataInconsistent�MetadataInvalid)�BaseDistribution)�Link�links_equivalent)�Wheel)�install_req_from_editable�install_req_from_line)�InstallRequirement)�direct_url_from_link)�normalize_version_info� )� Candidate�Requirement�format_name)�Factory)�AlreadyInstalledCandidate�EditableCandidate� LinkCandidatez<Python from Requires-Python>)� candidate�returnc C s t ttf}t| |�r| S dS )z%The runtime version of BaseCandidate.N)r r! r"