File tree 3 files changed +8
-5
lines changed 3 files changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -310,7 +310,7 @@ def get_requirements(
310
310
parsed_req ,
311
311
isolated = options .isolated_mode ,
312
312
)
313
- req_to_add .is_direct = True
313
+ req_to_add .is_direct = False
314
314
requirements .append (req_to_add )
315
315
316
316
for req in args :
Original file line number Diff line number Diff line change @@ -107,9 +107,8 @@ def add_requirement(
107
107
)
108
108
109
109
# This next bit is really a sanity check.
110
- assert install_req .is_direct == (parent_req_name is None ), (
111
- "a direct req shouldn't have a parent and also, "
112
- "a non direct req should have a parent"
110
+ assert not install_req .is_direct or parent_req_name is None , (
111
+ "a direct req shouldn't have a parent"
113
112
)
114
113
115
114
# Unnamed requirements are scanned again and the requirement won't be
@@ -165,6 +164,10 @@ def add_requirement(
165
164
# If we're now installing a constraint, mark the existing
166
165
# object for real installation.
167
166
existing_req .constraint = False
167
+ # If we're now installing a top level requirement, mark the existing
168
+ # object as top level.
169
+ if install_req .is_direct :
170
+ existing_req .is_direct = True
168
171
existing_req .extras = tuple (sorted (
169
172
set (existing_req .extras ) | set (install_req .extras )
170
173
))
Original file line number Diff line number Diff line change @@ -195,7 +195,7 @@ def _is_upgrade_allowed(self, req):
195
195
return True
196
196
else :
197
197
assert self .upgrade_strategy == "only-if-needed"
198
- return req .is_direct
198
+ return req .is_direct or req . constraint
199
199
200
200
def _set_req_to_reinstall (self , req ):
201
201
# type: (InstallRequirement) -> None
You can’t perform that action at this time.
0 commit comments