aboutcode-org / aboutcode-org/scancode-toolkit

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

オープン
#2,742 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug package scan package-formats starter
主要言語
Python
スター
2.6k
フォーク
791
平均マージ
1日 12時間
マージ済み PR(30日)
5

説明

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

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。