import code
import StringIO
oraw_input = raw_input
class Tee(object):
__buffer = StringIO.StringIO()
@classmethod
def raw_input(cls, *a, **kw):
result = oraw_input(*a, **kw)
print >>cls.__buffer, result
return result
def __init__(self, fil_):
self.fil_ = fil_
def __getattr__(self, name):
return getattr(self.fil_, name)
def read(self, *a):
result = self.fil_.read(*a)
print 'hello!!!'
print >>sys.stdout.fil_, result
self.__buffer.write(result)
return result
def write(self, data):
self.__buffer.write(data)
self.fil_.write(data)
def flush(self):
self.__buffer.flush()
self.fil_.flush()
def get_data(self):
self.__buffer.seek(0,0)
return self.__buffer.read()
__builtins__.raw_input = Tee.raw_input
import sys
stdin = sys.stdin = Tee(sys.stdin)
stdout = sys.stdout = Tee(sys.stdout)
stderr = sys.stderr = Tee(sys.stderr)
try:
a = code.InteractiveConsole()
a.interact()
except BaseException:
sys.stderr = sys.stderr.fil_
raise
else:
sys.stderr = sys.stderr.fil_
finally:
sys.stdin = sys.stdin.fil_
sys.stdout = sys.stdout.fil_
__builtins__.raw_input = oraw_input
data = stdin.get_data().split('\n')
out = []
counter = 0
for line in data:
if line.startswith('>>> ') or line.startswith('... '):
line = line.split(' ', 1)[-1]
counter += 1
line = 'l%s = %s' % (counter, line)
else:
line = 'repr(l%s) == """%s"""' % (counter, line)
out.append(line)
print '\n'.join(out)
exec '\n'.join(out)