Show More
@@ -2,7 +2,7 b'' | |||
|
2 | 2 | """ |
|
3 | 3 | Logger class for IPython's logging facilities. |
|
4 | 4 | |
|
5 |
$Id: Logger.py 9 |
|
|
5 | $Id: Logger.py 984 2005-12-31 08:40:31Z fperez $ | |
|
6 | 6 | """ |
|
7 | 7 | |
|
8 | 8 | #***************************************************************************** |
@@ -181,6 +181,7 b' which already exists. But you must first start the logging process with' | |||
|
181 | 181 | self._i00 = line+'\n' |
|
182 | 182 | #print 'Logging input:<%s>' % line # dbg |
|
183 | 183 | input_hist.append(self._i00) |
|
184 | #print '---[%s]' % (len(input_hist)-1,) # dbg | |
|
184 | 185 | |
|
185 | 186 | # hackish access to top-level namespace to create _i1,_i2... dynamically |
|
186 | 187 | to_main = {'_i':self._i,'_ii':self._ii,'_iii':self._iii} |
@@ -191,6 +192,12 b' which already exists. But you must first start the logging process with' | |||
|
191 | 192 | # get resumed. |
|
192 | 193 | while in_num >= len(input_hist): |
|
193 | 194 | input_hist.append('\n') |
|
195 | # but if the opposite is true (a macro can produce multiple inputs | |
|
196 | # with no output display called), then bring the output counter in | |
|
197 | # sync: | |
|
198 | last_num = len(input_hist)-1 | |
|
199 | if in_num != last_num: | |
|
200 | in_num = self.shell.outputcache.prompt_count = last_num | |
|
194 | 201 | new_i = '_i%s' % in_num |
|
195 | 202 | if continuation: |
|
196 | 203 | self._i00 = '%s%s\n' % (self.shell.user_ns[new_i],line) |
@@ -1,7 +1,7 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | """Magic functions for InteractiveShell. |
|
3 | 3 | |
|
4 |
$Id: Magic.py 9 |
|
|
4 | $Id: Magic.py 984 2005-12-31 08:40:31Z fperez $""" | |
|
5 | 5 | |
|
6 | 6 | #***************************************************************************** |
|
7 | 7 | # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and |
@@ -451,17 +451,19 b' Currently the magic system has the following functions:\\n"""' | |||
|
451 | 451 | |
|
452 | 452 | This feature is only available if numbered prompts are in use.""" |
|
453 | 453 | |
|
454 | if not self.shell.outputcache.do_full_cache: | |
|
454 | shell = self.shell | |
|
455 | if not shell.outputcache.do_full_cache: | |
|
455 | 456 | print 'This feature is only available if numbered prompts are in use.' |
|
456 | 457 | return |
|
457 | 458 | opts,args = self.parse_options(parameter_s,'n',mode='list') |
|
458 | 459 | |
|
460 | input_hist = shell.input_hist | |
|
459 | 461 | default_length = 40 |
|
460 | 462 | if len(args) == 0: |
|
461 | final = self.shell.outputcache.prompt_count | |
|
463 | final = len(input_hist) | |
|
462 | 464 | init = max(1,final-default_length) |
|
463 | 465 | elif len(args) == 1: |
|
464 | final = self.shell.outputcache.prompt_count | |
|
466 | final = len(input_hist) | |
|
465 | 467 | init = max(1,final-int(args[0])) |
|
466 | 468 | elif len(args) == 2: |
|
467 | 469 | init,final = map(int,args) |
@@ -471,18 +473,13 b' Currently the magic system has the following functions:\\n"""' | |||
|
471 | 473 | return |
|
472 | 474 | width = len(str(final)) |
|
473 | 475 | line_sep = ['','\n'] |
|
474 | input_hist = self.shell.input_hist | |
|
475 | 476 | print_nums = not opts.has_key('n') |
|
476 | 477 | for in_num in range(init,final): |
|
477 | 478 | inline = input_hist[in_num] |
|
478 | multiline = inline.count('\n') > 1 | |
|
479 | multiline = int(inline.count('\n') > 1) | |
|
479 | 480 | if print_nums: |
|
480 |
print str(in_num).ljust(width) |
|
|
481 | if inline.startswith('#'+self.shell.ESC_MAGIC) or \ | |
|
482 | inline.startswith('#!'): | |
|
483 | print inline[1:], | |
|
484 | else: | |
|
485 | print inline, | |
|
481 | print '%s:%s' % (str(in_num).ljust(width),line_sep[multiline]), | |
|
482 | print inline, | |
|
486 | 483 | |
|
487 | 484 | def magic_hist(self, parameter_s=''): |
|
488 | 485 | """Alternate name for %history.""" |
@@ -1356,7 +1353,13 b' Currently the magic system has the following functions:\\n"""' | |||
|
1356 | 1353 | name = '__main__' |
|
1357 | 1354 | prog_ns = {'__name__':name} |
|
1358 | 1355 | |
|
1359 | # pickle fix. See iplib for an explanation | |
|
1356 | # pickle fix. See iplib for an explanation. But we need to make sure | |
|
1357 | # that, if we overwrite __main__, we replace it at the end | |
|
1358 | if prog_ns['__name__'] == '__main__': | |
|
1359 | restore_main = sys.modules['__main__'] | |
|
1360 | else: | |
|
1361 | restore_main = False | |
|
1362 | ||
|
1360 | 1363 | sys.modules[prog_ns['__name__']] = FakeModule(prog_ns) |
|
1361 | 1364 | |
|
1362 | 1365 | stats = None |
@@ -1444,6 +1447,8 b' Currently the magic system has the following functions:\\n"""' | |||
|
1444 | 1447 | self.shell.user_ns.update(prog_ns) |
|
1445 | 1448 | finally: |
|
1446 | 1449 | sys.argv = save_argv |
|
1450 | if restore_main: | |
|
1451 | sys.modules['__main__'] = restore_main | |
|
1447 | 1452 | return stats |
|
1448 | 1453 | |
|
1449 | 1454 | def magic_runlog(self, parameter_s =''): |
@@ -1,7 +1,7 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | """Release data for the IPython project. |
|
3 | 3 | |
|
4 |
$Id: Release.py 98 |
|
|
4 | $Id: Release.py 984 2005-12-31 08:40:31Z fperez $""" | |
|
5 | 5 | |
|
6 | 6 | #***************************************************************************** |
|
7 | 7 | # Copyright (C) 2001-2005 Fernando Perez <fperez@colorado.edu> |
@@ -22,9 +22,9 b" name = 'ipython'" | |||
|
22 | 22 | # because bdist_rpm does not accept dashes (an RPM) convention, and |
|
23 | 23 | # bdist_deb does not accept underscores (a Debian convention). |
|
24 | 24 | |
|
25 |
version = '0.7.0.rc |
|
|
25 | version = '0.7.0.rc4' | |
|
26 | 26 | |
|
27 |
revision = '$Revision: 98 |
|
|
27 | revision = '$Revision: 984 $' | |
|
28 | 28 | |
|
29 | 29 | description = "An enhanced interactive Python shell." |
|
30 | 30 |
@@ -6,7 +6,7 b' Requires Python 2.1 or newer.' | |||
|
6 | 6 | |
|
7 | 7 | This file contains all the classes and helper functions specific to IPython. |
|
8 | 8 | |
|
9 |
$Id: iplib.py 98 |
|
|
9 | $Id: iplib.py 984 2005-12-31 08:40:31Z fperez $ | |
|
10 | 10 | """ |
|
11 | 11 | |
|
12 | 12 | #***************************************************************************** |
@@ -237,7 +237,7 b' class SyntaxTB(ultraTB.ListTB):' | |||
|
237 | 237 | # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell', |
|
238 | 238 | # 'self.value'] |
|
239 | 239 | |
|
240 | class InteractiveShell(Magic): | |
|
240 | class InteractiveShell(object,Magic): | |
|
241 | 241 | """An enhanced console for Python.""" |
|
242 | 242 | |
|
243 | 243 | # class attribute to indicate whether the class supports threads or not. |
@@ -388,6 +388,7 b' class InteractiveShell(Magic):' | |||
|
388 | 388 | raise KeyError,'user_ns dictionary MUST have a "__name__" key' |
|
389 | 389 | else: |
|
390 | 390 | #print "pickle hack in place" # dbg |
|
391 | #print 'main_name:',main_name # dbg | |
|
391 | 392 | sys.modules[main_name] = FakeModule(self.user_ns) |
|
392 | 393 | |
|
393 | 394 | # List of input with multi-line handling. |
@@ -717,10 +718,7 b' class InteractiveShell(Magic):' | |||
|
717 | 718 | |
|
718 | 719 | |
|
719 | 720 | self.user_ns[key] = obj |
|
720 | ||
|
721 | ||
|
722 | ||
|
723 | ||
|
721 | ||
|
724 | 722 | def set_hook(self,name,hook): |
|
725 | 723 | """set_hook(name,hook) -> sets an internal IPython hook. |
|
726 | 724 |
@@ -1,5 +1,31 b'' | |||
|
1 | 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu> | |
|
2 | ||
|
3 | * IPython/Logger.py (Logger.log): fix a history handling bug. I | |
|
4 | don't know if this is the end of it, but the behavior now is | |
|
5 | certainly much more correct. Note that coupled with macros, | |
|
6 | slightly surprising (at first) behavior may occur: a macro will in | |
|
7 | general expand to multiple lines of input, so upon exiting, the | |
|
8 | in/out counters will both be bumped by the corresponding amount | |
|
9 | (as if the macro's contents had been typed interactively). Typing | |
|
10 | %hist will reveal the intermediate (silently processed) lines. | |
|
11 | ||
|
12 | * IPython/Magic.py (magic_run): fix a subtle bug which could cause | |
|
13 | pickle to fail (%run was overwriting __main__ and not restoring | |
|
14 | it, but pickle relies on __main__ to operate). | |
|
15 | ||
|
16 | * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now | |
|
17 | using properties, but forgot to make the main InteractiveShell | |
|
18 | class a new-style class. Properties fail silently, and | |
|
19 | misteriously, with old-style class (getters work, but | |
|
20 | setters don't do anything). | |
|
21 | ||
|
1 | 22 | 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu> |
|
2 | 23 | |
|
24 | * IPython/Magic.py (magic_history): fix history reporting bug (I | |
|
25 | know some nasties are still there, I just can't seem to find a | |
|
26 | reproducible test case to track them down; the input history is | |
|
27 | falling out of sync...) | |
|
28 | ||
|
3 | 29 | * IPython/iplib.py (handle_shell_escape): fix bug where both |
|
4 | 30 | aliases and system accesses where broken for indented code (such |
|
5 | 31 | as loops). |
General Comments 0
You need to be logged in to leave comments.
Login now