Show More
@@ -15,7 +15,7 b' details on the PSF (Python Software Foundation) standard license, see:' | |||||
15 |
|
15 | |||
16 | http://www.python.org/2.2.3/license.html |
|
16 | http://www.python.org/2.2.3/license.html | |
17 |
|
17 | |||
18 |
$Id: Debugger.py 178 |
|
18 | $Id: Debugger.py 1787 2006-09-27 06:56:29Z fperez $""" | |
19 |
|
19 | |||
20 | #***************************************************************************** |
|
20 | #***************************************************************************** | |
21 | # |
|
21 | # | |
@@ -65,63 +65,14 b' def _file_lines(fname):' | |||||
65 | class Pdb(pdb.Pdb): |
|
65 | class Pdb(pdb.Pdb): | |
66 | """Modified Pdb class, does not load readline.""" |
|
66 | """Modified Pdb class, does not load readline.""" | |
67 |
|
67 | |||
68 | # Ugly hack: we can't call the parent constructor, because it binds |
|
68 | if sys.version[:3] >= '2.5': | |
69 | # readline and breaks tab-completion. This means we have to COPY the |
|
|||
70 | # constructor here, and that requires tracking various python versions. |
|
|||
71 |
|
||||
72 | if sys.version[:3] == '2.5': |
|
|||
73 | def __init__(self,color_scheme='NoColor',completekey=None, |
|
69 | def __init__(self,color_scheme='NoColor',completekey=None, | |
74 | stdin=None, stdout=None): |
|
70 | stdin=None, stdout=None): | |
75 | bdb.Bdb.__init__(self) |
|
|||
76 |
|
||||
77 | # IPython change |
|
|||
78 | # don't load readline |
|
|||
79 | cmd.Cmd.__init__(self,completekey,stdin,stdout) |
|
|||
80 | #cmd.Cmd.__init__(self, completekey, stdin, stdout) |
|
|||
81 | # /IPython change |
|
|||
82 |
|
||||
83 | if stdout: |
|
|||
84 | self.use_rawinput = 0 |
|
|||
85 | self.prompt = '(Pdb) ' |
|
|||
86 | self.aliases = {} |
|
|||
87 | self.mainpyfile = '' |
|
|||
88 | self._wait_for_mainpyfile = 0 |
|
|||
89 | # Try to load readline if it exists |
|
|||
90 | try: |
|
|||
91 | import readline |
|
|||
92 | except ImportError: |
|
|||
93 | pass |
|
|||
94 |
|
||||
95 | # Read $HOME/.pdbrc and ./.pdbrc |
|
|||
96 | self.rcLines = [] |
|
|||
97 | if 'HOME' in os.environ: |
|
|||
98 | envHome = os.environ['HOME'] |
|
|||
99 | try: |
|
|||
100 | rcFile = open(os.path.join(envHome, ".pdbrc")) |
|
|||
101 | except IOError: |
|
|||
102 | pass |
|
|||
103 | else: |
|
|||
104 | for line in rcFile.readlines(): |
|
|||
105 | self.rcLines.append(line) |
|
|||
106 | rcFile.close() |
|
|||
107 | try: |
|
|||
108 | rcFile = open(".pdbrc") |
|
|||
109 | except IOError: |
|
|||
110 | pass |
|
|||
111 | else: |
|
|||
112 | for line in rcFile.readlines(): |
|
|||
113 | self.rcLines.append(line) |
|
|||
114 | rcFile.close() |
|
|||
115 |
|
||||
116 | self.commands = {} # associates a command list to breakpoint numbers |
|
|||
117 | self.commands_doprompt = {} # for each bp num, tells if the prompt must be disp. after execing the cmd list |
|
|||
118 | self.commands_silent = {} # for each bp num, tells if the stack trace must be disp. after execing the cmd list |
|
|||
119 | self.commands_defining = False # True while in the process of defining a command list |
|
|||
120 | self.commands_bnum = None # The breakpoint number for which we are defining a list |
|
|||
121 |
|
||||
122 |
|
71 | |||
|
72 | # Parent constructor: | |||
|
73 | pdb.Pdb.__init__(self,completekey,stdin,stdout) | |||
|
74 | ||||
123 | # IPython changes... |
|
75 | # IPython changes... | |
124 |
|
||||
125 | self.prompt = 'ipdb> ' # The default prompt is '(Pdb)' |
|
76 | self.prompt = 'ipdb> ' # The default prompt is '(Pdb)' | |
126 | self.aliases = {} |
|
77 | self.aliases = {} | |
127 |
|
78 | |||
@@ -143,10 +94,11 b' class Pdb(pdb.Pdb):' | |||||
143 | cst['LightBG'].colors.breakpoint_disabled = C.Red |
|
94 | cst['LightBG'].colors.breakpoint_disabled = C.Red | |
144 |
|
95 | |||
145 | self.set_colors(color_scheme) |
|
96 | self.set_colors(color_scheme) | |
146 |
|
||||
147 |
|
97 | |||
148 | else: |
|
98 | else: | |
149 |
|
99 | # Ugly hack: for Python 2.3-2.4, we can't call the parent constructor, | ||
|
100 | # because it binds readline and breaks tab-completion. This means we | |||
|
101 | # have to COPY the constructor here. | |||
150 | def __init__(self,color_scheme='NoColor'): |
|
102 | def __init__(self,color_scheme='NoColor'): | |
151 | bdb.Bdb.__init__(self) |
|
103 | bdb.Bdb.__init__(self) | |
152 | cmd.Cmd.__init__(self,completekey=None) # don't load readline |
|
104 | cmd.Cmd.__init__(self,completekey=None) # don't load readline |
@@ -1,7 +1,7 b'' | |||||
1 | # -*- coding: utf-8 -*- |
|
1 | # -*- coding: utf-8 -*- | |
2 | """Magic functions for InteractiveShell. |
|
2 | """Magic functions for InteractiveShell. | |
3 |
|
3 | |||
4 |
$Id: Magic.py 1 |
|
4 | $Id: Magic.py 1787 2006-09-27 06:56:29Z fperez $""" | |
5 |
|
5 | |||
6 | #***************************************************************************** |
|
6 | #***************************************************************************** | |
7 | # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and |
|
7 | # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and | |
@@ -2198,11 +2198,12 b' Currently the magic system has the following functions:\\n"""' | |||||
2198 | import IPython.rlineimpl as readline |
|
2198 | import IPython.rlineimpl as readline | |
2199 | if not readline.have_readline: |
|
2199 | if not readline.have_readline: | |
2200 | msg = """\ |
|
2200 | msg = """\ | |
2201 |
Proper color support under MS Windows requires |
|
2201 | Proper color support under MS Windows requires the pyreadline library. | |
2202 | You can find it at: |
|
2202 | You can find it at: | |
2203 | http://sourceforge.net/projects/uncpythontools |
|
2203 | http://ipython.scipy.org/moin/PyReadline/Intro | |
2204 | Gary's readline needs the ctypes module, from: |
|
2204 | Gary's readline needs the ctypes module, from: | |
2205 | http://starship.python.net/crew/theller/ctypes |
|
2205 | http://starship.python.net/crew/theller/ctypes | |
|
2206 | (Note that ctypes is already part of Python versions 2.5 and newer). | |||
2206 |
|
2207 | |||
2207 | Defaulting color scheme to 'NoColor'""" |
|
2208 | Defaulting color scheme to 'NoColor'""" | |
2208 | new_scheme = 'NoColor' |
|
2209 | new_scheme = 'NoColor' |
@@ -6,7 +6,7 b' Requires Python 2.3 or newer.' | |||||
6 |
|
6 | |||
7 | This file contains all the classes and helper functions specific to IPython. |
|
7 | This file contains all the classes and helper functions specific to IPython. | |
8 |
|
8 | |||
9 |
$Id: iplib.py 178 |
|
9 | $Id: iplib.py 1787 2006-09-27 06:56:29Z fperez $ | |
10 | """ |
|
10 | """ | |
11 |
|
11 | |||
12 | #***************************************************************************** |
|
12 | #***************************************************************************** | |
@@ -219,6 +219,12 b' class InteractiveShell(object,Magic):' | |||||
219 | # Default name given in compilation of code |
|
219 | # Default name given in compilation of code | |
220 | self.filename = '<ipython console>' |
|
220 | self.filename = '<ipython console>' | |
221 |
|
221 | |||
|
222 | # Install our own quitter instead of the builtins. For python2.3-2.4, | |||
|
223 | # this brings in behavior more like 2.5, and for 2.5 it's almost | |||
|
224 | # identical to Python's official behavior (except we lack the message, | |||
|
225 | # but with autocall the need for that is much less). | |||
|
226 | __builtin__.exit = __builtin__.quit = self.exit | |||
|
227 | ||||
222 | # Make an empty namespace, which extension writers can rely on both |
|
228 | # Make an empty namespace, which extension writers can rely on both | |
223 | # existing and NEVER being used by ipython itself. This gives them a |
|
229 | # existing and NEVER being used by ipython itself. This gives them a | |
224 | # convenient location for storing additional information and state |
|
230 | # convenient location for storing additional information and state | |
@@ -1801,14 +1807,7 b' want to merge them back into the new files.""" % locals()' | |||||
1801 | continuation in a sequence of inputs. |
|
1807 | continuation in a sequence of inputs. | |
1802 | """ |
|
1808 | """ | |
1803 |
|
1809 | |||
1804 | try: |
|
1810 | line = raw_input_original(prompt) | |
1805 | line = raw_input_original(prompt) |
|
|||
1806 | except ValueError: |
|
|||
1807 | # python 2.5 closes stdin on exit -> ValueError |
|
|||
1808 | # xxx should we delete 'exit' and 'quit' from builtin? |
|
|||
1809 | self.exit_now = True |
|
|||
1810 | return '' |
|
|||
1811 |
|
||||
1812 |
|
1811 | |||
1813 | # Try to be reasonably smart about not re-indenting pasted input more |
|
1812 | # Try to be reasonably smart about not re-indenting pasted input more | |
1814 | # than necessary. We do this by trimming out the auto-indent initial |
|
1813 | # than necessary. We do this by trimming out the auto-indent initial | |
@@ -2252,7 +2251,6 b' want to merge them back into the new files.""" % locals()' | |||||
2252 | self.exit_now = True |
|
2251 | self.exit_now = True | |
2253 | else: |
|
2252 | else: | |
2254 | self.exit_now = True |
|
2253 | self.exit_now = True | |
2255 | return self.exit_now |
|
|||
2256 |
|
2254 | |||
2257 | def safe_execfile(self,fname,*where,**kw): |
|
2255 | def safe_execfile(self,fname,*where,**kw): | |
2258 | fname = os.path.expanduser(fname) |
|
2256 | fname = os.path.expanduser(fname) |
@@ -235,28 +235,6 b' class PythonRunner(InteractiveRunner):' | |||||
235 | InteractiveRunner.__init__(self,program,prompts,args) |
|
235 | InteractiveRunner.__init__(self,program,prompts,args) | |
236 |
|
236 | |||
237 |
|
237 | |||
238 | class DocTestRunner(PythonRunner): |
|
|||
239 | """A python runner customized for doctest usage.""" |
|
|||
240 |
|
||||
241 | def run_source(self,source,interact=False): |
|
|||
242 | """Run the given source code interactively. |
|
|||
243 |
|
||||
244 | See the parent docstring for details. |
|
|||
245 | """ |
|
|||
246 |
|
||||
247 | # if the source is a string, chop it up in lines so we can iterate |
|
|||
248 | # over it just as if it were an open file. |
|
|||
249 | if not isinstance(source,file): |
|
|||
250 | source = source.splitlines(True) |
|
|||
251 |
|
||||
252 |
|
||||
253 | for line in source: |
|
|||
254 | pass |
|
|||
255 | # finish by calling the parent run_source method |
|
|||
256 | super(DocTestRunner,self).run_source(dsource,interact) |
|
|||
257 |
|
||||
258 |
|
||||
259 |
|
||||
260 | class SAGERunner(InteractiveRunner): |
|
238 | class SAGERunner(InteractiveRunner): | |
261 | """Interactive SAGE runner. |
|
239 | """Interactive SAGE runner. | |
262 |
|
240 |
@@ -60,7 +60,7 b' You can implement other color schemes easily, the syntax is fairly' | |||||
60 | self-explanatory. Please send back new schemes you develop to the author for |
|
60 | self-explanatory. Please send back new schemes you develop to the author for | |
61 | possible inclusion in future releases. |
|
61 | possible inclusion in future releases. | |
62 |
|
62 | |||
63 |
$Id: ultraTB.py 178 |
|
63 | $Id: ultraTB.py 1787 2006-09-27 06:56:29Z fperez $""" | |
64 |
|
64 | |||
65 | #***************************************************************************** |
|
65 | #***************************************************************************** | |
66 | # Copyright (C) 2001 Nathaniel Gray <n8gray@caltech.edu> |
|
66 | # Copyright (C) 2001 Nathaniel Gray <n8gray@caltech.edu> | |
@@ -204,10 +204,14 b' class TBTools:' | |||||
204 |
|
204 | |||
205 | def set_colors(self,*args,**kw): |
|
205 | def set_colors(self,*args,**kw): | |
206 | """Shorthand access to the color table scheme selector method.""" |
|
206 | """Shorthand access to the color table scheme selector method.""" | |
207 |
|
207 | |||
|
208 | # Set own color table | |||
208 | self.color_scheme_table.set_active_scheme(*args,**kw) |
|
209 | self.color_scheme_table.set_active_scheme(*args,**kw) | |
209 | # for convenience, set Colors to the active scheme |
|
210 | # for convenience, set Colors to the active scheme | |
210 | self.Colors = self.color_scheme_table.active_colors |
|
211 | self.Colors = self.color_scheme_table.active_colors | |
|
212 | # Also set colors of debugger | |||
|
213 | if hasattr(self,'pdb') and self.pdb is not None: | |||
|
214 | self.pdb.set_colors(*args,**kw) | |||
211 |
|
215 | |||
212 | def color_toggle(self): |
|
216 | def color_toggle(self): | |
213 | """Toggle between the currently active color scheme and NoColor.""" |
|
217 | """Toggle between the currently active color scheme and NoColor.""" | |
@@ -692,7 +696,7 b' class VerboseTB(TBTools):' | |||||
692 | etb = etb.tb_next |
|
696 | etb = etb.tb_next | |
693 | self.pdb.botframe = etb.tb_frame |
|
697 | self.pdb.botframe = etb.tb_frame | |
694 | self.pdb.interaction(self.tb.tb_frame, self.tb) |
|
698 | self.pdb.interaction(self.tb.tb_frame, self.tb) | |
695 |
except |
|
699 | except: | |
696 | print '*** ERROR ***' |
|
700 | print '*** ERROR ***' | |
697 | print 'This version of pdb has a bug and crashed.' |
|
701 | print 'This version of pdb has a bug and crashed.' | |
698 | print 'Returning to IPython...' |
|
702 | print 'Returning to IPython...' |
@@ -1,3 +1,21 b'' | |||||
|
1 | 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu> | |||
|
2 | ||||
|
3 | * IPython/irunner.py (InteractiveRunner.run_source): small fixes | |||
|
4 | to help in handling doctests. irunner is now pretty useful for | |||
|
5 | running standalone scripts and simulate a full interactive session | |||
|
6 | in a format that can be then pasted as a doctest. | |||
|
7 | ||||
|
8 | * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit | |||
|
9 | on top of the default (useless) ones. This also fixes the nasty | |||
|
10 | way in which 2.5's Quitter() exits (reverted [1785]). | |||
|
11 | ||||
|
12 | * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python | |||
|
13 | 2.5. | |||
|
14 | ||||
|
15 | * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb | |||
|
16 | color scheme is updated as well when color scheme is changed | |||
|
17 | interactively. | |||
|
18 | ||||
1 | 2006-09-27 Ville Vainio <vivainio@gmail.com> |
|
19 | 2006-09-27 Ville Vainio <vivainio@gmail.com> | |
2 |
|
20 | |||
3 | * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid |
|
21 | * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid |
General Comments 0
You need to be logged in to leave comments.
Login now