Fix: Parse unquoted dependencies in setup.py with .split() pattern #41
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.
Description
The current
process_setup_py()method only detects dependencies wrapped in quotes within list syntax:pythoninstall_requires = ["django==4.2.23", "CairoSVG==2.7.1"]However, many Python projects define dependencies using multiline strings followed by
.split():Solution:
Enhanced
process_setup_py()to add support for the.split()pattern by detecting multiline strings defined with triple quotes using the regex:install_requires\s*=\s*["\'"]{3}([^"\']+)["\'"]{3}\.split\(\)This update:
Testing
Download a real-world project that uses this pattern (e.g.,
mayan-edms):pip download --no-deps --no-binary :all: mayan-edms==4.9.2Extract the source and inspect
setup.py— it defines dependencies via""".split().Run SBOM4Python before and after applying the fix:
bashsbom4python -r setup.py --sbom cyclonedx --format json -o output.json --debugCompare results:
Before fix: [] (0 dependencies detected)
After fix: 57 dependencies correctly parsed from
install_requires