annotate Lib/code.py @ 10123:bc287c6cfa23 legacy-trunk

Restructured a bit.
author Guido van Rossum <guido@python.org>
date Mon, 08 Feb 1999 22:27:18 +0000
parents 913eb31b0317
children d7eca5b0960a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9441
913eb31b0317 Moved compile_command() to a file of its own (codeop.py).
Guido van Rossum <guido@python.org>
parents: 9405
diff changeset
1 """Utilities needed to emulate Python's interactive interpreter.
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
2
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
3 Inspired by similar code by Jeff Epler and Fredrik Lundh.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
4 """
5835
b9063f6f811c Checking in new module code.py -- utilities dealing with code objects.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5
9441
913eb31b0317 Moved compile_command() to a file of its own (codeop.py).
Guido van Rossum <guido@python.org>
parents: 9405
diff changeset
6
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
7 import sys
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
8 import string
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
9 import traceback
9441
913eb31b0317 Moved compile_command() to a file of its own (codeop.py).
Guido van Rossum <guido@python.org>
parents: 9405
diff changeset
10 from codeop import compile_command
6423
644484e1a37b Add Jeff Epler's interact() function. Note that it is broken.
Guido van Rossum <guido@python.org>
parents: 5835
diff changeset
11
644484e1a37b Add Jeff Epler's interact() function. Note that it is broken.
Guido van Rossum <guido@python.org>
parents: 5835
diff changeset
12
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
13 class InteractiveInterpreter:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
14 """Base class for InteractiveConsole.
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
15
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
16 This class deals with parsing and interpreter state (the user's
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
17 namespace); it doesn't deal with input buffering or prompting or
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
18 input file naming (the filename is always passed in explicitly).
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
19
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
20 """
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
21
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
22 def __init__(self, locals=None):
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
23 """Constructor.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
24
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
25 The optional 'locals' argument specifies the dictionary in
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
26 which code will be executed; it defaults to a newly created
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
27 dictionary with key "__name__" set to "__console__" and key
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
28 "__doc__" set to None.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
29
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
30 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
31 if locals is None:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
32 locals = {"__name__": "__console__", "__doc__": None}
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
33 self.locals = locals
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
34
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
35 def runsource(self, source, filename="<input>", symbol="single"):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
36 """Compile and run some source in the interpreter.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
37
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
38 Arguments are as for compile_command().
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
39
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
40 One several things can happen:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
41
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
42 1) The input is incorrect; compile_command() raised an
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
43 exception (SyntaxError or OverflowError). A syntax traceback
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
44 will be printed by calling the showsyntaxerror() method.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
45
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
46 2) The input is incomplete, and more input is required;
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
47 compile_command() returned None. Nothing happens.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
48
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
49 3) The input is complete; compile_command() returned a code
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
50 object. The code is executed by calling self.runcode() (which
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
51 also handles run-time exceptions, except for SystemExit).
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
52
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
53 The return value is 1 in case 2, 0 in the other cases (unless
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
54 an exception is raised). The return value can be used to
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
55 decide whether to use sys.ps1 or sys.ps2 to prompt the next
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
56 line.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
57
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
58 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
59 try:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
60 code = compile_command(source, filename, symbol)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
61 except (OverflowError, SyntaxError):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
62 # Case 1
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
63 self.showsyntaxerror(filename)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
64 return 0
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
65
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
66 if code is None:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
67 # Case 2
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
68 return 1
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
69
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
70 # Case 3
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
71 self.runcode(code)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
72 return 0
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
73
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
74 def runcode(self, code):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
75 """Execute a code object.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
76
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
77 When an exception occurs, self.showtraceback() is called to
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
78 display a traceback. All exceptions are caught except
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
79 SystemExit, which is reraised.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
80
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
81 A note about KeyboardInterrupt: this exception may occur
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
82 elsewhere in this code, and may not always be caught. The
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
83 caller should be prepared to deal with it.
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
84
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
85 """
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
86 try:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
87 exec code in self.locals
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
88 except SystemExit:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
89 raise
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
90 except:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
91 self.showtraceback()
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
92
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
93 def showsyntaxerror(self, filename=None):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
94 """Display the syntax error that just occurred.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
95
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
96 This doesn't display a stack trace because there isn't one.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
97
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
98 If a filename is given, it is stuffed in the exception instead
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
99 of what was there before (because Python's parser always uses
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
100 "<string>" when reading from a string).
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
101
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
102 The output is written by self.write(), below.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
103
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
104 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
105 type, value, sys.last_traceback = sys.exc_info()
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
106 sys.last_type = type
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
107 sys.last_value = value
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
108 if filename and type is SyntaxError:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
109 # Work hard to stuff the correct filename in the exception
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
110 try:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
111 msg, (dummy_filename, lineno, offset, line) = value
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
112 except:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
113 # Not the format we expect; leave it alone
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
114 pass
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
115 else:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
116 # Stuff in the right filename
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
117 try:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
118 # Assume SyntaxError is a class exception
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
119 value = SyntaxError(msg, (filename, lineno, offset, line))
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
120 except:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
121 # If that failed, assume SyntaxError is a string
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
122 value = msg, (filename, lineno, offset, line)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
123 list = traceback.format_exception_only(type, value)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
124 map(self.write, list)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
125
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
126 def showtraceback(self):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
127 """Display the exception that just occurred.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
128
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
129 We remove the first stack item because it is our own code.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
130
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
131 The output is written by self.write(), below.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
132
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
133 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
134 try:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
135 type, value, tb = sys.exc_info()
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
136 sys.last_type = type
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
137 sys.last_value = value
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
138 sys.last_traceback = tb
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
139 tblist = traceback.extract_tb(tb)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
140 del tblist[:1]
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
141 list = traceback.format_list(tblist)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
142 if list:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
143 list.insert(0, "Traceback (innermost last):\n")
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
144 list[len(list):] = traceback.format_exception_only(type, value)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
145 finally:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
146 tblist = tb = None
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
147 map(self.write, list)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
148
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
149 def write(self, data):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
150 """Write a string.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
151
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
152 The base implementation writes to sys.stderr; a subclass may
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
153 replace this with a different implementation.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
154
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
155 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
156 sys.stderr.write(data)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
157
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
158
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
159 class InteractiveConsole(InteractiveInterpreter):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
160 """Closely emulate the behavior of the interactive Python interpreter.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
161
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
162 This class builds on InteractiveInterpreter and adds prompting
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
163 using the familiar sys.ps1 and sys.ps2, and input buffering.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
164
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
165 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
166
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
167 def __init__(self, locals=None, filename="<console>"):
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
168 """Constructor.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
169
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
170 The optional locals argument will be passed to the
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
171 InteractiveInterpreter base class.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
172
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
173 The optional filename argument should specify the (file)name
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
174 of the input stream; it will show up in tracebacks.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
175
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
176 """
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
177 InteractiveInterpreter.__init__(self, locals)
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
178 self.filename = filename
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
179 self.resetbuffer()
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
180
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
181 def resetbuffer(self):
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
182 """Reset the input buffer."""
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
183 self.buffer = []
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
184
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
185 def interact(self, banner=None):
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
186 """Closely emulate the interactive Python console.
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
187
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
188 The optional banner argument specify the banner to print
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
189 before the first interaction; by default it prints a banner
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
190 similar to the one printed by the real Python interpreter,
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
191 followed by the current class name in parentheses (so as not
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
192 to confuse this with the real interpreter -- since it's so
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
193 close!).
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
194
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
195 """
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
196 try:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
197 sys.ps1
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
198 except AttributeError:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
199 sys.ps1 = ">>> "
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
200 try:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
201 sys.ps2
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
202 except AttributeError:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
203 sys.ps2 = "... "
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
204 if banner is None:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
205 self.write("Python %s on %s\n%s\n(%s)\n" %
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
206 (sys.version, sys.platform, sys.copyright,
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
207 self.__class__.__name__))
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
208 else:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
209 self.write("%s\n" % str(banner))
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
210 more = 0
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
211 while 1:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
212 try:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
213 if more:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
214 prompt = sys.ps2
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
215 else:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
216 prompt = sys.ps1
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
217 try:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
218 line = self.raw_input(prompt)
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
219 except EOFError:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
220 self.write("\n")
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
221 break
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
222 else:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
223 more = self.push(line)
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
224 except KeyboardInterrupt:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
225 self.write("\nKeyboardInterrupt\n")
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
226 self.resetbuffer()
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
227 more = 0
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
228
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
229 def push(self, line):
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
230 """Push a line to the interpreter.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
231
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
232 The line should not have a trailing newline; it may have
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
233 internal newlines. The line is appended to a buffer and the
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
234 interpreter's runsource() method is called with the
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
235 concatenated contents of the buffer as source. If this
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
236 indicates that the command was executed or invalid, the buffer
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
237 is reset; otherwise, the command is incomplete, and the buffer
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
238 is left as it was after the line was appended. The return
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
239 value is 1 if more input is required, 0 if the line was dealt
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
240 with in some way (this is the same as runsource()).
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
241
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
242 """
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
243 self.buffer.append(line)
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
244 source = string.join(self.buffer, "\n")
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
245 more = self.runsource(source, self.filename)
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
246 if not more:
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
247 self.resetbuffer()
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
248 return more
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
249
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
250 def raw_input(self, prompt=""):
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
251 """Write a prompt and read a line.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
252
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
253 The returned line does not include the trailing newline.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
254 When the user enters the EOF key sequence, EOFError is raised.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
255
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
256 The base implementation uses the built-in function
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
257 raw_input(); a subclass may replace this with a different
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
258 implementation.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
259
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
260 """
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
261 return raw_input(prompt)
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
262
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
263
9405
3886165dba42 Rename 'locals' argument to top-level interact() function to 'local'
Guido van Rossum <guido@python.org>
parents: 9137
diff changeset
264 def interact(banner=None, readfunc=None, local=None):
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
265 """Closely emulate the interactive Python interpreter.
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
266
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
267 This is a backwards compatible interface to the InteractiveConsole
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
268 class. When readfunc is not specified, it attempts to import the
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
269 readline module to enable GNU readline if it is available.
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
270
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
271 Arguments (all optional, all default to None):
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
272
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
273 banner -- passed to InteractiveConsole.interact()
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
274 readfunc -- if not None, replaces InteractiveConsole.raw_input()
9405
3886165dba42 Rename 'locals' argument to top-level interact() function to 'local'
Guido van Rossum <guido@python.org>
parents: 9137
diff changeset
275 local -- passed to InteractiveInterpreter.__init__()
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
276
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
277 """
9405
3886165dba42 Rename 'locals' argument to top-level interact() function to 'local'
Guido van Rossum <guido@python.org>
parents: 9137
diff changeset
278 console = InteractiveConsole(local)
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
279 if readfunc is not None:
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
280 console.raw_input = readfunc
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
281 else:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
282 try:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
283 import readline
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
284 except:
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
285 pass
8543
e951bf2d7d93 Subsume the interact() function in a class. This should make it
Guido van Rossum <guido@python.org>
parents: 7755
diff changeset
286 console.interact(banner)
9137
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
287
0329d419e506 Reworked it quite a bit. There are now two classes: a base class,
Guido van Rossum <guido@python.org>
parents: 8543
diff changeset
288
6423
644484e1a37b Add Jeff Epler's interact() function. Note that it is broken.
Guido van Rossum <guido@python.org>
parents: 5835
diff changeset
289 if __name__ == '__main__':
644484e1a37b Add Jeff Epler's interact() function. Note that it is broken.
Guido van Rossum <guido@python.org>
parents: 5835
diff changeset
290 interact()