File: __main__.py

package info (click to toggle)
rdkit 202503.6-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 222,000 kB
  • sloc: cpp: 411,111; python: 78,482; ansic: 26,181; java: 8,285; javascript: 4,404; sql: 2,393; yacc: 1,626; lex: 1,267; cs: 1,090; makefile: 581; xml: 229; fortran: 183; sh: 121
file content (67 lines) | stat: -rwxr-xr-x 2,506 bytes parent folder | download | duplicates (4)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env python

"""
Script to generate Python stubs for RDKit.

This script is invoked as part of the build process
by setting the CMake switch RDK_INSTALL_PYTHON_STUBS=ON.
If you decide to run this script outside the build process,
make sure that the RDKit Python modules for which stubs are
to be generated are the *first* RDKit modules available in
sys.path; otherwise, stubs will not be generated for the
intended RDKit version.

Usage:
./Scripts/gen_rdkit_stubs.py [output_dirs; defaults to $PWD]

Usage example:
$ cd $RDBASE
$ ./Scripts/gen_rdkit_stubs.py
$ cp -R rdkit-stubs $CONDA_PREFIX/lib/python3.*/site-packages

The scripts creates an rdkit-stubs directory in each
directory in output_dirs.
Warnings printed to console can be safely ignored.
"""

import sys
import os
import importlib
import argparse
import multiprocessing
from pathlib import Path
from . import generate_stubs, purge_rdkit_source_dir_from_sys_path, find_rdkit_site_packages_path

def parse_args():
    """Parse command line arguments."""
    default_n_cpus = max(1, multiprocessing.cpu_count() - 2)
    default_output_dirs = [os.getcwd()]
    parser = argparse.ArgumentParser()
    parser.add_argument("--concurrency", type=int,
                        help=f"max number of CPUs to be used (defaults to {default_n_cpus})",
                        default=default_n_cpus)
    parser.add_argument("--verbose",
                        help=f"print non-fatal warnings/errors to stdout (defaults to false)",
                        action="store_true")
    parser.add_argument("--keep-incorrect-staticmethods",
                        help=f"Whether incorrectly assigned staticmethods should be kept as such",
                        action="store_true")
    parser.add_argument("output_dirs", nargs="*",
                        help=f"output directories (defaults to {default_output_dirs[0]})",
                        default=default_output_dirs)
    args = parser.parse_args()
    return args


if __name__ == "__main__":
    args = parse_args()
    purge_rdkit_source_dir_from_sys_path()
    site_packages_path = find_rdkit_site_packages_path()
    try:
        importlib.import_module("pybind11_stubgen")
    except ModuleNotFoundError:
        print("Failed to find pybind11_stubgen in PYTHONPATH. "
              "Please pip install pybind11_stubgen (available on PyPI and GitHub).", file=sys.stderr)
        sys.exit(1)
    site_packages_path = Path(site_packages_path)
    generate_stubs(site_packages_path, args)