zmqshell.py
31 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2773 | import sys | ||
from subprocess import Popen, PIPE | ||||
from IPython.core.interactiveshell import InteractiveShell, InteractiveShellABC | ||||
class ZMQInteractiveShell(InteractiveShell): | ||||
"""A subclass of InteractiveShell for ZMQ.""" | ||||
def system(self, cmd): | ||||
cmd = self.var_expand(cmd, depth=2) | ||||
Brian Granger
|
r2774 | sys.stdout.flush() | ||
sys.stderr.flush() | ||||
Brian Granger
|
r2773 | p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE) | ||
for line in p.stdout.read().split('\n'): | ||||
if len(line) > 0: | ||||
print line | ||||
for line in p.stderr.read().split('\n'): | ||||
if len(line) > 0: | ||||
print line | ||||
return p.wait() | ||||
Brian Granger
|
r2775 | def init_io(self): | ||
# This will just use sys.stdout and sys.stderr. If you want to | ||||
# override sys.stdout and sys.stderr themselves, you need to do that | ||||
# *before* instantiating this class, because Term holds onto | ||||
# references to the underlying streams. | ||||
import IPython.utils.io | ||||
Term = IPython.utils.io.IOTerm() | ||||
IPython.utils.io.Term = Term | ||||
Brian Granger
|
r2773 | InteractiveShellABC.register(ZMQInteractiveShell) | ||