summarylogtreecommitdiffstats
path: root/get_optdepends.py
blob: 9245cf80ca3b3102720c09592210e0a8bb113c32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from packaging.requirements import Requirement
import setuptools

# HACK: prevent the actual setup() from running and terminating the program
def fake_setup(*args, **kwargs):
    pass
setuptools.setup = fake_setup

from setup import DATASET_EXTRAS

KNOWN_PKGS = {
    'bs4': 'python-beautifulsoup4',
    'opencv-python': 'python-opencv',
}

def main():
    optdepends = {}
    for dataset, deps in DATASET_EXTRAS.items():
        for dep in deps:
            # https://peps.python.org/pep-0508/#names
            dep = Requirement(dep).name
            dep = dep.lower().replace('_', '-')
            dep = KNOWN_PKGS.get(dep, f'python-{dep}')
            optdepends.setdefault(dep, []).append(dataset)
    for dep, datasets in optdepends.items():
        print(f"'{dep}: for {', '.join(datasets)}'")

    print(f"# {' '.join(optdepends.keys())}")

if __name__ == '__main__':
    main()