관리-도구
편집 파일: resolver.cpython-311.pyc
� �Dg^ � �� � d Z ddlZddlZddlmZ ddlmZ ddlmZm Z m Z mZmZm Z ddlmZ ddlmZ ddlmZ dd lmZmZmZmZmZmZmZ dd lmZ ddlmZ ddl m!Z! dd l"m#Z# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ej: e;� � Z<eee= e e' f Z> d dede e?e?e?f de@ddfd�ZA G d� de,� � ZBdS )!ay Dependency Resolution The dependency resolution in pip is performed as follows: for top-level requirements: a. only one spec allowed per project, regardless of conflicts or not. otherwise a "double requirement" exception is raised b. they override sub-dependency requirements. for sub-dependencies a. "first found, wins" (where the order is breadth first) � N)�defaultdict)�chain)�DefaultDict�Iterable�List�Optional�Set�Tuple)� specifiers)�Requirement)� WheelCache)�BestVersionAlreadyInstalled�DistributionNotFound� HashError� HashErrors�InstallationError�NoneMetadataError�UnsupportedPythonVersion)� PackageFinder)�BaseDistribution)�Link)�Wheel)�RequirementPreparer)�InstallRequirement�check_invalid_constraint_type)�RequirementSet)�BaseResolver�InstallRequirementProvider)�compatibility_tags)� get_supported)�direct_url_from_link)� indent_log)�normalize_version_info)�check_requires_pythonF�dist�version_info�ignore_requires_python�returnc � � t | j � � }n/# t $ r"}t | t |� � � � �d}~ww xY w t ||�� � }n># t j $ r,}t � d| j |� � Y d}~dS d}~ww xY w|rdS d� t t |� � � � }|r$t � d| j ||� � dS t d| j �d|� d|��� � �) a� Check whether the given Python version is compatible with a distribution's "Requires-Python" value. :param version_info: A 3-tuple of ints representing the Python major-minor-micro version to check. :param ignore_requires_python: Whether to ignore the "Requires-Python" value if the given Python version isn't compatible. :raises UnsupportedPythonVersion: When the given Python version isn't compatible. N)r&