aboutcode-org / aboutcode-org/scancode-toolkit

Detect setuptools.setup() calls when parsing setup.py

Ouverte
#2,742 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug package scan package-formats starter
Langage dominant
Python
Étoiles
2.6k
Forks
791
Merge moyen
1 j 12 h
PR mergées (30 j)
5

Description

### 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
```

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.