File: D:/Python311/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-311.pyc
�
�mi�] � �� � d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl m
Z
ddlmZ ddl
mZ dd lmZ dd
lmZ ddlmZmZmZmZmZmZmZ ddlmZ dd
lmZ ddlm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ej9 e:� � Z;eee< e=e& f Z> d&d'd#�Z? G d$� d%e+� � Z@dS )(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)
� )�annotationsN)�defaultdict)�Iterable)�chain)�Optional)�
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�distr �version_info�tuple[int, int, int]�ignore_requires_python�bool�return�Nonec � � 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# z-Package %r has an invalid Requires-Python: %s�.zBIgnoring failed Requires-Python check for package %r: %s not in %rzPackage z requires a different Python: z not in )�str�requires_python�FileNotFoundErrorr r! r �InvalidSpecifier�logger�warning�raw_name�join�map�debugr )r"