/usr/local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__
a ���h�] � @ s� 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 e�9e:�Z;eee< e=e& f Z>d$ddddd�d d!�Z?G d"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_pythonFr ztuple[int, int, int]�bool�None)�dist�version_info�ignore_requires_python�returnc C s� zt | j�}W n2 ty@ } zt| t |���W Y d}~n d}~0 0 zt||d�}W n8 tjy� } zt�d| j |� W Y d}~dS d}~0 0 |r�dS d� tt |��}|r�t�d| j ||� dS t d| j �d|� d|����dS ) 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# r$ r% r) �e� is_compatible�exc�version� r6 �R/usr/local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py�_check_dist_requires_python: s@ $� �� ���r8 c s� e Zd ZdZh d�Zd1dddddddddd d dd�� fd d� Zdddd�dd�Zd2dddddd�dd�Zddd�dd�Zddd�dd�Z ddd �d!d"�Z dd#d�d$d%�Zddd�d&d'�Zdd(d�d)d*�Z dddd+�d,d-�Zddd.�d/d0�Z� ZS )3�Resolverz�Resolves which packages need to be installed/uninstalled to perform the requested operation without breaking the requirements of any package. > �only-if-needed�to-satisfy-only�eagerNr r zWheelCache | Noner r! r( ztuple[int, ...] | Noner"