-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathnumba_entry.py
72 lines (61 loc) · 2.56 KB
/
numba_entry.py
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
68
69
70
71
72
import sys
import argparse
import os
import subprocess
import json
from .numba_sysinfo import display_sysinfo, get_sysinfo
from .numba_gdbinfo import display_gdbinfo
def make_parser():
parser = argparse.ArgumentParser()
parser.add_argument('--annotate', help='Annotate source',
action='store_true')
parser.add_argument('--dump-llvm', action="store_true",
help='Print generated llvm assembly')
parser.add_argument('--dump-optimized', action='store_true',
help='Dump the optimized llvm assembly')
parser.add_argument('--dump-assembly', action='store_true',
help='Dump the LLVM generated assembly')
parser.add_argument('--annotate-html', nargs=1,
help='Output source annotation as html')
parser.add_argument('-s', '--sysinfo', action="store_true",
help='Output system information for bug reporting')
parser.add_argument('-g', '--gdbinfo', action="store_true",
help='Output system information about gdb')
parser.add_argument('--sys-json', nargs=1,
help='Saves the system info dict as a json file')
parser.add_argument('filename', nargs='?', help='Python source filename')
return parser
def main():
parser = make_parser()
args = parser.parse_args()
if args.sysinfo:
print("System info:")
display_sysinfo()
if args.gdbinfo:
print("GDB info:")
display_gdbinfo()
if args.sysinfo or args.gdbinfo:
sys.exit(0)
if args.sys_json:
info = get_sysinfo()
info.update({'Start': info['Start'].isoformat()})
info.update({'Start UTC': info['Start UTC'].isoformat()})
with open(args.sys_json[0], 'w') as f:
json.dump(info, f, indent=4)
sys.exit(0)
os.environ['NUMBA_DUMP_ANNOTATION'] = str(int(args.annotate))
if args.annotate_html is not None:
try:
from jinja2 import Template
except ImportError:
raise ImportError("Please install the 'jinja2' package")
os.environ['NUMBA_DUMP_HTML'] = str(args.annotate_html[0])
os.environ['NUMBA_DUMP_LLVM'] = str(int(args.dump_llvm))
os.environ['NUMBA_DUMP_OPTIMIZED'] = str(int(args.dump_optimized))
os.environ['NUMBA_DUMP_ASSEMBLY'] = str(int(args.dump_assembly))
if args.filename:
cmd = [sys.executable, args.filename]
subprocess.call(cmd)
else:
print("numba: error: the following arguments are required: filename")
sys.exit(1)