관리-도구
편집 파일: resolver.cpython-38.pyc
U &?�f^ � @ s� 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 e�:e;�Z<eee= e e' f Z>dee e?e?e?f e@dd�dd�ZAG dd� 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 C s� zt | j�}W n0 tk r> } zt| t |���W 5 d}~X Y nX zt||d�}W n: tjk r� } zt�d| j |� W Y �dS d}~X Y nX |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&