Mercurial > cpython-lru_cache-weakref
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 |
| 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 |
