1
1
Fork 0
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:
Pradyun Gedam 2019-09-07 13:15:40 +05:30 committed by GitHub
commit 9300fe640a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 21 deletions

View file

@ -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
)

View file

@ -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(

View file

@ -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):