aboutcode-org / aboutcode-org/scancode-toolkit
Detect setuptools.setup() calls when parsing setup.py
- Lenguaje dominante
- Python
- Estrellas
- 2.6k
- Forks
- 791
- Merge medio
- 1 d 12 h
- PR fusionados (30 d)
- 5
Descripción
### Description
A somewhat common pattern for setup.py is to have `import setuptools;setuptools.setup()`-like calls
We do not parse these correctly
See https://github.com/search?q="setuptools.setup"+filename%3Asetup.py+language%3APython+language%3APython&type=Code&ref=advsearch&l=Python&l=Python and https://raw.githubusercontent.com/BlueBrain/BluePyOpt/6d4185479bc6dddb3daad84fa27e0b8457d69652/setup.py as reported in https://github.com/oss-review-toolkit/ort/issues/4578 by @alex4200
The fix should be to detect a`setuptools.setup` call in the AST the same way we detect `setup()` call, and this should be straightforward.
### How To Reproduce
1. fetch https://raw.githubusercontent.com/BlueBrain/BluePyOpt/6d4185479bc6dddb3daad84fa27e0b8457d69652/setup.py
2. run a package scan: `scancode -p setup.py --yaml -`
3. The `dependencies` should not be empty for the `package_manifest`
Editing the setup.py and replace `setuptools.setup` by `setup` is enough to get the dependencies alright:
```
dependencies:
- purl: pkg:pypi/numpy
requirement: '>=1.6'
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/pandas
requirement: '>=0.18'
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/deap
requirement:
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/efel
requirement: '>=2.13'
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/ipyparallel
requirement:
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/pickleshare
requirement: '>=0.7.3'
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/jinja2
requirement: '>=2.8'
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/future
requirement:
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
- purl: pkg:pypi/pebble
requirement: '>=4.3.10'
scope: install
is_runtime: yes
is_optional: no
is_resolved: no
```
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.