##// END OF EJS Templates
Cleaner newline handling.
Cleaner newline handling.

File last commit:

r1383:86b6e612
r1387:efbb9b37
Show More
sync_output_trap.py
67 lines | 1.7 KiB | text/x-python | PythonLexer
# encoding: utf-8
""" Redirects stdout/stderr to given write methods."""
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
import sys
from IPython.kernel.core.output_trap import OutputTrap
class FileLike(object):
""" FileLike object that redirects all write to a callback.
Only the write-related methods are implemented, as well as those
required to read a StringIO.
"""
closed = False
def __init__(self, write):
self.write = write
def flush(self):
pass
def close(self):
pass
def writelines(self, lines):
for line in lines:
self.write(line)
def isatty(self):
return False
def getvalue(self):
return ''
class SyncOutputTrap(OutputTrap):
""" Object which redirect text sent to stdout and stderr to write
callbacks.
"""
def __init__(self, write_out, write_err):
# Store callbacks
self.out = FileLike(write_out)
self.err = FileLike(write_err)
# Boolean to check if the stdout/stderr hook is set.
self.out_set = False
self.err_set = False
def clear(self):
""" Clear out the buffers.
"""
pass