@@ -30,25 +30,38 @@ def load_ipython_extension(ip):
3030 # register magics
3131 ip .register_magics (JuliaMagics (ip ))
3232 # redirect stdout/stderr
33+ if ip .__class__ .__name__ == 'TerminalInteractiveShell' :
34+ # no redirection in the terminal
35+ PythonCall .seval ("""begin
36+ function _flush_stdio()
37+ end
38+ end""" )
39+ else :
40+ PythonCall .seval ("""begin
41+ const _redirected_stdout = redirect_stdout()
42+ const _redirected_stderr = redirect_stderr()
43+ const _py_stdout = PyIO(pyimport("sys" => "stdout"); line_buffering=true)
44+ const _py_stderr = PyIO(pyimport("sys" => "stderr"); line_buffering=true)
45+ const _redirect_stdout_task = @async write($_py_stdout, $_redirected_stdout)
46+ const _redirect_stderr_task = @async write($_py_stderr, $_redirected_stderr)
47+ function _flush_stdio()
48+ flush(stderr)
49+ flush(stdout)
50+ flush(_redirected_stderr)
51+ flush(_redirected_stdout)
52+ flush(_py_stderr)
53+ flush(_py_stdout)
54+ nothing
55+ end
56+ nothing
57+ end""" )
58+ ip .events .register ('post_execute' , PythonCall ._flush_stdio )
3359 # push displays
3460 PythonCall .seval ("""begin
35- const _redirected_stdout = redirect_stdout()
36- const _redirected_stderr = redirect_stderr()
37- const _py_stdout = PyIO(pyimport("sys" => "stdout"); line_buffering=true)
38- const _py_stderr = PyIO(pyimport("sys" => "stderr"); line_buffering=true)
39- const _redirect_stdout_task = @async write($_py_stdout, $_redirected_stdout)
40- const _redirect_stderr_task = @async write($_py_stderr, $_redirected_stderr)
41- function _flush_stdio()
42- flush(stderr)
43- flush(stdout)
44- flush(_redirected_stderr)
45- flush(_redirected_stdout)
46- flush(_py_stderr)
47- flush(_py_stdout)
48- nothing
49- end
5061 pushdisplay(PythonDisplay())
5162 pushdisplay(IPythonDisplay())
5263 nothing
5364 end""" )
54- ip .events .register ('post_execute' , PythonCall ._flush_stdio )
65+
66+ def unload_ipython_extension (ip ):
67+ pass
0 commit comments