collections-benchmark/matplotlib-d/source/matplotlibd/core/pycall.d

27 lines
661 B
D

module matplotlibd.core.pycall;
void call(string py_script) {
import std.process: environment, pipeProcess, wait, Redirect;
auto py_path = environment.get("MATPLOTLIB_D_PYTHON", "python3");
auto pipes = pipeProcess(py_path, Redirect.stdin | Redirect.stderr);
pipes.stdin.writeln(py_script);
pipes.stdin.writeln("exit()");
pipes.stdin.close();
auto result = wait(pipes.pid);
if (result != 0) {
string error;
foreach (line; pipes.stderr.byLine)
error ~= line ~ "\n";
throw new Exception("\n\nERROR occurred in Python:\n" ~ error);
}
}
unittest {
call("print(\"Passing!\")\n");
}