From 8176019a89bc79dca37f821150b06260e956f067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sun, 12 Apr 2020 12:43:50 +0200 Subject: [PATCH] A constraint is not a top level requirement --- src/pip/_internal/cli/req_command.py | 2 +- src/pip/_internal/req/req_set.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pip/_internal/cli/req_command.py b/src/pip/_internal/cli/req_command.py index 104b033281f..deb105cac27 100644 --- a/src/pip/_internal/cli/req_command.py +++ b/src/pip/_internal/cli/req_command.py @@ -314,7 +314,7 @@ def get_requirements( parsed_req, isolated=options.isolated_mode, ) - req_to_add.is_direct = True + req_to_add.is_direct = False requirement_set.add_requirement(req_to_add) for req in args: diff --git a/src/pip/_internal/req/req_set.py b/src/pip/_internal/req/req_set.py index f168ce17abd..7d6ad182eec 100644 --- a/src/pip/_internal/req/req_set.py +++ b/src/pip/_internal/req/req_set.py @@ -110,9 +110,8 @@ def add_requirement( ) # This next bit is really a sanity check. - assert install_req.is_direct == (parent_req_name is None), ( - "a direct req shouldn't have a parent and also, " - "a non direct req should have a parent" + assert not install_req.is_direct or parent_req_name is None, ( + "a direct req shouldn't have a parent" ) # Unnamed requirements are scanned again and the requirement won't be @@ -167,6 +166,10 @@ def add_requirement( # If we're now installing a constraint, mark the existing # object for real installation. 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 existing_req.extras = tuple(sorted( set(existing_req.extras) | set(install_req.extras) ))