From eb36dc772010e8d24448b3530cc090d66aec554e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Mon, 13 Apr 2020 11:09:05 +0200 Subject: [PATCH] Rename is_direct to user_supplied --- src/pip/_internal/cli/req_command.py | 8 ++++---- src/pip/_internal/req/req_install.py | 7 +++++-- src/pip/_internal/req/req_set.py | 6 +++--- src/pip/_internal/resolution/legacy/resolver.py | 4 ++-- tests/unit/test_req.py | 10 +++++----- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/pip/_internal/cli/req_command.py b/src/pip/_internal/cli/req_command.py index 5b9aa2c3c76..204ea4545c3 100644 --- a/src/pip/_internal/cli/req_command.py +++ b/src/pip/_internal/cli/req_command.py @@ -310,7 +310,7 @@ def get_requirements( parsed_req, isolated=options.isolated_mode, ) - req_to_add.is_direct = False + req_to_add.user_supplied = False requirements.append(req_to_add) for req in args: @@ -318,7 +318,7 @@ def get_requirements( req, None, isolated=options.isolated_mode, use_pep517=options.use_pep517, ) - req_to_add.is_direct = True + req_to_add.user_supplied = True requirements.append(req_to_add) for req in options.editables: @@ -327,7 +327,7 @@ def get_requirements( isolated=options.isolated_mode, use_pep517=options.use_pep517, ) - req_to_add.is_direct = True + req_to_add.user_supplied = True requirements.append(req_to_add) # NOTE: options.require_hashes may be set if --require-hashes is True @@ -340,7 +340,7 @@ def get_requirements( isolated=options.isolated_mode, use_pep517=options.use_pep517 ) - req_to_add.is_direct = True + req_to_add.user_supplied = True requirements.append(req_to_add) # If any requirement has hash options, enable hash checking. diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py index 48ec9442114..eb8735ba555 100644 --- a/src/pip/_internal/req/req_install.py +++ b/src/pip/_internal/req/req_install.py @@ -171,7 +171,10 @@ def __init__( self.hash_options = hash_options if hash_options else {} # Set to True after successful preparation of this requirement self.prepared = False - self.is_direct = False + # User supplied requirement are explicitly requested for installation + # by the user via CLI arguments or requirements files, as opposed to, + # e.g. dependencies, extras or constraints. + self.user_supplied = False # Set by the legacy resolver when the requirement has been downloaded # TODO: This introduces a strong coupling between the resolver and the @@ -809,7 +812,7 @@ def install( pycompile=pycompile, warn_script_location=warn_script_location, direct_url=direct_url, - requested=self.is_direct, + requested=self.user_supplied, ) self.install_succeeded = True return diff --git a/src/pip/_internal/req/req_set.py b/src/pip/_internal/req/req_set.py index 7d6ad182eec..a3c4d353db3 100644 --- a/src/pip/_internal/req/req_set.py +++ b/src/pip/_internal/req/req_set.py @@ -110,7 +110,7 @@ def add_requirement( ) # This next bit is really a sanity check. - assert not install_req.is_direct or parent_req_name is None, ( + assert not install_req.user_supplied or parent_req_name is None, ( "a direct req shouldn't have a parent" ) @@ -168,8 +168,8 @@ def add_requirement( existing_req.constraint = False # If we're now installing a top level requirement, mark the existing # object as top level. - if install_req.is_direct: - existing_req.is_direct = True + if install_req.user_supplied: + existing_req.user_supplied = True existing_req.extras = tuple(sorted( set(existing_req.extras) | set(install_req.extras) )) diff --git a/src/pip/_internal/resolution/legacy/resolver.py b/src/pip/_internal/resolution/legacy/resolver.py index afda2380203..7fdff1bc4f3 100644 --- a/src/pip/_internal/resolution/legacy/resolver.py +++ b/src/pip/_internal/resolution/legacy/resolver.py @@ -195,7 +195,7 @@ def _is_upgrade_allowed(self, req): return True else: assert self.upgrade_strategy == "only-if-needed" - return req.is_direct or req.constraint + return req.user_supplied or req.constraint def _set_req_to_reinstall(self, req): # type: (InstallRequirement) -> None @@ -419,7 +419,7 @@ def add_req(subreq, extras_requested): # 'unnamed' requirements will get added here # 'unnamed' requirements can only come from being directly # provided by the user. - assert req_to_install.is_direct + assert req_to_install.user_supplied requirement_set.add_requirement( req_to_install, parent_req_name=None, ) diff --git a/tests/unit/test_req.py b/tests/unit/test_req.py index 73733d46235..d51e85837c0 100644 --- a/tests/unit/test_req.py +++ b/tests/unit/test_req.py @@ -56,7 +56,7 @@ def get_processed_req_from_line(line, fname='file', lineno=1): parsed_req = handle_requirement_line(parsed_line) assert parsed_req is not None req = install_req_from_parsed_requirement(parsed_req) - req.is_direct = True + req.user_supplied = True return req @@ -109,7 +109,7 @@ def test_no_reuse_existing_build_dir(self, data): pass reqset = RequirementSet() req = install_req_from_line('simple') - req.is_direct = True + req.user_supplied = True reqset.add_requirement(req) finder = make_test_finder(find_links=[data.find_links]) with self._basic_resolver(finder) as resolver: @@ -133,7 +133,7 @@ def test_environment_marker_extras(self, data): req = install_req_from_editable( data.packages.joinpath("LocalEnvironMarker") ) - req.is_direct = True + req.user_supplied = True reqset.add_requirement(req) finder = make_test_finder(find_links=[data.find_links]) with self._basic_resolver(finder) as resolver: @@ -626,10 +626,10 @@ def test_exclusive_environment_markers(): """Make sure RequirementSet accepts several excluding env markers""" eq36 = install_req_from_line( "Django>=1.6.10,<1.7 ; python_version == '3.6'") - eq36.is_direct = True + eq36.user_supplied = True ne36 = install_req_from_line( "Django>=1.6.10,<1.8 ; python_version != '3.6'") - ne36.is_direct = True + ne36.user_supplied = True req_set = RequirementSet() req_set.add_requirement(eq36)