annotate Mac/Lib/quietconsole.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents 1c34a0ce7858
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5748
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 """quietconsole - A module to keep console I/O quiet but dump it when needed"""
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
2 import types
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
3 import sys
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5 class _PseudoStdin:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6 def __init__(self, stdouterr):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 self.keep_stdin = sys.stdin
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
8 sys.stdin = self
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
9 self.keep_stdouterr = stdouterr
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
11 def __del__(self):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
12 self.keep_stdin = self.keep_stdouterr = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
13
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14 def _revert(self):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15 """Return to old state, with true stdio"""
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
16 if self.keep_stdin == None:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
17 return
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
18 sys.stdin = self.keep_stdin
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 self.keep_stdin = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
20 self.keep_stdouterr._revert(1)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
21 self.keep_stdouterr = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
22
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23 def read(self, *args):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
24 self._revert()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25 return apply(sys.stdin.read, args)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27 def readlines(self, *args):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28 self._revert()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
29 return apply(sys.stdin.readlines, args)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
31 def readline(self, *args):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32 self._revert()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33 return apply(sys.stdin.readline, args)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
34
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
35 def close(self):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 self._revert()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
37 sys.stdin.close()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
38
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 class _PseudoStdouterr:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40 def __init__(self):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 self.keep_stdout = sys.stdout
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 self.keep_stderr = sys.stderr
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 sys.stdout = sys.stderr = self
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44 self.data = []
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46 def __del__(self):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 self.keep_stdout = self.keep_stderr = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 def _revert(self, dumpdata=0):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50 if self.keep_stdout == None:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51 return
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52 sys.stdout = self.keep_stdout
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 sys.stderr = self.keep_stderr
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 sys.keep_stdout = self.keep_stderr = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 if dumpdata and self.data:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 for d in self.data:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 sys.stdout.write(d)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58 self.data = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60 def write(self, arg):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 self.data.append(arg)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 def writelines(self, arg):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64 for d in arg:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65 self.data.append(arg)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
66
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
67 def close(self):
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
68 self.keep_stdout = self.keep_stderr = self.data = None
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
69
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
70 beenhere = 0
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
71
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
72 def install():
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
73 global beenhere
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74 if beenhere:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
75 return
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
76 beenhere = 1
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
77 # There's no point in re-installing if the console has been active
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
78 obj = _PseudoStdouterr()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
79 _PseudoStdin(obj)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
80 # No need to keep the objects, they're saved in sys.std{in,out,err}
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
81
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
82 def revert():
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
83 if type(sys.stdin) == types.FileType:
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
84 return # Not installed
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
85 sys.stdin._revert()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
86
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
87 def _test():
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
88 import time
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
89 install()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
90 print "You will not see this yet"
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
91 time.sleep(1)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
92 print "You will not see this yet"
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
93 time.sleep(1)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
94 print "You will not see this yet"
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
95 time.sleep(1)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
96 print "You will not see this yet"
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
97 time.sleep(1)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
98 print "You will not see this yet"
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
99 time.sleep(1)
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
100 print "5 seconds have passed, now you may type something"
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
101 rv = sys.stdin.readline()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
102 print "You typed", rv
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
103
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
104 if __name__ == '__main__':
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
105 _test()
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
106
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
107
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
108
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
109
1c34a0ce7858 Module to buffer stdout/stderr until stdin is read. Useful for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
110