parse_setup_py: Handle string dependency when we expect list of strings #440
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As described in issue #429, the s3transfer package comes with setup.py
where the
extras_require
dictionary does not map to a list of strings(extra requirements), but instead map to a string directly.
When s3transfer is installed with this extra (e.g.
pip install s3transfer[crt]
), the setuptools machinery handles this variationgracefully, i.e. it interprets the string as if it was a single-element
list containing the same string.
An experiment reveals that the same interpretation occurs if a string is
passed directly in the
install_requires
argument.This commit teaches FawltyDeps to do the same.
Also, if parse_one_req() fails to parse a requirement string, catch that
exception (likely an
InvalidRequirement
or some other subclass ofValueError), and convert it into a DependencyParsingError, which is
handled more gracefully (i.e. print a warning message and continue).