mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Reduce context/options passed to Resolver (#6986)
This commit is contained in:
commit
9300fe640a
|
@ -6,6 +6,7 @@ PackageFinder machinery and all its vendored dependencies, etc.
|
|||
"""
|
||||
|
||||
import os
|
||||
from functools import partial
|
||||
|
||||
from pip._internal.cli.base_command import Command
|
||||
from pip._internal.cli.cmdoptions import make_search_scope
|
||||
|
@ -18,6 +19,7 @@ from pip._internal.operations.prepare import RequirementPreparer
|
|||
from pip._internal.req.constructors import (
|
||||
install_req_from_editable,
|
||||
install_req_from_line,
|
||||
install_req_from_req_string,
|
||||
)
|
||||
from pip._internal.req.req_file import parse_requirements
|
||||
from pip._internal.utils.misc import normalize_path
|
||||
|
@ -167,19 +169,23 @@ class RequirementCommand(IndexGroupCommand):
|
|||
"""
|
||||
Create a Resolver instance for the given parameters.
|
||||
"""
|
||||
make_install_req = partial(
|
||||
install_req_from_req_string,
|
||||
isolated=options.isolated_mode,
|
||||
wheel_cache=wheel_cache,
|
||||
use_pep517=use_pep517,
|
||||
)
|
||||
return Resolver(
|
||||
preparer=preparer,
|
||||
session=session,
|
||||
finder=finder,
|
||||
wheel_cache=wheel_cache,
|
||||
make_install_req=make_install_req,
|
||||
use_user_site=use_user_site,
|
||||
ignore_dependencies=options.ignore_dependencies,
|
||||
ignore_installed=ignore_installed,
|
||||
ignore_requires_python=ignore_requires_python,
|
||||
force_reinstall=force_reinstall,
|
||||
isolated=options.isolated_mode,
|
||||
upgrade_strategy=upgrade_strategy,
|
||||
use_pep517=use_pep517,
|
||||
py_version_info=py_version_info
|
||||
)
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ from pip._internal.exceptions import (
|
|||
HashErrors,
|
||||
UnsupportedPythonVersion,
|
||||
)
|
||||
from pip._internal.req.constructors import install_req_from_req_string
|
||||
from pip._internal.utils.logging import indent_log
|
||||
from pip._internal.utils.misc import (
|
||||
dist_in_usersite,
|
||||
|
@ -41,10 +40,9 @@ from pip._internal.utils.packaging import (
|
|||
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
||||
|
||||
if MYPY_CHECK_RUNNING:
|
||||
from typing import DefaultDict, List, Optional, Set, Tuple
|
||||
from typing import Callable, DefaultDict, List, Optional, Set, Tuple
|
||||
from pip._vendor import pkg_resources
|
||||
|
||||
from pip._internal.cache import WheelCache
|
||||
from pip._internal.distributions import AbstractDistribution
|
||||
from pip._internal.download import PipSession
|
||||
from pip._internal.index import PackageFinder
|
||||
|
@ -52,6 +50,10 @@ if MYPY_CHECK_RUNNING:
|
|||
from pip._internal.req.req_install import InstallRequirement
|
||||
from pip._internal.req.req_set import RequirementSet
|
||||
|
||||
InstallRequirementProvider = Callable[
|
||||
[str, InstallRequirement], InstallRequirement
|
||||
]
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
@ -115,15 +117,13 @@ class Resolver(object):
|
|||
preparer, # type: RequirementPreparer
|
||||
session, # type: PipSession
|
||||
finder, # type: PackageFinder
|
||||
wheel_cache, # type: Optional[WheelCache]
|
||||
make_install_req, # type: InstallRequirementProvider
|
||||
use_user_site, # type: bool
|
||||
ignore_dependencies, # type: bool
|
||||
ignore_installed, # type: bool
|
||||
ignore_requires_python, # type: bool
|
||||
force_reinstall, # type: bool
|
||||
isolated, # type: bool
|
||||
upgrade_strategy, # type: str
|
||||
use_pep517=None, # type: Optional[bool]
|
||||
py_version_info=None, # type: Optional[Tuple[int, ...]]
|
||||
):
|
||||
# type: (...) -> None
|
||||
|
@ -141,21 +141,16 @@ class Resolver(object):
|
|||
self.finder = finder
|
||||
self.session = session
|
||||
|
||||
# NOTE: This would eventually be replaced with a cache that can give
|
||||
# information about both sdist and wheels transparently.
|
||||
self.wheel_cache = wheel_cache
|
||||
|
||||
# This is set in resolve
|
||||
self.require_hashes = None # type: Optional[bool]
|
||||
|
||||
self.upgrade_strategy = upgrade_strategy
|
||||
self.force_reinstall = force_reinstall
|
||||
self.isolated = isolated
|
||||
self.ignore_dependencies = ignore_dependencies
|
||||
self.ignore_installed = ignore_installed
|
||||
self.ignore_requires_python = ignore_requires_python
|
||||
self.use_user_site = use_user_site
|
||||
self.use_pep517 = use_pep517
|
||||
self._make_install_req = make_install_req
|
||||
|
||||
self._discovered_dependencies = \
|
||||
defaultdict(list) # type: DefaultDict[str, List]
|
||||
|
@ -381,12 +376,9 @@ class Resolver(object):
|
|||
more_reqs = [] # type: List[InstallRequirement]
|
||||
|
||||
def add_req(subreq, extras_requested):
|
||||
sub_install_req = install_req_from_req_string(
|
||||
sub_install_req = self._make_install_req(
|
||||
str(subreq),
|
||||
req_to_install,
|
||||
isolated=self.isolated,
|
||||
wheel_cache=self.wheel_cache,
|
||||
use_pep517=self.use_pep517
|
||||
)
|
||||
parent_req_name = req_to_install.name
|
||||
to_scan_again, add_to_parent = requirement_set.add_requirement(
|
||||
|
|
|
@ -2,6 +2,7 @@ import os
|
|||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
from functools import partial
|
||||
|
||||
import pytest
|
||||
from mock import patch
|
||||
|
@ -23,6 +24,7 @@ from pip._internal.req import InstallRequirement, RequirementSet
|
|||
from pip._internal.req.constructors import (
|
||||
install_req_from_editable,
|
||||
install_req_from_line,
|
||||
install_req_from_req_string,
|
||||
parse_editable,
|
||||
)
|
||||
from pip._internal.req.req_file import process_line
|
||||
|
@ -61,13 +63,19 @@ class TestRequirementSet(object):
|
|||
build_isolation=True,
|
||||
req_tracker=RequirementTracker(),
|
||||
)
|
||||
make_install_req = partial(
|
||||
install_req_from_req_string,
|
||||
isolated=False,
|
||||
wheel_cache=None,
|
||||
use_pep517=None,
|
||||
)
|
||||
return Resolver(
|
||||
preparer=preparer, wheel_cache=None,
|
||||
preparer=preparer,
|
||||
make_install_req=make_install_req,
|
||||
session=PipSession(), finder=finder,
|
||||
use_user_site=False, upgrade_strategy="to-satisfy-only",
|
||||
ignore_dependencies=False, ignore_installed=False,
|
||||
ignore_requires_python=False, force_reinstall=False,
|
||||
isolated=False,
|
||||
)
|
||||
|
||||
def test_no_reuse_existing_build_dir(self, data):
|
||||
|
|
Loading…
Reference in a new issue