comparison Lib/idlelib/PyShell.py @ 78274:cffdb7d76691

merge 3.2
author Martin v. Löwis <martin@v.loewis.de>
date Wed, 25 Jul 2012 10:49:32 +0200
parents 4915cd0cb7af a82fd35e28be
children 1da53d86d722
comparison
equal deleted inserted replaced
78272:d9a881b0d6ca 78274:cffdb7d76691
10 import threading 10 import threading
11 import time 11 import time
12 import tokenize 12 import tokenize
13 import traceback 13 import traceback
14 import types 14 import types
15 import io
15 16
16 import linecache 17 import linecache
17 from code import InteractiveInterpreter 18 from code import InteractiveInterpreter
18 19
19 try: 20 try:
408 try: 409 try:
409 self.rpcclt.accept() 410 self.rpcclt.accept()
410 except socket.timeout as err: 411 except socket.timeout as err:
411 self.display_no_subprocess_error() 412 self.display_no_subprocess_error()
412 return None 413 return None
414 # Can't regiter self.tkconsole.stdin, since run.py wants to
415 # call non-TextIO methods on it (such as getvar)
416 # XXX should be renamed to "console"
413 self.rpcclt.register("stdin", self.tkconsole) 417 self.rpcclt.register("stdin", self.tkconsole)
414 self.rpcclt.register("stdout", self.tkconsole.stdout) 418 self.rpcclt.register("stdout", self.tkconsole.stdout)
415 self.rpcclt.register("stderr", self.tkconsole.stderr) 419 self.rpcclt.register("stderr", self.tkconsole.stderr)
416 self.rpcclt.register("flist", self.tkconsole.flist) 420 self.rpcclt.register("flist", self.tkconsole.flist)
417 self.rpcclt.register("linecache", linecache) 421 self.rpcclt.register("linecache", linecache)
852 # 856 #
853 self.save_stdout = sys.stdout 857 self.save_stdout = sys.stdout
854 self.save_stderr = sys.stderr 858 self.save_stderr = sys.stderr
855 self.save_stdin = sys.stdin 859 self.save_stdin = sys.stdin
856 from idlelib import IOBinding 860 from idlelib import IOBinding
861 self.stdin = PseudoInputFile(self)
857 self.stdout = PseudoFile(self, "stdout", IOBinding.encoding) 862 self.stdout = PseudoFile(self, "stdout", IOBinding.encoding)
858 self.stderr = PseudoFile(self, "stderr", IOBinding.encoding) 863 self.stderr = PseudoFile(self, "stderr", IOBinding.encoding)
859 self.console = PseudoFile(self, "console", IOBinding.encoding) 864 self.console = PseudoFile(self, "console", IOBinding.encoding)
860 if not use_subprocess: 865 if not use_subprocess:
861 sys.stdout = self.stdout 866 sys.stdout = self.stdout
862 sys.stderr = self.stderr 867 sys.stderr = self.stderr
863 sys.stdin = self 868 sys.stdin = self.stdin
864 try: 869 try:
865 # page help() text to shell. 870 # page help() text to shell.
866 import pydoc # import must be done here to capture i/o rebinding. 871 import pydoc # import must be done here to capture i/o rebinding.
867 # XXX KBK 27Dec07 use a textView someday, but must work w/o subproc 872 # XXX KBK 27Dec07 use a textView someday, but must work w/o subproc
868 pydoc.pager = pydoc.plainpager 873 pydoc.pager = pydoc.plainpager
1269 def flush(self): 1274 def flush(self):
1270 pass 1275 pass
1271 1276
1272 def isatty(self): 1277 def isatty(self):
1273 return True 1278 return True
1279
1280 class PseudoInputFile(object):
1281 def __init__(self, shell):
1282 self.readline = shell.readline
1283 self.isatty = shell.isatty
1284
1285 def write(self, s):
1286 raise io.UnsupportedOperation("not writable")
1287 writelines = write
1274 1288
1275 1289
1276 usage_msg = """\ 1290 usage_msg = """\
1277 1291
1278 USAGE: idle [-deins] [-t title] [file]* 1292 USAGE: idle [-deins] [-t title] [file]*