##// END OF EJS Templates
Pprint works again
Pprint works again

File last commit:

Show More
5216 lines | 206.7 KiB | text/plain | TextLexer
2006-02-15 Ville Vainio <vivainio@gmail.com>
* Magic.py: %Pprint work again
2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/hooks.py (editor): quote the call to the editor command,
to allow commands with spaces in them. Problem noted by watching
Ian Oswald's video about textpad under win32 at
* IPython/UserConfig/ipythonrc: Replace @ signs with % when
describing magics (we haven't used @ for a loong time).
* IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
contributed by marienz to close
2006-02-10 Ville Vainio <vivainio@gmail.com>
* genutils.py: getoutput now works in win32 too
* completer.py: alias and magic completion only invoked
at the first "item" in the line, to avoid "cd %store"
2006-02-09 Ville Vainio <vivainio@gmail.com>
* test/*: Added a unit testing framework (finally).
'%run runtests.py' to run test_*.
* ipapi.py: Exposed runlines and set_custom_exc
2006-02-07 Ville Vainio <vivainio@gmail.com>
* iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
instead use "f(1 2)" as before.
2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/demo.py (IPythonDemo): Add new classes to the demo
facilities, for demos processed by the IPython input filter
(IPythonDemo), and for running a script one-line-at-a-time as a
demo, both for pure Python (LineDemo) and for IPython-processed
input (IPythonLineDemo). After a request by Dave Kohel, from the
SAGE team.
(Demo.edit): added and edit() method to the demo objects, to edit
the in-memory copy of the last executed block.
* IPython/Magic.py (magic_edit): add '-r' option for 'raw'
processing to %edit, %macro and %save. These commands can now be
invoked on the unprocessed input as it was typed by the user
(without any prefilters applied). After requests by the SAGE team
at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2006-02-01 Ville Vainio <vivainio@gmail.com>
* setup.py, eggsetup.py: easy_install ipython==dev works
correctly now (on Linux)
* ipy_user_conf,ipmaker: user config changes, removed spurious
* iplib: if rc.banner is string, use it as is.
* Magic: %pycat accepts a string argument and pages it's contents.
2006-01-30 Ville Vainio <vivainio@gmail.com>
* pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
Now %store and bookmarks work through PickleShare, meaning that
concurrent access is possible and all ipython sessions see the
same database situation all the time, instead of snapshot of
the situation when the session was started. Hence, %bookmark
results are immediately accessible from othes sessions. The database
is also available for use by user extensions. See:
* hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
* aliases can now be %store'd
* path.py move to Extensions so that pickleshare does not need
IPython-specific import. Extensions added to pythonpath right
at __init__.
* iplib.py: ipalias deprecated/redundant; aliases are converted and
called with _ip.system and the pre-transformed command string.
2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (interact): Fix that we were not catching
KeyboardInterrupt exceptions properly. I'm not quite sure why the
logic here had to change, but it's fixed now.
2006-01-29 Ville Vainio <vivainio@gmail.com>
* iplib.py: Try to import pyreadline on Windows.
2006-01-27 Ville Vainio <vivainio@gmail.com>
* iplib.py: Expose ipapi as _ip in builtin namespace.
Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
and ip_set_hook (-> _ip.set_hook) redundant. % and !
syntax now produce _ip.* variant of the commands.
* "_ip.options().autoedit_syntax = 2" automatically throws
user to editor for syntax error correction without prompting.
2006-01-27 Ville Vainio <vivainio@gmail.com>
* ipmaker.py: Give "realistic" sys.argv for scripts (without
'ipython' at argv[0]) executed through command line.
NOTE: this DEPRECATES calling ipython with multiple scripts
("ipython a.py b.py c.py")
* iplib.py, hooks.py: Added configurable input prefilter,
named 'input_prefilter'. See ext_rescapture.py for example
* ext_rescapture.py, Magic.py: Better system command output capture
through 'var = !ls' (deprecates user-visible %sc). Same notation
applies for magics, 'var = %alias' assigns alias list to var.
* ipapi.py: added meta() for accessing extension-usable data store.
* iplib.py: added InteractiveShell.getapi(). New magics should be
written doing self.getapi() instead of using the shell directly.
* Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
%store foo >> ~/myfoo.txt to store variables to files (in clean
textual form, not a restorable pickle).
* ipmaker.py: now import ipy_profile_PROFILENAME automatically
* usage.py, Magic.py: added %quickref
* iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
* GetoptErrors when invoking magics etc. with wrong args
are now more helpful:
GetoptError: option -l not recognized (allowed: "qb" )
2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/demo.py (Demo.show): Flush stdout after each block, so
computationally intensive blocks don't appear to stall the demo.
2006-01-24 Ville Vainio <vivainio@gmail.com>
* iplib.py, hooks.py: 'result_display' hook can return a non-None
value to manipulate resulting history entry.
* ipapi.py: Moved TryNext here from hooks.py. Moved functions
to instance methods of IPApi class, to make extending an embedded
IPython feasible. See ext_rehashdir.py for example usage.
* Merged 1071-1076 from banches/0.7.1
2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
* tools/release (daystamp): Fix build tools to use the new
eggsetup.py script to build lightweight eggs.
* Applied changesets 1062 and 1064 before 0.7.1 release.
* IPython/Magic.py (magic_history): Add '-r' option to %hist, to
see the raw input history (without conversions like %ls ->
ipmagic("ls")). After a request from W. Stein, SAGE
(http://modular.ucsd.edu/sage) developer. This information is
stored in the input_hist_raw attribute of the IPython instance, so
developers can access it if needed (it's an InputList instance).
* Versionstring = 0.7.2.svn
* eggsetup.py: A separate script for constructing eggs, creates
proper launch scripts even on Windows (an .exe file in
* ipapi.py: launch_new_instance, launch entry point needed for the
2006-01-23 Ville Vainio <vivainio@gmail.com>
* Added %cpaste magic for pasting python code
2006-01-22 Ville Vainio <vivainio@gmail.com>
* Merge from branches/0.7.1 into trunk, revs 1052-1057
* Versionstring = 0.7.2.svn
* eggsetup.py: A separate script for constructing eggs, creates
proper launch scripts even on Windows (an .exe file in
* ipapi.py: launch_new_instance, launch entry point needed for the
2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
%pfile foo would print the file for foo even if it was a binary.
Now, extensions '.so' and '.dll' are skipped.
* IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
bug, where macros would fail in all threaded modes. I'm not 100%
sure, so I'm going to put out an rc instead of making a release
today, and wait for feedback for at least a few days.
* IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
it...) the handling of pasting external code with autoindent on.
To get out of a multiline input, the rule will appear for most
users unchanged: two blank lines or change the indent level
proposed by IPython. But there is a twist now: you can
add/subtract only *one or two spaces*. If you add/subtract three
or more (unless you completely delete the line), IPython will
accept that line, and you'll need to enter a second one of pure
whitespace. I know it sounds complicated, but I can't find a
different solution that covers all the cases, with the right
heuristics. Hopefully in actual use, nobody will really notice
all these strange rules and things will 'just work'.
2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (interact): catch exceptions which can be
triggered asynchronously by signal handlers. Thanks to an
automatic crash report, submitted by Colin Kingsley
2006-01-20 Ville Vainio <vivainio@gmail.com>
* Ipython/Extensions/ext_rehashdir.py: Created a usable example
(%rehashdir, very useful, try it out) of how to extend ipython
with new magics. Also added Extensions dir to pythonpath to make
importing extensions easy.
* %store now complains when trying to store interactively declared
classes / instances of those classes.
* Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
if they exist, and ipy_user_conf.py with some defaults is created for
the user.
* Startup rehashing done by the config file, not InterpreterExec.
This means system commands are available even without selecting the
pysh profile. It's the sensible default after all.
2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (raw_input): I _think_ I got the pasting of
multiline code with autoindent on working. But I am really not
sure, so this needs more testing. Will commit a debug-enabled
version for now, while I test it some more, so that Ville and
others may also catch any problems. Also made
self.indent_current_str() a method, to ensure that there's no
chance of the indent space count and the corresponding string
falling out of sync. All code needing the string should just call
the method.
2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Magic.py (magic_edit): fix check for when users don't
save their output files, the try/except was in the wrong section.
2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Magic.py (magic_run): fix __file__ global missing from
script's namespace when executed via %run. After a report by
* IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
when using python 2.4. The parent constructor changed in 2.4, and
we need to track it directly (we can't call it, as it messes up
readline and tab-completion inside our pdb would stop working).
After a bug report by R. Bernstein <rocky-AT-panix.com>.
2006-01-16 Ville Vainio <vivainio@gmail.com>
* Ipython/magic.py:Reverted back to old %edit functionality
that returns file contents on exit.
* IPython/path.py: Added Jason Orendorff's "path" module to
IPython tree, http://www.jorendorff.com/articles/python/path/.
You can get path objects conveniently through %sc, and !!, e.g.:
sc files=ls
for p in files.paths: # or files.p
print p,p.mtime
* Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
now work again without considering the exclusion regexp -
hence, things like ',foo my/path' turn to 'foo("my/path")'
instead of syntax error.
2006-01-14 Ville Vainio <vivainio@gmail.com>
* IPython/ipapi.py (ashook, asmagic, options): Added convenience
ipapi decorators for python 2.4 users, options() provides access to rc
* IPython/Magic.py (magic_cd): %cd now accepts backslashes
as path separators (even on Linux ;-). Space character after
backslash (as yielded by tab completer) is still space;
"%cd long\ name" works as expected.
* IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
as "chain of command", with priority. API stays the same,
TryNext exception raised by a hook function signals that
current hook failed and next hook should try handling it, as
suggested by Walter Dörwald <walter@livinglogic.de>. Walter also
requested configurable display hook, which is now implemented.
2006-01-13 Ville Vainio <vivainio@gmail.com>
* IPython/platutils*.py: platform specific utility functions,
so far only set_term_title is implemented (change terminal
label in windowing systems). %cd now changes the title to
current dir.
* IPython/Release.py: Added myself to "authors" list,
had to create new files.
* IPython/iplib.py (handle_shell_escape): fixed logical flaw in
shell escape; not a known bug but had potential to be one in the
* IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
extension API for IPython! See the module for usage example. Fix
OInspect for docstring-less magic functions.
2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (raw_input): temporarily deactivate all
attempts at allowing pasting of code with autoindent on. It
introduced bugs (reported by Prabhu) and I can't seem to find a
robust combination which works in all cases. Will have to revisit
* IPython/genutils.py: remove isspace() function. We've dropped
2.2 compatibility, so it's OK to use the string method.
2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): fix regexp
matching what NOT to autocall on, to include all python binary
operators (including things like 'and', 'or', 'is' and 'in').
Prompted by a bug report on 'foo & bar', but I realized we had
many more potential bug cases with other operators. The regexp is
self.re_exclude_auto, it's fairly commented.
2006-01-12 Ville Vainio <vivainio@gmail.com>
* IPython/iplib.py (make_quoted_expr,handle_shell_escape):
Prettified and hardened string/backslash quoting with ipsystem(),
ipalias() and ipmagic(). Now even \ characters are passed to
%magics, !shell escapes and aliases exactly as they are in the
ipython command line. Should improve backslash experience,
particularly in Windows (path delimiter for some commands that
won't understand '/'), but Unix benefits as well (regexps). %cd
magic still doesn't support backslash path delimiters, though. Also
deleted all pretense of supporting multiline command strings in
!system or %magic commands. Thanks to Jerry McRae for suggestions.
* doc/build_doc_instructions.txt added. Documentation on how to
use doc/update_manual.py, added yesterday. Both files contributed
by Jörgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
doc/*.sh for deprecation at a later date.
* /ipython.py Added ipython.py to root directory for
zero-installation (tar xzvf ipython.tgz; cd ipython; python
ipython.py) and development convenience (no need to kee doing
"setup.py install" between changes).
* Made ! and !! shell escapes work (again) in multiline expressions:
if 1:
2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/ipstruct.py (Struct): Rename IPython.Struct to
IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
module in case-insensitive installation. Was causing crashes
under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
* IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
<marienz-AT-gentoo.org>, closes
2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
problem of excessive CPU usage under *nix and keyboard lag under
2006-01-10 *** Released version 0.7.0
2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Release.py (revision): tag version number to 0.7.0,
ready for release.
* IPython/Magic.py (magic_edit): Add print statement to %edit so
it informs the user of the name of the temp. file used. This can
help if you decide later to reuse that same file, so you know
where to copy the info from.
2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
* setup_bdist_egg.py: little script to build an egg. Added
support in the release tools as well.
2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellWX.__init__): add support for WXPython
version selection (new -wxversion command line and ipythonrc
parameter). Patch contributed by Arnd Baecker
* IPython/iplib.py (embed_mainloop): fix tab-completion in
embedded instances, for variables defined at the interactive
prompt of the embedded ipython. Reported by Arnd.
* IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
it can be used as a (stateful) toggle, or with a direct parameter.
* IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
could be triggered in certain cases and cause the traceback
printer not to work.
2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (_should_recompile): Small fix, closes
http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
Moad for help with tracking it down.
* IPython/iplib.py (handle_auto): fix autocall handling for
objects which support BOTH __getitem__ and __call__ (so that f [x]
is left alone, instead of becoming f([x]) automatically).
* IPython/Magic.py (magic_cd): fix crash when cd -b was used.
Ville's patch.
2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (handle_auto): changed autocall semantics to
include 'smart' mode, where the autocall transformation is NOT
applied if there are no arguments on the line. This allows you to
just type 'foo' if foo is a callable to see its internal form,
instead of having it called with no arguments (typically a
mistake). The old 'full' autocall still exists: for that, you
need to set the 'autocall' parameter to 2 in your ipythonrc file.
* IPython/completer.py (Completer.attr_matches): add
tab-completion support for Enthoughts' traits. After a report by
Arnd and a patch by Prabhu.
2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/ultraTB.py (_fixed_getinnerframes): added Alex
Schmolck's patch to fix inspect.getinnerframes().
* IPython/iplib.py (InteractiveShell.__init__): significant fixes
for embedded instances, regarding handling of namespaces and items
added to the __builtin__ one. Multiple embedded instances and
recursive embeddings should work better now (though I'm not sure
I've got all the corner cases fixed, that code is a bit of a brain
* IPython/Magic.py (magic_edit): added support to edit in-memory
macros (automatically creates the necessary temp files). %edit
also doesn't return the file contents anymore, it's just noise.
* IPython/completer.py (Completer.attr_matches): revert change to
complete only on attributes listed in __all__. I realized it
cripples the tab-completion system as a tool for exploring the
internals of unknown libraries (it renders any non-__all__
attribute off-limits). I got bit by this when trying to see
something inside the dis module.
2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): add .meta
namespace for users and extension writers to hold data in. This
follows the discussion in
* IPython/completer.py (IPCompleter.complete): small patch to help
tab-completion under Emacs, after a suggestion by John Barnard
* IPython/Magic.py (Magic.extract_input_slices): added support for
the slice notation in magics to use N-M to represent numbers N...M
(closed endpoints). This is used by %macro and %save.
* IPython/completer.py (Completer.attr_matches): for modules which
define __all__, complete only on those. After a patch by Jeffrey
Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
speed up this routine.
* IPython/Logger.py (Logger.log): fix a history handling bug. I
don't know if this is the end of it, but the behavior now is
certainly much more correct. Note that coupled with macros,
slightly surprising (at first) behavior may occur: a macro will in
general expand to multiple lines of input, so upon exiting, the
in/out counters will both be bumped by the corresponding amount
(as if the macro's contents had been typed interactively). Typing
%hist will reveal the intermediate (silently processed) lines.
* IPython/Magic.py (magic_run): fix a subtle bug which could cause
pickle to fail (%run was overwriting __main__ and not restoring
it, but pickle relies on __main__ to operate).
* IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
using properties, but forgot to make the main InteractiveShell
class a new-style class. Properties fail silently, and
misteriously, with old-style class (getters work, but
setters don't do anything).
2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Magic.py (magic_history): fix history reporting bug (I
know some nasties are still there, I just can't seem to find a
reproducible test case to track them down; the input history is
falling out of sync...)
* IPython/iplib.py (handle_shell_escape): fix bug where both
aliases and system accesses where broken for indented code (such
as loops).
* IPython/genutils.py (shell): fix small but critical bug for
win32 system access.
2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (showtraceback): remove use of the
sys.last_{type/value/traceback} structures, which are non
(_prefilter): change control flow to ensure that we NEVER
introspect objects when autocall is off. This will guarantee that
having an input line of the form 'x.y', where access to attribute
'y' has side effects, doesn't trigger the side effect TWICE. It
is important to note that, with autocall on, these side effects
can still happen.
(ipsystem): new builtin, to complete the ip{magic/alias/system}
trio. IPython offers these three kinds of special calls which are
not python code, and it's a good thing to have their call method
be accessible as pure python functions (not just special syntax at
the command line). It gives us a better internal implementation
structure, as well as exposing these for user scripting more
* IPython/macro.py (Macro.__init__): moved macros to a standalone
file. Now that they'll be more likely to be used with the
persistance system (%store), I want to make sure their module path
doesn't change in the future, so that we don't break things for
users' persisted data.
* IPython/iplib.py (autoindent_update): move indentation
management into the _text_ processing loop, not the keyboard
interactive one. This is necessary to correctly process non-typed
multiline input (such as macros).
* IPython/Magic.py (Magic.format_latex): patch by Stefan van der
Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
which was producing problems in the resulting manual.
(magic_whos): improve reporting of instances (show their class,
instead of simply printing 'instance' which isn't terribly
* IPython/genutils.py (shell): commit Jorgen Stenarson's patch
(minor mods) to support network shares under win32.
* IPython/winconsole.py (get_console_size): add new winconsole
module and fixes to page_dumb() to improve its behavior under
win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
* IPython/Magic.py (Macro): simplified Macro class to just
subclass list. We've had only 2.2 compatibility for a very long
time, yet I was still avoiding subclassing the builtin types. No
more (I'm also starting to use properties, though I won't shift to
2.3-specific features quite yet).
(magic_store): added Ville's patch for lightweight variable
persistence, after a request on the user list by Matt Wilkie
<maphew-AT-gmail.com>. The new %store magic's docstring has full
* IPython/iplib.py (InteractiveShell.post_config_initialization):
changed the default logfile name from 'ipython.log' to
'ipython_log.py'. These logs are real python files, and now that
we have much better multiline support, people are more likely to
want to use them as such. Might as well name them correctly.
* IPython/Magic.py: substantial cleanup. While we can't stop
using magics as mixins, due to the existing customizations 'out
there' which rely on the mixin naming conventions, at least I
cleaned out all cross-class name usage. So once we are OK with
breaking compatibility, the two systems can be separated.
* IPython/Logger.py: major cleanup. This one is NOT a mixin
anymore, and the class is a fair bit less hideous as well. New
features were also introduced: timestamping of input, and logging
of output results. These are user-visible with the -t and -o
options to %logstart. Closes
http://www.scipy.net/roundup/ipython/issue11 and a request by
William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (handle_shell_escape): add Ville's patch to
better hadnle backslashes in paths. See the thread 'More Windows
questions part 2 - \/ characters revisited' on the iypthon user
(InteractiveShell.__init__): fix tab-completion bug in threaded shells.
(InteractiveShell.__init__): change threaded shells to not use the
ipython crash handler. This was causing more problems than not,
as exceptions in the main thread (GUI code, typically) would
always show up as a 'crash', when they really weren't.
The colors and exception mode commands (%colors/%xmode) have been
synchronized to also take this into account, so users can get
verbose exceptions for their threaded code as well. I also added
support for activating pdb inside this exception handler as well,
so now GUI authors can use IPython's enhanced pdb at runtime.
* IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
true by default, and add it to the shipped ipythonrc file. Since
this asks the user before proceeding, I think it's OK to make it
true by default.
* IPython/Magic.py (magic_exit): make new exit/quit magics instead
of the previous special-casing of input in the eval loop. I think
this is cleaner, as they really are commands and shouldn't have
a special role in the middle of the core code.
2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (edit_syntax_error): added support for
automatically reopening the editor if the file had a syntax error
in it. Thanks to scottt who provided the patch at:
http://www.scipy.net/roundup/ipython/issue36 (slightly modified
version committed).
* IPython/iplib.py (handle_normal): add suport for multi-line
input with emtpy lines. This fixes
http://www.scipy.net/roundup/ipython/issue43 and a similar
discussion on the user list.
WARNING: a behavior change is necessarily introduced to support
blank lines: now a single blank line with whitespace does NOT
break the input loop, which means that when autoindent is on, by
default hitting return on the next (indented) line does NOT exit.
Instead, to exit a multiline input you can either have:
- TWO whitespace lines (just hit return again), or
- a single whitespace line of a different length than provided
by the autoindent (add or remove a space).
* IPython/completer.py (MagicCompleter.__init__): new 'completer'
module to better organize all readline-related functionality.
I've deleted FlexCompleter and put all completion clases here.
* IPython/iplib.py (raw_input): improve indentation management.
It is now possible to paste indented code with autoindent on, and
the code is interpreted correctly (though it still looks bad on
screen, due to the line-oriented nature of ipython).
(MagicCompleter.complete): change behavior so that a TAB key on an
otherwise empty line actually inserts a tab, instead of completing
on the entire global namespace. This makes it easier to use the
TAB key for indentation. After a request by Hans Meine
(_prefilter): add support so that typing plain 'exit' or 'quit'
does a sensible thing. Originally I tried to deviate as little as
possible from the default python behavior, but even that one may
change in this direction (thread on python-dev to that effect).
Regardless, ipython should do the right thing even if CPython's
'>>>' prompt doesn't.
(InteractiveShell): removed subclassing code.InteractiveConsole
class. By now we'd overridden just about all of its methods: I've
copied the remaining two over, and now ipython is a standalone
class. This will provide a clearer picture for the chainsaw
branch refactoring.
2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.text): harden reporting against
failures for objects which break when dir() is called on them.
* IPython/FlexCompleter.py (Completer.__init__): Added support for
distinct local and global namespaces in the completer API. This
change allows us top properly handle completion with distinct
scopes, including in embedded instances (this had never really
worked correctly).
Note: this introduces a change in the constructor for
MagicCompleter, as a new global_namespace parameter is now the
second argument (the others were bumped one position).
2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (embed_mainloop): fix tab-completion in
embedded instances (which can be done now thanks to Vivian's
frame-handling fixes for pdb).
(InteractiveShell.__init__): Fix namespace handling problem in
embedded instances. We were overwriting __main__ unconditionally,
and this should only be done for 'full' (non-embedded) IPython;
embedded instances must respect the caller's __main__. Thanks to
a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
* setup.py: added download_url to setup(). This registers the
download address at PyPI, which is not only useful to humans
browsing the site, but is also picked up by setuptools (the Eggs
machinery). Thanks to Ville and R. Kern for the info/discussion
on this.
2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
This brings a lot of nice functionality to the pdb mode, which now
has tab-completion, syntax highlighting, and better stack handling
than before. Many thanks to Vivian De Smedt
<vivian-AT-vdesmedt.com> for the original patches.
2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
sequence to consistently accept the banner argument. The
inconsistency was tripping SAGE, thanks to Gary Zablackis
<gzabl-AT-yahoo.com> for the report.
2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (InteractiveShell.post_config_initialization):
Fix bug where a naked 'alias' call in the ipythonrc file would
cause a crash. Bug reported by Jorgen Stenarson.
2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/ipmaker.py (make_IPython): cleanups which should improve
startup time.
* IPython/iplib.py (runcode): my globals 'fix' for embedded
instances had introduced a bug with globals in normal code. Now
it's working in all cases.
* IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
API changes. A new ipytonrc option, 'wildcards_case_sensitive'
has been introduced to set the default case sensitivity of the
searches. Users can still select either mode at runtime on a
per-search basis.
2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/wildcard.py (NameSpace.__init__): fix resolution of
attributes in wildcard searches for subclasses. Modified version
of a patch by Jorgen.
2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (embed_mainloop): Fix handling of globals for
embedded instances. I added a user_global_ns attribute to the
InteractiveShell class to handle this.
2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
idle_add, which fixes horrible keyboard lag problems under gtk 2.6
(reported under win32, but may happen also in other platforms).
Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Magic.py (magic_psearch): new support for wildcard
patterns. Now, typing ?a*b will list all names which begin with a
and end in b, for example. The %psearch magic has full
docstrings. Many thanks to Jörgen Stenarson
<jorgen.stenarson-AT-bostream.nu>, author of the patches
implementing this functionality.
2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
* Manual: fixed long-standing annoyance of double-dashes (as in
--prefix=~, for example) being stripped in the HTML version. This
is a latex2html bug, but a workaround was provided. Many thanks
to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
rolling. This seemingly small issue had tripped a number of users
when first installing, so I'm glad to see it gone.
2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Extensions/numeric_formats.py: fix missing import,
reported by Stephen Walton.
2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/demo.py: finish demo module, fully documented now.
* IPython/genutils.py (file_read): simple little utility to read a
file and ensure it's closed afterwards.
2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/demo.py (Demo.__init__): added support for individually
tagging blocks for automatic execution.
* IPython/Magic.py (magic_pycat): new %pycat magic for showing
syntax-highlighted python sources, requested by John.
2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/demo.py (Demo.again): fix bug where again() blocks after
* IPython/genutils.py (shlex_split): moved from Magic to here,
where all 2.2 compatibility stuff lives. I needed it for demo.py.
* IPython/demo.py (Demo.__init__): added support for silent
blocks, improved marks as regexps, docstrings written.
(Demo.__init__): better docstring, added support for sys.argv.
* IPython/genutils.py (marquee): little utility used by the demo
code, handy in general.
* IPython/demo.py (Demo.__init__): new class for interactive
demos. Not documented yet, I just wrote it in a hurry for
scipy'05. Will docstring later.
2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (sigint_handler): Drastic simplification which
also seems to make Ctrl-C work correctly across threads! This is
so simple, that I can't beleive I'd missed it before. Needs more
testing, though.
(KBINT): Never mind, revert changes. I'm sure I'd tried something
like this before...
* IPython/genutils.py (get_home_dir): add protection against
non-dirs in win32 registry.
* IPython/iplib.py (InteractiveShell.alias_table_validate): fix
bug where dict was mutated while iterating (pysh crash).
2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (handle_auto): Fix inconsistency arising from
spurious newlines added by this routine. After a report by
F. Mantegazza.
2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
calls. These were a leftover from the GTK 1.x days, and can cause
problems in certain cases (after a report by John Hunter).
* IPython/iplib.py (InteractiveShell.__init__): Trap exception if
os.getcwd() fails at init time. Thanks to patch from David Remahl
(InteractiveShell.__init__): prevent certain special magics from
being shadowed by aliases. Closes
2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (InteractiveShell.complete): Added new
top-level completion method to expose the completion mechanism
beyond readline-based environments.
2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
* tools/ipsvnc (svnversion): fix svnversion capture.
* IPython/iplib.py (InteractiveShell.__init__): Add has_readline
attribute to self, which was missing. Before, it was set by a
routine which in certain cases wasn't being called, so the
instance could end up missing the attribute. This caused a crash.
Closes http://www.scipy.net/roundup/ipython/issue40.
2005-08-16 Fernando Perez <fperez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.text): don't crash if object
contains non-string attribute. Closes
2005-08-14 Fernando Perez <fperez@colorado.edu>
* tools/ipsvnc: Minor improvements, to add changeset info.
2005-08-12 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (runsource): remove self.code_to_run_src
attribute. I realized this is nothing more than
'\n'.join(self.buffer), and having the same data in two different
places is just asking for synchronization bugs. This may impact
people who have custom exception handlers, so I need to warn
ipython-dev about it (F. Mantegazza may use them).
2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/genutils.py: fix 2.2 compatibility (generators)
2005-07-18 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (get_home_dir): fix to help users with
invalid $HOME under win32.
2005-07-17 Fernando Perez <fperez@colorado.edu>
* IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
some old hacks and clean up a bit other routines; code should be
simpler and a bit faster.
* IPython/iplib.py (interact): removed some last-resort attempts
to survive broken stdout/stderr. That code was only making it
harder to abstract out the i/o (necessary for gui integration),
and the crashes it could prevent were extremely rare in practice
(besides being fully user-induced in a pretty violent manner).
* IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
Nothing major yet, but the code is simpler to read; this should
make it easier to do more serious modifications in the future.
* IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
which broke in .15 (thanks to a report by Ville).
* IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
be quite correct, I know next to nothing about unicode). This
will allow unicode strings to be used in prompts, amongst other
cases. It also will prevent ipython from crashing when unicode
shows up unexpectedly in many places. If ascii encoding fails, we
assume utf_8. Currently the encoding is not a user-visible
setting, though it could be made so if there is demand for it.
* IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
* IPython/Struct.py (Struct.merge): switch keys() to iterator.
* IPython/background_jobs.py: moved 2.2 compatibility to genutils.
* IPython/genutils.py: Add 2.2 compatibility here, so all other
code can work transparently for 2.2/2.3.
2005-07-16 Fernando Perez <fperez@colorado.edu>
* IPython/ultraTB.py (ExceptionColors): Make a global variable
out of the color scheme table used for coloring exception
tracebacks. This allows user code to add new schemes at runtime.
This is a minimally modified version of the patch at
http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
for the contribution.
* IPython/FlexCompleter.py (Completer.attr_matches): Add a
slightly modified version of the patch in
http://www.scipy.net/roundup/ipython/issue34, which also allows me
to remove the previous try/except solution (which was costlier).
Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2005-06-08 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (write/write_err): Add methods to abstract all
I/O a bit more.
* IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
warning, reported by Aric Hagberg, fix by JD Hunter.
2005-06-02 *** Released version 0.6.15
2005-06-01 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (MagicCompleter.file_matches): Fix
tab-completion of filenames within open-quoted strings. Note that
this requires that in ~/.ipython/ipythonrc, users change the
readline delimiters configuration to read:
readline_remove_delims -/~
2005-05-31 *** Released version 0.6.14
2005-05-29 Fernando Perez <fperez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
with files not on the filesystem. Reported by Eliyahu Sandler
2005-05-22 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py: Fix a few crashes in the --upgrade option.
After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2005-05-19 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (safe_execfile): close a file which could be
left open (causing problems in win32, which locks open files).
Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2005-05-18 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
keyword arguments correctly to safe_execfile().
2005-05-13 Fernando Perez <fperez@colorado.edu>
* ipython.1: Added info about Qt to manpage, and threads warning
to usage page (invoked with --help).
* IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
new matcher (it goes at the end of the priority list) to do
tab-completion on named function arguments. Submitted by George
Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
for more details.
* IPython/Magic.py (magic_run): Added new -e flag to ignore
SystemExit exceptions in the script being run. Thanks to a report
by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
producing very annoying behavior when running unit tests.
2005-05-12 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
which I'd broken (again) due to a changed regexp. In the process,
added ';' as an escape to auto-quote the whole line without
splitting its arguments. Thanks to a report by Jerry McRae
* IPython/ultraTB.py (VerboseTB.text): protect against rare but
possible crashes caused by a TokenError. Reported by Ed Schofield
2005-05-06 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2005-04-29 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
<nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
which provides support for Qt interactive usage (similar to the
existing one for WX and GTK). This had been often requested.
2005-04-14 *** Released version 0.6.13
2005-04-08 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic._ofind): remove docstring evaluation
from _ofind, which gets called on almost every input line. Now,
we only try to get docstrings if they are actually going to be
used (the overhead of fetching unnecessary docstrings can be
noticeable for certain objects, such as Pyro proxies).
* IPython/iplib.py (MagicCompleter.python_matches): Change the API
for completers. For some reason I had been passing them the state
variable, which completers never actually need, and was in
conflict with the rlcompleter API. Custom completers ONLY need to
take the text parameter.
* IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
work correctly in pysh. I've also moved all the logic which used
to be in pysh.py here, which will prevent problems with future
upgrades. However, this time I must warn users to update their
pysh profile to include the line
import_all IPython.Extensions.InterpreterExec
because otherwise things won't work for them. They MUST also
delete pysh.py and the line
execfile pysh.py
from their ipythonrc-pysh.
* IPython/FlexCompleter.py (Completer.attr_matches): Make more
robust in the face of objects whose dir() returns non-strings
(which it shouldn't, but some broken libs like ITK do). Thanks to
a patch by John Hunter (implemented differently, though). Also
minor improvements by using .extend instead of + on lists.
* pysh.py:
2005-04-06 Fernando Perez <fperez@colorado.edu>
* IPython/ipmaker.py (make_IPython): Make multi_line_specials on
by default, so that all users benefit from it. Those who don't
want it can still turn it off.
* IPython/UserConfig/ipythonrc: Add multi_line_specials to the
config file, I'd forgotten about this, so users were getting it
off by default.
* IPython/iplib.py (ipmagic): big overhaul of the magic system for
consistency. Now magics can be called in multiline statements,
and python variables can be expanded in magic calls via $var.
This makes the magic system behave just like aliases or !system
2005-03-28 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (handle_auto): cleanup to use %s instead of
expensive string additions for building command. Add support for
trailing ';' when autocall is used.
2005-03-26 Fernando Perez <fperez@colorado.edu>
* ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
Bugfix by A. Schmolck, the ipython.el maintainer. Also make
ipython.el robust against prompts with any number of spaces
(including 0) after the ':' character.
* IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
continuation prompt, which misled users to think the line was
already indented. Closes debian Bug#300847, reported to me by
Norbert Tretkowski <tretkowski-AT-inittab.de>.
2005-03-23 Fernando Perez <fperez@colorado.edu>
* IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
properly aligned if they have embedded newlines.
* IPython/iplib.py (runlines): Add a public method to expose
IPython's code execution machinery, so that users can run strings
as if they had been typed at the prompt interactively.
(InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
methods which can call the system shell, but with python variable
expansion. The three such methods are: __IPYTHON__.system,
.getoutput and .getoutputerror. These need to be documented in a
'public API' section (to be written) of the manual.
2005-03-20 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.set_custom_exc): new system
for custom exception handling. This is quite powerful, and it
allows for user-installable exception handlers which can trap
custom exceptions at runtime and treat them separately from
IPython's default mechanisms. At the request of Frédéric
Mantegazza <mantegazza-AT-ill.fr>.
(InteractiveShell.set_custom_completer): public API function to
add new completers at runtime.
2005-03-19 Fernando Perez <fperez@colorado.edu>
* IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
allow objects which provide their docstrings via non-standard
mechanisms (like Pyro proxies) to still be inspected by ipython's
? system.
* IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
automatic capture system. I tried quite hard to make it work
reliably, and simply failed. I tried many combinations with the
subprocess module, but eventually nothing worked in all needed
cases (not blocking stdin for the child, duplicating stdout
without blocking, etc). The new %sc/%sx still do capture to these
magical list/string objects which make shell use much more
conveninent, so not all is lost.
XXX - FIX MANUAL for the change above!
(runsource): I copied code.py's runsource() into ipython to modify
it a bit. Now the code object and source to be executed are
stored in ipython. This makes this info accessible to third-party
tools, like custom exception handlers. After a request by Frédéric
Mantegazza <mantegazza-AT-ill.fr>.
* IPython/UserConfig/ipythonrc: Add up/down arrow keys to
history-search via readline (like C-p/C-n). I'd wanted this for a
long time, but only recently found out how to do it. For users
who already have their ipythonrc files made and want this, just
readline_parse_and_bind "\e[A": history-search-backward
readline_parse_and_bind "\e[B": history-search-forward
2005-03-18 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
LSString and SList classes which allow transparent conversions
between list mode and whitespace-separated string.
(magic_r): Fix recursion problem in %r.
* IPython/genutils.py (LSString): New class to be used for
automatic storage of the results of all alias/system calls in _o
and _e (stdout/err). These provide a .l/.list attribute which
does automatic splitting on newlines. This means that for most
uses, you'll never need to do capturing of output with %sc/%sx
anymore, since ipython keeps this always done for you. Note that
only the LAST results are stored, the _o/e variables are
overwritten on each call. If you need to save their contents
further, simply bind them to any other name.
2005-03-17 Fernando Perez <fperez@colorado.edu>
* IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
prompt namespace handling.
2005-03-16 Fernando Perez <fperez@colorado.edu>
* IPython/Prompts.py (CachedOutput.__init__): Fix default and
classic prompts to be '>>> ' (final space was missing, and it
trips the emacs python mode).
(BasePrompt.__str__): Added safe support for dynamic prompt
strings. Now you can set your prompt string to be '$x', and the
value of x will be printed from your interactive namespace. The
interpolation syntax includes the full Itpl support, so
${foo()+x+bar()} is a valid prompt string now, and the function
calls will be made at runtime.
2005-03-15 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (magic_history): renamed %hist to %history, to
avoid name clashes in pylab. %hist still works, it just forwards
the call to %history.
2005-03-02 *** Released version 0.6.12
2005-03-02 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (handle_magic): log magic calls properly as
ipmagic() function calls.
* IPython/Magic.py (magic_time): Improved %time to support
statements and provide wall-clock as well as CPU time.
2005-02-27 Fernando Perez <fperez@colorado.edu>
* IPython/hooks.py: New hooks module, to expose user-modifiable
IPython functionality in a clean manner. For now only the editor
hook is actually written, and other thigns which I intend to turn
into proper hooks aren't yet there. The display and prefilter
stuff, for example, should be hooks. But at least now the
framework is in place, and the rest can be moved here with more
time later. IPython had had a .hooks variable for a long time for
this purpose, but I'd never actually used it for anything.
2005-02-26 Fernando Perez <fperez@colorado.edu>
* IPython/ipmaker.py (make_IPython): make the default ipython
directory be called _ipython under win32, to follow more the
naming peculiarities of that platform (where buggy software like
Visual Sourcesafe breaks with .named directories). Reported by
Ville Vainio.
2005-02-23 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): removed a few
auto_aliases for win32 which were causing problems. Users can
define the ones they personally like.
2005-02-21 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (magic_time): new magic to time execution of
expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2005-02-19 Fernando Perez <fperez@colorado.edu>
* IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
into keys (for prompts, for example).
* IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
prompts in case users want them. This introduces a small behavior
change: ipython does not automatically add a space to all prompts
anymore. To get the old prompts with a space, users should add it
manually to their ipythonrc file, so for example prompt_in1 should
now read 'In [\#]: ' instead of 'In [\#]:'.
(BasePrompt.__init__): New option prompts_pad_left (only in rc
file) to control left-padding of secondary prompts.
* IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
the profiler can't be imported. Fix for Debian, which removed
profile.py because of License issues. I applied a slightly
modified version of the original Debian patch at
2005-02-17 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (native_line_ends): Fix bug which would
cause improper line-ends under win32 b/c I was not opening files
in binary mode. Bug report and fix thanks to Ville.
* IPython/iplib.py (handle_auto): Fix bug which I introduced when
trying to catch spurious foo[1] autocalls. My fix actually broke
',/' autoquote/call with explicit escape (bad regexp).
2005-02-15 *** Released version 0.6.11
2005-02-14 Fernando Perez <fperez@colorado.edu>
* IPython/background_jobs.py: New background job management
subsystem. This is implemented via a new set of classes, and
IPython now provides a builtin 'jobs' object for background job
execution. A convenience %bg magic serves as a lightweight
frontend for starting the more common type of calls. This was
inspired by discussions with B. Granger and the BackgroundCommand
class described in the book Python Scripting for Computational
Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
(although ultimately no code from this text was used, as IPython's
system is a separate implementation).
* IPython/iplib.py (MagicCompleter.python_matches): add new option
to control the completion of single/double underscore names
separately. As documented in the example ipytonrc file, the
readline_omit__names variable can now be set to 2, to omit even
single underscore names. Thanks to a patch by Brian Wong
(InteractiveShell.__init__): Fix bug which would cause foo[1] to
be autocalled as foo([1]) if foo were callable. A problem for
things which are both callable and implement __getitem__.
(init_readline): Fix autoindentation for win32. Thanks to a patch
by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2005-02-12 Fernando Perez <fperez@colorado.edu>
* IPython/ipmaker.py (make_IPython): Disabled the stout traps
which I had written long ago to sort out user error messages which
may occur during startup. This seemed like a good idea initially,
but it has proven a disaster in retrospect. I don't want to
change much code for now, so my fix is to set the internal 'debug'
flag to true everywhere, whose only job was precisely to control
this subsystem. This closes issue 28 (as well as avoiding all
sorts of strange hangups which occur from time to time).
2005-02-07 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
previous call produced a syntax error.
* IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
classes without constructor.
2005-02-06 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (MagicCompleter.complete): Extend the list of
completions with the results of each matcher, so we return results
to the user from all namespaces. This breaks with ipython
tradition, but I think it's a nicer behavior. Now you get all
possible completions listed, from all possible namespaces (python,
filesystem, magics...) After a request by John Hunter
2005-02-05 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (magic_prun): Fix bug where prun would fail if
the call had quote characters in it (the quotes were stripped).
2005-01-31 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
Itpl.itpl() to make the code more robust against psyco
* IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
of causing an exception. Quicker, cleaner.
2005-01-28 Fernando Perez <fperez@colorado.edu>
* scripts/ipython_win_post_install.py (install): hardcode
sys.prefix+'python.exe' as the executable path. It turns out that
during the post-installation run, sys.executable resolves to the
name of the binary installer! I should report this as a distutils
bug, I think. I updated the .10 release with this tiny fix, to
avoid annoying the lists further.
2005-01-27 *** Released version 0.6.10
2005-01-27 Fernando Perez <fperez@colorado.edu>
* IPython/numutils.py (norm): Added 'inf' as optional name for
L-infinity norm, included references to mathworld.com for vector
norm definitions.
(amin/amax): added amin/amax for array min/max. Similar to what
pylab ships with after the recent reorganization of names.
(spike/spike_odd): removed deprecated spike/spike_odd functions.
* ipython.el: committed Alex's recent fixes and improvements.
Tested with python-mode from CVS, and it looks excellent. Since
python-mode hasn't released anything in a while, I'm temporarily
putting a copy of today's CVS (v 4.70) of python-mode in:
* scripts/ipython_win_post_install.py (install): Win32 fix to use
sys.executable for the executable name, instead of assuming it's
called 'python.exe' (the post-installer would have produced broken
setups on systems with a differently named python binary).
* IPython/PyColorize.py (Parser.__call__): change explicit '\n'
references to os.linesep, to make the code more
platform-independent. This is also part of the win32 coloring
* IPython/genutils.py (page_dumb): Remove attempts to chop long
lines, which actually cause coloring bugs because the length of
the line is very difficult to correctly compute with embedded
escapes. This was the source of all the coloring problems under
Win32. I think that _finally_, Win32 users have a properly
working ipython in all respects. This would never have happened
if not for Gary Bishop and Viktor Ransmayr's great help and work.
2005-01-26 *** Released version 0.6.9
2005-01-25 Fernando Perez <fperez@colorado.edu>
* setup.py: finally, we have a true Windows installer, thanks to
the excellent work of Viktor Ransmayr
<viktor.ransmayr-AT-t-online.de>. The docs have been updated for
Windows users. The setup routine is quite a bit cleaner thanks to
this, and the post-install script uses the proper functions to
allow a clean de-installation using the standard Windows Control
* IPython/genutils.py (get_home_dir): changed to use the $HOME
environment variable under all OSes (including win32) if
available. This will give consistency to win32 users who have set
this variable for any reason. If os.environ['HOME'] fails, the
previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2005-01-24 Fernando Perez <fperez@colorado.edu>
* IPython/numutils.py (empty_like): add empty_like(), similar to
zeros_like() but taking advantage of the new empty() Numeric routine.
2005-01-23 *** Released version 0.6.8
2005-01-22 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
automatic show() calls. After discussing things with JDH, it
turns out there are too many corner cases where this can go wrong.
It's best not to try to be 'too smart', and simply have ipython
reproduce as much as possible the default behavior of a normal
python shell.
* IPython/iplib.py (InteractiveShell.__init__): Modified the
line-splitting regexp and _prefilter() to avoid calling getattr()
on assignments. This closes
http://www.scipy.net/roundup/ipython/issue24. Note that Python's
readline uses getattr(), so a simple <TAB> keypress is still
enough to trigger getattr() calls on an object.
2005-01-21 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
docstring under pylab so it doesn't mask the original.
2005-01-21 *** Released version 0.6.7
2005-01-21 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
signal handling for win32 users in multithreaded mode.
2005-01-17 Fernando Perez <fperez@colorado.edu>
* IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
instances with no __init__. After a crash report by Norbert Nemec
2005-01-14 Fernando Perez <fperez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
names for verbose exceptions, when multiple dotted names and the
'parent' object were present on the same line.
2005-01-11 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (flag_calls): new utility to trap and flag
calls in functions. I need it to clean up matplotlib support.
Also removed some deprecated code in genutils.
* IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
that matplotlib scripts called with %run, which don't call show()
themselves, still have their plotting windows open.
2005-01-05 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
<astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2004-12-19 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
parent_runcode, which was an eyesore. The same result can be
obtained with Python's regular superclass mechanisms.
2004-12-17 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
reported by Prabhu.
(Magic.magic_sx): direct all errors to Term.cerr (defaults to
sys.stderr) instead of explicitly calling sys.stderr. This helps
maintain our I/O abstractions clean, for future GUI embeddings.
* IPython/genutils.py (info): added new utility for sys.stderr
unified info message handling (thin wrapper around warn()).
* IPython/ultraTB.py (VerboseTB.text): Fix misreported global
composite (dotted) names on verbose exceptions.
(VerboseTB.nullrepr): harden against another kind of errors which
Python's inspect module can trigger, and which were crashing
IPython. Thanks to a report by Marco Lombardi
2004-12-13 *** Released version 0.6.6
2004-12-12 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
generated by pygtk upon initialization if it was built without
threads (for matplotlib users). After a crash reported by
Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
* IPython/ipmaker.py (make_IPython): fix small bug in the
import_some parameter for multiple imports.
* IPython/iplib.py (ipmagic): simplified the interface of
ipmagic() to take a single string argument, just as it would be
typed at the IPython cmd line.
(ipalias): Added new ipalias() with an interface identical to
ipmagic(). This completes exposing a pure python interface to the
alias and magic system, which can be used in loops or more complex
code where IPython's automatic line mangling is not active.
* IPython/genutils.py (timing): changed interface of timing to
simply run code once, which is the most common case. timings()
remains unchanged, for the cases where you want multiple runs.
* IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
bug where Python2.2 crashes with exec'ing code which does not end
in a single newline. Python 2.3 is OK, so I hadn't noticed this
2004-12-10 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_prun): changed name of option from
-t to -T, to accomodate the new -t flag in %run (the %run and
%prun options are kind of intermixed, and it's not easy to change
this with the limitations of python's getopt).
* IPython/Magic.py (Magic.magic_run): Added new -t option to time
the execution of scripts. It's not as fine-tuned as timeit.py,
but it works from inside ipython (and under 2.2, which lacks
timeit.py). Optionally a number of runs > 1 can be given for
timing very short-running code.
* IPython/genutils.py (uniq_stable): new routine which returns a
list of unique elements in any iterable, but in stable order of
appearance. I needed this for the ultraTB fixes, and it's a handy
* IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
dotted names in Verbose exceptions. This had been broken since
the very start, now x.y will properly be printed in a Verbose
traceback, instead of x being shown and y appearing always as an
'undefined global'. Getting this to work was a bit tricky,
because by default python tokenizers are stateless. Saved by
python's ability to easily add a bit of state to an arbitrary
function (without needing to build a full-blown callable object).
Also big cleanup of this code, which had horrendous runtime
lookups of zillions of attributes for colorization. Moved all
this code into a few templates, which make it cleaner and quicker.
Printout quality was also improved for Verbose exceptions: one
variable per line, and memory addresses are printed (this can be
quite handy in nasty debugging situations, which is what Verbose
is for).
* IPython/ipmaker.py (make_IPython): Do NOT execute files named in
the command line as scripts to be loaded by embedded instances.
Doing so has the potential for an infinite recursion if there are
exceptions thrown in the process. This fixes a strange crash
reported by Philippe MULLER <muller-AT-irit.fr>.
2004-12-09 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
to reflect new names in matplotlib, which now expose the
matlab-compatible interface via a pylab module instead of the
'matlab' name. The new code is backwards compatible, so users of
all matplotlib versions are OK. Patch by J. Hunter.
* IPython/OInspect.py (Inspector.pinfo): Add to object? printing
of __init__ docstrings for instances (class docstrings are already
automatically printed). Instances with customized docstrings
(indep. of the class) are also recognized and all 3 separate
docstrings are printed (instance, class, constructor). After some
comments/suggestions by J. Hunter.
2004-12-05 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (MagicCompleter.complete): Remove annoying
warnings when tab-completion fails and triggers an exception.
2004-12-03 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (magic_prun): Fix bug where an exception would
be triggered when using 'run -p'. An incorrect option flag was
being set ('d' instead of 'D').
(manpage): fix missing escaped \- sign.
2004-11-30 *** Released version 0.6.5
2004-11-30 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
setting with -d option.
* setup.py (docfiles): Fix problem where the doc glob I was using
was COMPLETELY BROKEN. It was giving the right files by pure
accident, but failed once I tried to include ipython.el. Note:
glob() does NOT allow you to do exclusion on multiple endings!
2004-11-29 Fernando Perez <fperez@colorado.edu>
* IPython/usage.py (__doc__): cleaned up usage docstring, by using
the manpage as the source. Better formatting & consistency.
* IPython/Magic.py (magic_run): Added new -d option, to run
scripts under the control of the python pdb debugger. Note that
this required changing the %prun option -d to -D, to avoid a clash
(since %run must pass options to %prun, and getopt is too dumb to
handle options with string values with embedded spaces). Thanks
to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
(magic_who_ls): added type matching to %who and %whos, so that one
can filter their output to only include variables of certain
types. Another suggestion by Matthew.
(magic_whos): Added memory summaries in kb and Mb for arrays.
(magic_who): Improve formatting (break lines every 9 vars).
2004-11-28 Fernando Perez <fperez@colorado.edu>
* IPython/Logger.py (Logger.log): Fix bug in syncing the input
cache when empty lines were present.
2004-11-24 Fernando Perez <fperez@colorado.edu>
* IPython/usage.py (__doc__): document the re-activated threading
options for WX and GTK.
2004-11-23 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (start): Added Prabhu's big patch to reactivate
the -wthread and -gthread options, along with a new -tk one to try
and coordinate Tk threading with wx/gtk. The tk support is very
platform dependent, since it seems to require Tcl and Tk to be
built with threads (Fedora1/2 appears NOT to have it, but in
Prabhu's Debian boxes it works OK). But even with some Tk
limitations, this is a great improvement.
* IPython/Prompts.py (prompt_specials_color): Added \t for time
info in user prompts. Patch by Prabhu.
2004-11-18 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (ask_yes_no): Add check for a max of 20
EOFErrors and bail, to avoid infinite loops if a non-terminating
file is fed into ipython. Patch submitted in issue 19 by user,
many thanks.
* IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
autoquote/parens in continuation prompts, which can cause lots of
problems. Closes roundup issue 20.
2004-11-17 Fernando Perez <fperez@colorado.edu>
* debian/control (Build-Depends-Indep): Fix dpatch dependency,
reported as debian bug #280505. I'm not sure my local changelog
entry has the proper debian format (Jack?).
2004-11-08 *** Released version 0.6.4
2004-11-08 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (init_readline): Fix exit message for Windows
when readline is active. Thanks to a report by Eric Jones
2004-11-07 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (page): Add a trap for OSError exceptions,
sometimes seen by win2k/cygwin users.
2004-11-06 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (interact): Change the handling of %Exit from
trying to propagate a SystemExit to an internal ipython flag.
This is less elegant than using Python's exception mechanism, but
I can't get that to work reliably with threads, so under -pylab
%Exit was hanging IPython. Cross-thread exception handling is
really a bitch. Thaks to a bug report by Stephen Walton
2004-11-04 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (raw_input_original): store a pointer to the
true raw_input to harden against code which can modify it
(wx.py.PyShell does this and would otherwise crash ipython).
Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
* IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
Ctrl-C problem, which does not mess up the input line.
2004-11-03 Fernando Perez <fperez@colorado.edu>
* IPython/Release.py: Changed licensing to BSD, in all files.
(name): lowercase name for tarball/RPM release.
* IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
use throughout ipython.
* IPython/Magic.py (Magic._ofind): Switch to using the new
OInspect.getdoc() function.
* IPython/Shell.py (sigint_handler): Hack to ignore the execution
of the line currently being canceled via Ctrl-C. It's extremely
ugly, but I don't know how to do it better (the problem is one of
handling cross-thread exceptions).
2004-10-28 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (signal_handler): add signal handlers to trap
SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
report by Francesc Alted.
2004-10-21 Fernando Perez <fperez@colorado.edu>
* IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
to % for pysh syntax extensions.
2004-10-09 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_whos): modify output of Numeric
arrays to print a more useful summary, without calling str(arr).
This avoids the problem of extremely lengthy computations which
occur if arr is large, and appear to the user as a system lockup
with 100% cpu activity. After a suggestion by Kristian Sandberg
(Magic.__init__): fix bug in global magic escapes not being
correctly set.
2004-10-08 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (__license__): change to absolute imports of
ipython's own internal packages, to start adapting to the absolute
import requirement of PEP-328.
* IPython/genutils.py (__author__): Fix coding to utf-8 on all
files, and standardize author/license marks through the Release
module instead of having per/file stuff (except for files with
particular licenses, like the MIT/PSF-licensed codes).
* IPython/Debugger.py: remove dead code for python 2.1
2004-10-04 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (ipmagic): New function for accessing magics
via a normal python function call.
* IPython/Magic.py (Magic.magic_magic): Change the magic escape
from '@' to '%', to accomodate the new @decorator syntax of python
2004-09-29 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
matplotlib.use to prevent running scripts which try to switch
interactive backends from within ipython. This will just crash
the python interpreter, so we can't allow it (but a detailed error
is given to the user).
2004-09-28 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.mplot_exec):
matplotlib-related fixes so that using @run with non-matplotlib
scripts doesn't pop up spurious plot windows. This requires
matplotlib >= 0.63, where I had to make some changes as well.
* IPython/ipmaker.py (make_IPython): update version requirement to
python 2.2.
* IPython/iplib.py (InteractiveShell.mainloop): Add an optional
banner arg for embedded customization.
* IPython/Magic.py (Magic.__init__): big cleanup to remove all
explicit uses of __IP as the IPython's instance name. Now things
are properly handled via the shell.name value. The actual code
is a bit ugly b/c I'm doing it via a global in Magic.py, but this
is much better than before. I'll clean things completely when the
magic stuff gets a real overhaul.
* ipython.1: small fixes, sent in by Jack Moffit. He also sent in
minor changes to debian dir.
* IPython/iplib.py (InteractiveShell.__init__): Fix adding a
pointer to the shell itself in the interactive namespace even when
a user-supplied dict is provided. This is needed for embedding
purposes (found by tests with Michel Sanner).
2004-09-27 Fernando Perez <fperez@colorado.edu>
* IPython/UserConfig/ipythonrc: remove []{} from
readline_remove_delims, so that things like [modname.<TAB> do
proper completion. This disables [].TAB, but that's a less common
case than module names in list comprehensions, for example.
Thanks to a report by Andrea Riciputi.
2004-09-09 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
blocking problems in win32 and osx. Fix by John.
2004-09-08 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
for Win32 and OSX. Fix by John Hunter.
2004-08-30 *** Released version 0.6.3
2004-08-30 Fernando Perez <fperez@colorado.edu>
* setup.py (isfile): Add manpages to list of dependent files to be
2004-08-27 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (start): I've disabled -wthread and -gthread
for now. They don't really work with standalone WX/GTK code
(though matplotlib IS working fine with both of those backends).
This will neeed much more testing. I disabled most things with
comments, so turning it back on later should be pretty easy.
* IPython/iplib.py (InteractiveShell.__init__): Fix accidental
autocalling of expressions like r'foo', by modifying the line
split regexp. Closes
http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
Riley <ipythonbugs-AT-sabi.net>.
(InteractiveShell.mainloop): honor --nobanner with banner
* IPython/Shell.py: Significant refactoring of all classes, so
that we can really support ALL matplotlib backends and threading
models (John spotted a bug with Tk which required this). Now we
should support single-threaded, WX-threads and GTK-threads, both
for generic code and for matplotlib.
* IPython/ipmaker.py (__call__): Changed -mpthread option to
-pylab, to simplify things for users. Will also remove the pylab
profile, since now all of matplotlib configuration is directly
handled here. This also reduces startup time.
* IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
shell wasn't being correctly called. Also in IPShellWX.
* IPython/iplib.py (InteractiveShell.__init__): Added option to
fine-tune banner.
* IPython/numutils.py (spike): Deprecate these spike functions,
delete (long deprecated) gnuplot_exec handler.
2004-08-26 Fernando Perez <fperez@colorado.edu>
* ipython.1: Update for threading options, plus some others which
were missing.
* IPython/ipmaker.py (__call__): Added -wthread option for
wxpython thread handling. Make sure threading options are only
valid at the command line.
* scripts/ipython: moved shell selection into a factory function
in Shell.py, to keep the starter script to a minimum.
2004-08-25 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
John. Along with some recent changes he made to matplotlib, the
next versions of both systems should work very well together.
2004-08-24 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
tried to switch the profiling to using hotshot, but I'm getting
strange errors from prof.runctx() there. I may be misreading the
docs, but it looks weird. For now the profiling code will
continue to use the standard profiler.
2004-08-23 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
threaded shell, by John Hunter. It's not quite ready yet, but
2004-08-22 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
in Magic and ultraTB.
* ipython.1: document threading options in manpage.
* scripts/ipython: Changed name of -thread option to -gthread,
since this is GTK specific. I want to leave the door open for a
-wthread option for WX, which will most likely be necessary. This
change affects usage and ipmaker as well.
* IPython/Shell.py (matplotlib_shell): Add a factory function to
handle the matplotlib shell issues. Code by John Hunter
(IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
broken (and disabled for end users) for now, but it puts the
infrastructure in place.
2004-08-21 Fernando Perez <fperez@colorado.edu>
* ipythonrc-pylab: Add matplotlib support.
* matplotlib_config.py: new files for matplotlib support, part of
the pylab profile.
* IPython/usage.py (__doc__): documented the threading options.
2004-08-20 Fernando Perez <fperez@colorado.edu>
* ipython: Modified the main calling routine to handle the -thread
and -mpthread options. This needs to be done as a top-level hack,
because it determines which class to instantiate for IPython
* IPython/Shell.py (MTInteractiveShell.__init__): New set of
classes to support multithreaded GTK operation without blocking,
and matplotlib with all backends. This is a lot of still very
experimental code, and threads are tricky. So it may still have a
few rough edges... This code owes a lot to
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
to John Hunter for all the matplotlib work.
* IPython/ipmaker.py (__call__): Added -thread and -mpthread
options for gtk thread and matplotlib support.
2004-08-16 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): don't trigger
autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2004-08-11 Fernando Perez <fperez@colorado.edu>
* setup.py (isfile): Fix build so documentation gets updated for
rpms (it was only done for .tgz builds).
2004-08-10 Fernando Perez <fperez@colorado.edu>
* genutils.py (Term): Fix misspell of stdin stream (sin->cin).
* iplib.py : Silence syntax error exceptions in tab-completion.
2004-08-05 Fernando Perez <fperez@colorado.edu>
* IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
'color off' mark for continuation prompts. This was causing long
continuation lines to mis-wrap.
2004-08-01 Fernando Perez <fperez@colorado.edu>
* IPython/ipmaker.py (make_IPython): Allow the shell class used
for building ipython to be a parameter. All this is necessary
right now to have a multithreaded version, but this insane
non-design will be cleaned up soon. For now, it's a hack that
* IPython/Shell.py (IPShell.__init__): Stop using mutable default
args in various places. No bugs so far, but it's a dangerous
2004-07-31 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (complete): ignore SyntaxError exceptions to
fix completion of files with dots in their names under most
profiles (pysh was OK because the completion order is different).
2004-07-27 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): build dict of
keywords manually, b/c the one in keyword.py was removed in python
2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
This is NOT a bug under python 2.3 and earlier.
2004-07-26 Fernando Perez <fperez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.text): Add another
linecache.checkcache() call to try to prevent inspect.py from
crashing under python 2.3. I think this fixes
2004-07-26 *** Released version 0.6.2
2004-07-26 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
fail for any number.
(Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
empty bookmarks.
2004-07-26 *** Released version 0.6.1
2004-07-26 Fernando Perez <fperez@colorado.edu>
* ipython_win_post_install.py (run): Added pysh shortcut for Windows.
* IPython/iplib.py (protect_filename): Applied Ville's patch for
escaping '()[]{}' in filenames.
* IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
Python 2.2 users who lack a proper shlex.split.
2004-07-19 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.init_readline): Add support
for reading readline's init file. I follow the normal chain:
$INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
report by Mike Heeter. This closes
2004-07-18 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (__init__): Add better handling of '\' under
Win32 for filenames. After a patch by Ville.
2004-07-17 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell._prefilter): fix bug where
autocalling would be triggered for 'foo is bar' if foo is
callable. I also cleaned up the autocall detection code to use a
regexp, which is faster. Bug reported by Alexander Schmolck.
* IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
'?' in them would confuse the help system. Reported by Alex
2004-07-16 Fernando Perez <fperez@colorado.edu>
* IPython/GnuplotInteractive.py (__all__): added plot2.
* IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
plotting dictionaries, lists or tuples of 1d arrays.
* IPython/Magic.py (Magic.magic_hist): small clenaups and
* IPython/iplib.py:Remove old Changelog info for cleanup. This is
the information which was there from Janko's original IPP code:
03.05.99 20:53 porto.ifm.uni-kiel.de
--Started changelog.
--make clear do what it say it does
--added pretty output of lines from inputcache
--Made Logger a mixin class, simplifies handling of switches
--Added own completer class. .string<TAB> expands to last history
line which starts with string. The new expansion is also present
with Ctrl-r from the readline library. But this shows, who this
can be done for other cases.
--Added convention that all shell functions should accept a
parameter_string This opens the door for different behaviour for
each function. @cd is a good example of this.
04.05.99 12:12 porto.ifm.uni-kiel.de
--added logfile rotation
--added new mainloop method which freezes first the namespace
07.05.99 21:24 porto.ifm.uni-kiel.de
--added the docreader classes. Now there is a help system.
-This is only a first try. Currently it's not easy to put new
stuff in the indices. But this is the way to go. Info would be
better, but HTML is every where and not everybody has an info
system installed and it's not so easy to change html-docs to info.
--added global logfile option
--there is now a hook for object inspection method pinfo needs to
be provided for this. Can be reached by two '??'.
08.05.99 20:51 porto.ifm.uni-kiel.de
--added a README
--bug in rc file. Something has changed so functions in the rc
file need to reference the shell and not self. Not clear if it's a
bug or feature.
--changed rc file for new behavior
2004-07-15 Fernando Perez <fperez@colorado.edu>
* IPython/Logger.py (Logger.log): fixed recent bug where the input
cache was falling out of sync in bizarre manners when multi-line
input was present. Minor optimizations and cleanup.
(Logger): Remove old Changelog info for cleanup. This is the
information which was there from Janko's original code:
Changes to Logger: - made the default log filename a parameter
- put a check for lines beginning with !@? in log(). Needed
(even if the handlers properly log their lines) for mid-session
logging activation to work properly. Without this, lines logged
in mid session, which get read from the cache, would end up
'bare' (with !@? in the open) in the log. Now they are caught
and prepended with a #.
* IPython/iplib.py (InteractiveShell.init_readline): added check
in case MagicCompleter fails to be defined, so we don't crash.
2004-07-13 Fernando Perez <fperez@colorado.edu>
* IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
of EPS if the requested filename ends in '.eps'.
2004-07-04 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
escaping of quotes when calling the shell.
2004-07-02 Fernando Perez <fperez@colorado.edu>
* IPython/Prompts.py (CachedOutput.update): Fix problem with
gettext not working because we were clobbering '_'. Fixes
2004-07-01 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
into @cd. Patch by Ville.
* IPython/iplib.py (InteractiveShell.post_config_initialization):
new function to store things after ipmaker runs. Patch by Ville.
Eventually this will go away once ipmaker is removed and the class
gets cleaned up, but for now it's ok. Key functionality here is
the addition of the persistent storage mechanism, a dict for
keeping data across sessions (for now just bookmarks, but more can
be implemented later).
* IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
persistent across sections. Patch by Ville, I modified it
soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
added a '-l' option to list all bookmarks.
* IPython/iplib.py (InteractiveShell.atexit_operations): new
center for cleanup. Registered with atexit.register(). I moved
here the old exit_cleanup(). After a patch by Ville.
* IPython/Magic.py (get_py_filename): added '~' to the accepted
characters in the hacked shlex_split for python 2.2.
* IPython/iplib.py (file_matches): more fixes to filenames with
whitespace in them. It's not perfect, but limitations in python's
readline make it impossible to go further.
2004-06-29 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (file_matches): escape whitespace correctly in
filename completions. Bug reported by Ville.
2004-06-28 Fernando Perez <fperez@colorado.edu>
* IPython/ipmaker.py (__call__): Added per-profile histories. Now