Compute require_hashes in populate_requirement_set

This commit is contained in:
Pradyun Gedam 2019-11-09 12:05:28 +05:30
parent c21fd4a70c
commit 4e7867d0a8
No known key found for this signature in database
GPG Key ID: DA17C4B29CB32E4B
2 changed files with 12 additions and 9 deletions

View File

@ -226,9 +226,6 @@ class RequirementCommand(IndexGroupCommand):
"""
Marshal cmd line args into a requirement set.
"""
# NOTE: As a side-effect, options.require_hashes and
# requirement_set.require_hashes may be updated
for filename in options.constraints:
for req_to_add in parse_requirements(
filename,
@ -256,6 +253,7 @@ class RequirementCommand(IndexGroupCommand):
req_to_add.is_direct = True
requirement_set.add_requirement(req_to_add)
# NOTE: options.require_hashes may be set if --require-hashes is True
for filename in options.requirements:
for req_to_add in parse_requirements(
filename,
@ -265,6 +263,14 @@ class RequirementCommand(IndexGroupCommand):
req_to_add.is_direct = True
requirement_set.add_requirement(req_to_add)
# If any requirement has hash options, enable hash checking.
requirements = (
requirement_set.unnamed_requirements +
list(requirement_set.requirements.values())
)
if any(req.has_hash_options for req in requirements):
options.require_hashes = True
if not (args or options.editables or options.requirements):
opts = {'name': self.name}
if options.find_links:

View File

@ -176,11 +176,6 @@ class Resolver(object):
list(requirement_set.requirements.values())
)
require_hashes = (
self.require_hashes_option or
any(req.has_hash_options for req in root_reqs)
)
# Actually prepare the files, and collect any exceptions. Most hash
# exceptions cannot be checked ahead of time, because
# req.populate_link() needs to be called before we can make decisions
@ -190,7 +185,9 @@ class Resolver(object):
for req in chain(root_reqs, discovered_reqs):
try:
discovered_reqs.extend(
self._resolve_one(requirement_set, req, require_hashes)
self._resolve_one(
requirement_set, req, self.require_hashes_option
)
)
except HashError as exc:
exc.req = req