2006-06-06  *** Released version 0.7.2

2006-06-06  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Release.py (version): Made 0.7.2 final for release.
	Repo tagged and release cut.

2006-06-05  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (magic_rehashx): Honor no_alias list earlier in 
        %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
	
        * upgrade_dir.py: try import 'path' module a bit harder
        (for %upgrade)A

2006-06-03  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/genutils.py (ask_yes_no): treat EOF as a default answer
	instead of looping 20 times.

	* IPython/ipmaker.py (make_IPython): honor -ipythondir flag
	correctly at initialization time.  Bug reported by Krishna Mohan
	Gundu <gkmohan-AT-gmail.com> on the user list.

	* IPython/Release.py (version): Mark 0.7.2 version to start
	testing for release on 06/06.

2006-05-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* scripts/irunner: thin script interface so users don't have to
	find the module and call it as an executable, since modules rarely
	live in people's PATH.

	* IPython/irunner.py (InteractiveRunner.__init__): added
	delaybeforesend attribute to control delays with newer versions of
	pexpect.  Thanks to detailed help from pexpect's author, Noah
	Spurrier <noah-AT-noah.org>.  Noted how to use the SAGE runner
	correctly (it works in NoColor mode).

	* IPython/iplib.py (handle_normal): fix nasty crash reported on
	SAGE list, from improper log() calls.

2006-05-31  Ville Vainio  <vivainio@gmail.com>

	* upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
	with args in parens to work correctly with dirs that have spaces.

2006-05-30  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Logger.py (Logger.logstart): add option to log raw input
	instead of the processed one.  A -r flag was added to the
	%logstart magic used for controlling logging.

2006-05-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): add check for the
	*BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
	recognize the option.  After a bug report by Will Maier.  This
	closes #64 (will do it after confirmation from W. Maier).

	* IPython/irunner.py: New module to run scripts as if manually
	typed into an interactive environment, based on pexpect.  After a
	submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
	ipython-user list.  Simple unittests in the tests/ directory.

	* tools/release: add Will Maier, OpenBSD port maintainer, to
	recepients list.  We are now officially part of the OpenBSD ports:
	http://www.openbsd.org/ports.html !  Many thanks to Will for the
	work.

2006-05-26  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
	so that it doesn't break tkinter apps.
	
	* IPython/iplib.py (_prefilter): fix bug where aliases would
	shadow variables when autocall was fully off.  Reported by SAGE
	author William Stein.

	* IPython/OInspect.py (Inspector.__init__): add a flag to control
	at what detail level strings are computed when foo? is requested.
	This allows users to ask for example that the string form of an
	object is only computed when foo?? is called, or even never, by
	setting the object_info_string_level >= 2 in the configuration
	file.  This new option has been added and documented.  After a
	request by SAGE to be able to control the printing of very large
	objects more easily.

2006-05-25  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): remove the ipython call path
	from sys.argv, to be 100% consistent with how Python itself works
	(as seen for example with python -i file.py).  After a bug report
	by Jeffrey Collins.

	* IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
	nasty bug which was preventing custom namespaces with -pylab,
	reported by M. Foord.  Minor cleanup, remove old matplotlib.matlab
	compatibility (long gone from mpl).

	* IPython/ipapi.py (make_session): name change: create->make.  We
	use make in other places (ipmaker,...), it's shorter and easier to
	type and say, etc.  I'm trying to clean things before 0.7.2 so
	that I can keep things stable wrt to ipapi in the chainsaw branch.

	* ipython.el: fix the py-pdbtrack-input-prompt variable so that
	python-mode recognizes our debugger mode.  Add support for
	autoindent inside (X)emacs.  After a patch sent in by Jin Liu
	<m.liu.jin-AT-gmail.com> originally written by
	doxgen-AT-newsmth.net (with minor modifications for xemacs
	compatibility)

	* IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
	tracebacks when walking the stack so that the stack tracking system
	in emacs' python-mode can identify the frames correctly.

	* IPython/ipmaker.py (make_IPython): make the internal (and
	default config) autoedit_syntax value false by default.  Too many
	users have complained to me (both on and off-list) about problems
	with this option being on by default, so I'm making it default to
	off.  It can still be enabled by anyone via the usual mechanisms.

	* IPython/completer.py (Completer.attr_matches): add support for
	PyCrust-style _getAttributeNames magic method.  Patch contributed
	by <mscott-AT-goldenspud.com>.  Closes #50.

	* IPython/iplib.py (InteractiveShell.__init__): remove the
	deletion of exit/quit from __builtin__, which can break
	third-party tools like the Zope debugging console.  The
	%exit/%quit magics remain.  In general, it's probably a good idea
	not to delete anything from __builtin__, since we never know what
	that will break.  In any case, python now (for 2.5) will support
	'real' exit/quit, so this issue is moot.  Closes #55.

	* IPython/genutils.py (with_obj): rename the 'with' function to
	'withobj' to avoid incompatibilities with Python 2.5, where 'with'
	becomes a language keyword.  Closes #53.

	* IPython/FakeModule.py (FakeModule.__init__): add a proper
	__file__ attribute to this so it fools more things into thinking
	it is a real module.  Closes #59.

	* IPython/Magic.py (magic_edit): add -n option to open the editor
	at a specific line number.  After a patch by Stefan van der Walt.

2006-05-23  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (edit_syntax_error): fix crash when for some
	reason the file could not be opened.  After automatic crash
	reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
	Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
	(_should_recompile): Don't fire editor if using %bg, since there
	is no file in the first place.  From the same report as above.
	(raw_input): protect against faulty third-party prefilters.  After
	an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
	while running under SAGE.

2006-05-23  Ville Vainio  <vivainio@gmail.com>

	* ipapi.py: Stripped down ip.to_user_ns() to work only as
	ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
	now returns None (again), unless dummy is specifically allowed by
	ipapi.get(allow_dummy=True).

2006-05-18  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython: remove all 2.2-compatibility objects and hacks from
	everywhere, since we only support 2.3 at this point.  Docs
	updated.

	* IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
	Anything requiring extra validation can be turned into a Python
	property in the future.  I used a property for the db one b/c
	there was a nasty circularity problem with the initialization
	order, which right now I don't have time to clean up.

	* IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
	another locking bug reported by Jorgen.  I'm not 100% sure though,
	so more testing is needed...

2006-05-17  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipapi.py (IPApi.to_user_ns): New function to inject
	local variables from any routine in user code (typically executed
	with %run) directly into the interactive namespace.  Very useful
	when doing complex debugging.
	(IPythonNotRunning): Changed the default None object to a dummy
	whose attributes can be queried as well as called without
	exploding, to ease writing code which works transparently both in
	and out of ipython and uses some of this API.

2006-05-16  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/hooks.py (result_display): Fix the fact that our display
	hook was using str() instead of repr(), as the default python
	console does.  This had gone unnoticed b/c it only happened if
	%Pprint was off, but the inconsistency was there.

2006-05-15  Ville Vainio  <vivainio@gmail.com>

	* Oinspect.py: Only show docstring for nonexisting/binary files
	when doing object??, closing ticket #62

2006-05-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
	bug, closes http://www.scipy.net/roundup/ipython/issue55.  A lock
	was being released in a routine which hadn't checked if it had
	been the one to acquire it.

2006-05-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Release.py (version): put out 0.7.2.rc1 for testing.

2006-04-11  Ville Vainio  <vivainio@gmail.com>

	* iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
	in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
	prefilters, allowing stuff like magics and aliases in the file.
	
	* Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic 
	added. Supported now are "%clear in" and "%clear out" (clear input and 
	output history, respectively). Also fixed CachedOutput.flush to 
	properly flush the output cache.
	
	* Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr" 
	half-success (and fail explicitly).

2006-03-28  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: Fix quoting of aliases so that only argless ones
	are quoted

2006-03-28  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: Quote aliases with spaces in the name.
	"c:\program files\blah\bin" is now legal alias target.
	
	* ext_rehashdir.py: Space no longer allowed as arg
	separator, since space is legal in path names.
	
2006-03-16  Ville Vainio  <vivainio@gmail.com>

	* upgrade_dir.py: Take path.py from Extensions, correcting
	%upgrade magic
	
	* ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
	
	* hooks.py: Only enclose editor binary in quotes if legal and 
	necessary (space in the name, and is an existing file). Fixes a bug
	reported by Zachary Pincus.

2006-03-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* Manual: thanks to a tip on proper color handling for Emacs, by
	Eric J Haywiser <ejh1-AT-MIT.EDU>.
	
	* ipython.el: close http://www.scipy.net/roundup/ipython/issue57
	by applying the provided patch.  Thanks to Liu Jin
	<m.liu.jin-AT-gmail.com> for the contribution.  No problems under
	XEmacs/Linux, I'm trusting the submitter that it actually helps
	under win32/GNU Emacs.  Will revisit if any problems are reported.

2006-03-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
	from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.

2006-03-12  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (magic_timeit): Added %timeit magic, contributed by
	Torsten Marek.

2006-03-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
	line ranges works again.

2006-03-11  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (showtraceback): add back sys.last_traceback
	and friends, after a discussion with Zach Pincus on ipython-user.
	I'm not 100% sure, but after thinking aobut it quite a bit, it may
	be OK.  Testing with the multithreaded shells didn't reveal any
	problems, but let's keep an eye out.

	In the process, I fixed a few things which were calling
	self.InteractiveTB() directly (like safe_execfile), which is a
	mistake: ALL exception reporting should be done by calling
	self.showtraceback(), which handles state and tab-completion and
	more.

2006-03-01  Ville Vainio  <vivainio@gmail.com>  

	* Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
	To use, do "from ipipe import *". 

2006-02-24  Ville Vainio  <vivainio@gmail.com>  

	* Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
	"cleanly" and safely than the older upgrade mechanism.

2006-02-21  Ville Vainio  <vivainio@gmail.com>  

	* Magic.py: %save works again.

2006-02-15  Ville Vainio  <vivainio@gmail.com>  

	* Magic.py: %Pprint works again
	
	* Extensions/ipy_sane_defaults.py: Provide everything provided 
	in default ipythonrc, to make it possible to have a completely empty
	ipythonrc (and thus completely rc-file free configuration)
	

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
	http://showmedo.com/videoListPage?listKey=PythonIPythonSeries

	* 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
	http://www.scipy.net/roundup/ipython/issue53.

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" 
	nonsense.
	
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 
	warnings
	
	* 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:
	http://www.python.org/pypi/pickleshare
	
	* 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
	usage.
	
	* 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 
	\python24\scripts).
	
	* ipapi.py: launch_new_instance, launch entry point needed for the 
	egg.

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 
	\python24\scripts).
	
	* ipapi.py: launch_new_instance, launch entry point needed for the 
	egg.

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
	<tercel-AT-gentoo.org>.
	
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
	Vivian.

	* 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 
	data.
	
	* 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
	future.

	* 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
	later.

	* 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:
	      !ls
	      !!ls

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
	http://www.scipy.net/roundup/ipython/issue51.

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
	win32.

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
	<arnd.baecker-AT-web.de>.

	* 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
	twister).

	* 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
	http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.

	* IPython/completer.py (IPCompleter.complete): small patch to help
	tab-completion under Emacs, after a suggestion by John Barnard
	<barnarj-AT-ccf.org>.

	* 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
	thread-safe.
	(_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
	cleanly.

	* 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
	informative).

	* 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
	details.

	* 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
	list:
	http://scipy.net/pipermail/ipython-user/2005-June/000907.html

	(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
	<hans_meine-AT-gmx.net>
	(_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
	finishing.

	* 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
	<chmod007-AT-mac.com>.
	(InteractiveShell.__init__): prevent certain special magics from
	being shadowed by aliases.  Closes
	http://www.scipy.net/roundup/ipython/issue41.

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
	http://www.scipy.net/roundup/ipython/issue38.

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
	<eli@gondolin.net>

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
	http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
	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
	<qrs0xyc02-AT-sneakemail.com>.

	* IPython/ultraTB.py (VerboseTB.text): protect against rare but
	possible crashes caused by a TokenError.  Reported by Ed Schofield
	<schofield-AT-ftw.at>.
	
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
	calls.

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
	add:

	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
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.

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
	<BrianWong-AT-AirgoNetworks.Com>.
	(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
	<jdhunter-AT-nitace.bsd.uchicago.edu>.

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
	optimizations.

	* 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:
	  http://ipython.scipy.org/tmp/python-mode.el

	* 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
	fixes.

	* 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
	Panel.
	
	* 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
	<Norbert-AT-nemec-online.de>.

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
	<mlombard-AT-ma010192.hq.eso.org>.

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
	before.

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
	utility.

	* 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
	<eric-AT-enthought.com>.

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
	<stephen.walton-AT-csun.edu>.

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
	<Kristian.Sandberg@colorado.edu>.
	(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
	2.4.

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
	updated.

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
	extensions.

	* 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
	close.

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
	<jdhunter-AT-nitace.bsd.uchicago.edu>.
	(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
	itself.

	* 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
	works.

	* IPython/Shell.py (IPShell.__init__): Stop using mutable default
	args in various places.  No bugs so far, but it's a dangerous
	practice.

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
	http://www.scipy.net/roundup/ipython/issue17.

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
	http://www.scipy.net/roundup/ipython/issue16.

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
	Schmolck.

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
	optimizations.

	* 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
	http://www.scipy.net/roundup/ipython/issue6.

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
	the history file will be called 'history-PROFNAME' (or just
	'history' if no profile is loaded).  I was getting annoyed at
	getting my Numerical work history clobbered by pysh sessions.

	* IPython/iplib.py (InteractiveShell.__init__): Internal
	getoutputerror() function so that we can honor the system_verbose
	flag for _all_ system calls.  I also added escaping of #
	characters here to avoid confusing Itpl.

	* IPython/Magic.py (shlex_split): removed call to shell in
	parse_options and replaced it with shlex.split().  The annoying
	part was that in Python 2.2, shlex.split() doesn't exist, so I had
	to backport it from 2.3, with several frail hacks (the shlex
	module is rather limited in 2.2).  Thanks to a suggestion by Ville
	Vainio <vivainio@kolumbus.fi>.  For Python 2.3 there should be no
	problem.
	
	(Magic.magic_system_verbose): new toggle to print the actual
	system calls made by ipython.  Mainly for debugging purposes.

	* IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
	doesn't support persistence.  Reported (and fix suggested) by
	Travis Caldwell <travis_caldwell2000@yahoo.com>.

2004-06-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.log): fix to handle correctly empty
	continue prompts.

	* IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
	function (basically a big docstring) and a few more things here to
	speedup startup. pysh.py is now very lightweight.  We want because
	it gets execfile'd, while InterpreterExec gets imported, so
	byte-compilation saves time.

2004-06-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
	-NUM', which was recently broken.

	* IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
	in multi-line input (but not !!, which doesn't make sense there).

	* IPython/UserConfig/ipythonrc: made autoindent on by default.
	It's just too useful, and people can turn it off in the less
	common cases where it's a problem.

2004-06-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): big change -
	special syntaxes (like alias calling) is now allied in multi-line
	input.  This is still _very_ experimental, but it's necessary for
	efficient shell usage combining python looping syntax with system
	calls.  For now it's restricted to aliases, I don't think it
	really even makes sense to have this for magics.

2004-06-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
	$var=cmd <=> @sc var=cmd and  $$var=cmd <=> @sc -l var=cmd.

	* IPython/Magic.py (Magic.magic_rehashx): modified to handle
	extensions under Windows (after code sent by Gary Bishop).  The
	extensions considered 'executable' are stored in IPython's rc
	structure as win_exec_ext.

	* IPython/genutils.py (shell): new function, like system() but
	without return value.  Very useful for interactive shell work.

	* IPython/Magic.py (Magic.magic_unalias): New @unalias function to
	delete aliases.

	* IPython/iplib.py (InteractiveShell.alias_table_update): make
	sure that the alias table doesn't contain python keywords.

2004-06-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_rehash): Fix crash when
	non-existent items are found in $PATH.  Reported by Thorsten.

2004-06-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (complete): modified the completer so that the
	order of priorities can be easily changed at runtime.

	* IPython/Extensions/InterpreterExec.py (prefilter_shell):
	Modified to auto-execute all lines beginning with '~', '/' or '.'.

	* IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
	expand Python variables prepended with $ in all system calls.  The
	same was done to InteractiveShell.handle_shell_escape.  Now all
	system access mechanisms (!, !!, @sc, @sx and aliases) allow the
	expansion of python variables and expressions according to the
	syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.

	Though PEP-215 has been rejected, a similar (but simpler) one
	seems like it will go into Python 2.4, PEP-292 -
	http://www.python.org/peps/pep-0292.html.

	I'll keep the full syntax of PEP-215, since IPython has since the
	start used Ka-Ping Yee's reference implementation discussed there
	(Itpl), and I actually like the powerful semantics it offers.

	In order to access normal shell variables, the $ has to be escaped
	via an extra $.  For example:

	In [7]: PATH='a python variable'

	In [8]: !echo $PATH
	a python variable

	In [9]: !echo $$PATH
	/usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...

	(Magic.parse_options): escape $ so the shell doesn't evaluate
	things prematurely.

	* IPython/iplib.py (InteractiveShell.call_alias): added the
	ability for aliases to expand python variables via $.

	* IPython/Magic.py (Magic.magic_rehash): based on the new alias
	system, now there's a @rehash/@rehashx pair of magics.  These work
	like the csh rehash command, and can be invoked at any time.  They
	build a table of aliases to everything in the user's $PATH
	(@rehash uses everything, @rehashx is slower but only adds
	executable files).  With this, the pysh.py-based shell profile can
	now simply call rehash upon startup, and full access to all
	programs in the user's path is obtained.

	* IPython/iplib.py (InteractiveShell.call_alias): The new alias
	functionality is now fully in place.  I removed the old dynamic
	code generation based approach, in favor of a much lighter one
	based on a simple dict.  The advantage is that this allows me to
	now have thousands of aliases with negligible cost (unthinkable
	with the old system).

2004-06-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (__init__): extended MagicCompleter class to
	also complete (last in priority) on user aliases.

	* IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
	call to eval.
	(ItplNS.__init__): Added a new class which functions like Itpl,
	but allows configuring the namespace for the evaluation to occur
	in.

2004-06-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.runcode): modify to print a
	better message when 'exit' or 'quit' are typed (a common newbie
	confusion).

	* IPython/Magic.py (Magic.magic_colors): Added the runtime color
	check for Windows users.

	* IPython/iplib.py (InteractiveShell.user_setup): removed
	disabling of colors for Windows.  I'll test at runtime and issue a
	warning if Gary's readline isn't found, as to nudge users to
	download it.

2004-06-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Stream.__init__): changed to print errors
	to sys.stderr.  I had a circular dependency here.  Now it's
	possible to run ipython as IDLE's shell (consider this pre-alpha,
	since true stdout things end up in the starting terminal instead
	of IDLE's out).

	* IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
	users who haven't # updated their prompt_in2 definitions.  Remove
	eventually.
	(multiple_replace): added credit to original ASPN recipe.

2004-06-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
	list of auto-defined aliases.

2004-06-13  Fernando Perez  <fperez@colorado.edu>

	* setup.py (scriptfiles): Don't trigger win_post_install unless an
	install was really requested (so setup.py can be used for other
	things under Windows).

2004-06-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): Manually remove any old
	backup, since os.remove may fail under Windows.  Fixes bug
	reported by Thorsten.

2004-06-09  Fernando Perez  <fperez@colorado.edu>

	* examples/example-embed.py: fixed all references to %n (replaced
	with \\# for ps1/out prompts and with \\D for ps2 prompts).  Done
	for all examples and the manual as well.

2004-06-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
	alignment and color management.  All 3 prompt subsystems now
	inherit from BasePrompt.

	* tools/release: updates for windows installer build and tag rpms
	with python version (since paths are fixed).

	* IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
	which will become eventually obsolete.  Also fixed the default
	prompt_in2 to use \D, so at least new users start with the correct
	defaults.
	WARNING: Users with existing ipythonrc files will need to apply
	this fix manually!

	* setup.py: make windows installer (.exe).  This is finally the
	integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
	which I hadn't included because it required Python 2.3 (or recent
	distutils).

	* IPython/usage.py (__doc__): update docs (and manpage) to reflect
	usage of new '\D' escape.

	* IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
	lacks os.getuid())
	(CachedOutput.set_colors): Added the ability to turn coloring
	on/off with @colors even for manually defined prompt colors.  It
	uses a nasty global, but it works safely and via the generic color
	handling mechanism.
	(Prompt2.__init__): Introduced new escape '\D' for continuation
	prompts. It represents the counter ('\#') as dots.
	*** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE.  Users will
	need to update their ipythonrc files and replace '%n' with '\D' in
	their prompt_in2 settings everywhere.  Sorry, but there's
	otherwise no clean way to get all prompts to properly align.  The
	ipythonrc shipped with IPython has been updated.

2004-06-07  Fernando Perez  <fperez@colorado.edu>

	* setup.py (isfile): Pass local_icons option to latex2html, so the
	resulting HTML file is self-contained.  Thanks to
	dryice-AT-liu.com.cn for the tip.

	* pysh.py: I created a new profile 'shell', which implements a
	_rudimentary_ IPython-based shell.  This is in NO WAY a realy
	system shell, nor will it become one anytime soon.  It's mainly
	meant to illustrate the use of the new flexible bash-like prompts.
	I guess it could be used by hardy souls for true shell management,
	but it's no tcsh/bash...  pysh.py is loaded by the 'shell'
	profile.  This uses the InterpreterExec extension provided by
	W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>

	* IPython/Prompts.py (PromptOut.__str__): now it will correctly
	auto-align itself with the length of the previous input prompt
	(taking into account the invisible color escapes).
	(CachedOutput.__init__): Large restructuring of this class.  Now
	all three prompts (primary1, primary2, output) are proper objects,
	managed by the 'parent' CachedOutput class.  The code is still a
	bit hackish (all prompts share state via a pointer to the cache),
	but it's overall far cleaner than before.

	* IPython/genutils.py (getoutputerror): modified to add verbose,
	debug and header options.  This makes the interface of all getout*
	functions uniform.
	(SystemExec.getoutputerror): added getoutputerror to SystemExec.

	* IPython/Magic.py (Magic.default_option): added a function to
	allow registering default options for any magic command.  This
	makes it easy to have profiles which customize the magics globally
	for a certain use.  The values set through this function are
	picked up by the parse_options() method, which all magics should
	use to parse their options.

	* IPython/genutils.py (warn): modified the warnings framework to
	use the Term I/O class.  I'm trying to slowly unify all of
	IPython's I/O operations to pass through Term.

	* IPython/Prompts.py (Prompt2._str_other): Added functionality in
	the secondary prompt to correctly match the length of the primary
	one for any prompt.  Now multi-line code will properly line up
	even for path dependent prompts, such as the new ones available
	via the prompt_specials.

2004-06-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (prompt_specials): Added the ability to have
	bash-like special sequences in the prompts, which get
	automatically expanded.  Things like hostname, current working
	directory and username are implemented already, but it's easy to
	add more in the future.  Thanks to a patch by W.J. van der Laan
	<gnufnork-AT-hetdigitalegat.nl>
	(prompt_specials): Added color support for prompt strings, so
	users can define arbitrary color setups for their prompts.

2004-06-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Term.reopen_all): Added Windows-specific
	code to load Gary Bishop's readline and configure it
	automatically.  Thanks to Gary for help on this.

2004-06-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): fix bug for logging
	with no filename (previous fix was incomplete).

2004-05-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): fix bug where naked
	parens would get passed to the shell.

2004-05-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_prun): changed default profile
	sort order to 'time' (the more common profiling need).

	* IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
	so that source code shown is guaranteed in sync with the file on
	disk (also changed in psource).  Similar fix to the one for
	ultraTB on 2004-05-06.  Thanks to a bug report by Yann Le Du
	<yann.ledu-AT-noos.fr>.
	
	* IPython/Magic.py (Magic.parse_options): Fixed bug where commands
	with a single option would not be correctly parsed. Closes
	http://www.scipy.net/roundup/ipython/issue14.  This bug had been
	introduced in 0.6.0 (on 2004-05-06).

2004-05-13  *** Released version 0.6.0

2004-05-13  Fernando Perez  <fperez@colorado.edu>

	* debian/: Added debian/ directory to CVS, so that debian support
	is publicly accessible.  The debian package is maintained by Jack
	Moffit <jack-AT-xiph.org>.

	* Documentation: included the notes about an ipython-based system
	shell (the hypothetical 'pysh') into the new_design.pdf document,
	so that these ideas get distributed to users along with the
	official documentation.

2004-05-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): fix recently introduced
	bug (misindented line) where logstart would fail when not given an
	explicit filename.

2004-05-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): skip system call when
	there are no options to look for.  Faster, cleaner for the common
	case.

	* Documentation: many updates to the manual: describing Windows
	support better, Gnuplot updates, credits, misc small stuff.  Also
	updated the new_design doc a bit.

2004-05-06  *** Released version 0.6.0.rc1

2004-05-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (ListTB.text): modified a ton of string +=
	operations to use the vastly more efficient list/''.join() method.
	(FormattedTB.text): Fix
	http://www.scipy.net/roundup/ipython/issue12 - exception source
	extract not updated after reload.  Thanks to Mike Salib
	<msalib-AT-mit.edu> for pinning the source of the problem.
	Fortunately, the solution works inside ipython and doesn't require
	any changes to python proper.

	* IPython/Magic.py (Magic.parse_options): Improved to process the
	argument list as a true shell would (by actually using the
	underlying system shell).  This way, all @magics automatically get
	shell expansion for variables.  Thanks to a comment by Alex
	Schmolck.

2004-04-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): Added a special
	trap for a debugger quit exception, which is basically impossible
	to handle by normal mechanisms, given what pdb does to the stack.
	This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.

2004-04-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Term): Standardized the names of the Term
	class streams to cin/cout/cerr, following C++ naming conventions
	(I can't use in/out/err because 'in' is not a valid attribute
	name).

	* IPython/iplib.py (InteractiveShell.interact): don't increment
	the prompt if there's no user input.  By Daniel 'Dang' Griffith
	<pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
	Francois Pinard.

2004-04-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Stream.__init__): Modified to survive at
	least importing in contexts where stdin/out/err aren't true file
	objects, such as PyCrust (they lack fileno() and mode).  However,
	the recovery facilities which rely on these things existing will
	not work.

2004-04-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
	use the new getoutputerror() function, so it properly
	distinguishes stdout/err.

	* IPython/genutils.py (getoutputerror): added a function to
	capture separately the standard output and error of a command.
	After a comment from dang on the mailing lists.  This code is
	basically a modified version of commands.getstatusoutput(), from
	the standard library.

	* IPython/iplib.py (InteractiveShell.handle_shell_escape): added
	'!!' as a special syntax (shorthand) to access @sx.

	* IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
	command and return its output as a list split on '\n'.

2004-03-31  Fernando Perez  <fperez@colorado.edu>

	* IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
	method to dictionaries used as FakeModule instances if they lack
	it.  At least pydoc in python2.3 breaks for runtime-defined
	functions without this hack.  At some point I need to _really_
	understand what FakeModule is doing, because it's a gross hack.
	But it solves Arnd's problem for now...

2004-02-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
	mode would behave erratically.  Also increased the number of
	possible logs in rotate mod to 999.  Thanks to Rod Holland
	<rhh@StructureLABS.com> for the report and fixes.
	
2004-02-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): Check that the curses module really
	has the initscr attribute before trying to use it.  For some
	reason, the Solaris curses module is missing this.  I think this
	should be considered a Solaris python bug, but I'm not sure.

2004-01-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Stream.__init__): Changes to try to make
	ipython robust against stdin/out/err being closed by the user.
	This is 'user error' (and blocks a normal python session, at least
	the stdout case).  However, Ipython should be able to survive such
	instances of abuse as gracefully as possible.  To simplify the
	coding and maintain compatibility with Gary Bishop's Term
	contributions, I've made use of classmethods for this.  I think
	this introduces a dependency on python 2.2.

2004-01-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (exp_safe): simplified the code a bit and
	removed the need for importing the kinds module altogether.

2004-01-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_sc): Made the shell capture system
	a magic function instead, after some community feedback.  No
	special syntax will exist for it, but its name is deliberately
	very short.

2003-12-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
	new functionality, to automagically assign the result of a shell
	command to a variable.  I'll solicit some community feedback on
	this before making it permanent.

	* IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
	requested about callables for which inspect couldn't obtain a
	proper argspec.  Thanks to a crash report sent by Etienne
	Posthumus <etienne-AT-apple01.cs.vu.nl>.

2003-12-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): patch for the pager to work across
	various versions of Windows.  By Gary Bishop.

2003-12-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/Gnuplot2.py (PlotItems): Fixes for working with
	Gnuplot.py version 1.7, whose internal names changed quite a bit.
	While I tested this and it looks ok, there may still be corner
	cases I've missed.

2003-12-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
	where a line like 'p,q=1,2' would fail because the automagic
	system would be triggered for @p.

	* IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
	cleanups, code unmodified.

	* IPython/genutils.py (Term): added a class for IPython to handle
	output.  In most cases it will just be a proxy for stdout/err, but
	having this allows modifications to be made for some platforms,
	such as handling color escapes under Windows.  All of this code
	was contributed by Gary Bishop, with minor modifications by me.
	The actual changes affect many files.

2003-11-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (file_matches): new completion code, courtesy
	of Jeff Collins.  This enables filename completion again under
	python 2.3, which disabled it at the C level.

2003-11-11  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (amap): Added amap() fn.  Simple shorthand
	for Numeric.array(map(...)), but often convenient.

2003-11-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (frange): Changed a call from int() to
	int(round()) to prevent a problem reported with arange() in the
	numpy list.

2003-10-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
	prevent crashes if sys lacks an argv attribute (it happens with
	embedded interpreters which build a bare-bones sys module).
	Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.

2003-09-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): blanket except around getattr()
	to protect against poorly written user objects where __getattr__
	raises exceptions other than AttributeError.  Thanks to a bug
	report by Oliver Sander <osander-AT-gmx.de>.

	* IPython/FakeModule.py (FakeModule.__repr__): this method was
	missing.  Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.

2003-09-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): fix bug where
	unpacking a list whith a callable as first element would
	mistakenly trigger autocalling.  Thanks to a bug report by Jeffery
	Collins.

2003-08-25  *** Released version 0.5.0

2003-08-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
	improperly defined user exceptions.  Thanks to feedback from Mark
	Russell <mrussell-AT-verio.net>.
	
2003-08-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): changed String Form
	printing so that it would print multi-line string forms starting
	with a new line.  This way the formatting is better respected for
	objects which work hard to make nice string forms.

	* IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
	autocall would overtake data access for objects with both
	__getitem__ and __call__.

2003-08-19  *** Released version 0.5.0-rc1

2003-08-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/deep_reload.py (load_tail): single tiny change here
	seems to fix the long-standing bug of dreload() failing to work
	for dotted names.  But this module is pretty tricky, so I may have
	missed some subtlety.  Needs more testing!.

	* IPython/ultraTB.py (VerboseTB.linereader): harden against user
	exceptions which have badly implemented __str__ methods.
	(VerboseTB.text): harden against inspect.getinnerframes crashing,
	which I've been getting reports about from Python 2.3 users.  I
	wish I had a simple test case to reproduce the problem, so I could
	either write a cleaner workaround or file a bug report if
	necessary.

	* IPython/Magic.py (Magic.magic_edit): fixed bug where after
	making a class 'foo', file 'foo.py' couldn't be edited.  Thanks to
	a bug report by Tjabo Kloppenburg.

	* IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
	crashes.  Wrapped the pdb call in a blanket try/except, since pdb
	seems rather unstable.  Thanks to a bug report by Tjabo
	Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.

	* IPython/Release.py (version): release 0.5.0-rc1.  I want to put
	this out soon because of the critical fixes in the inner loop for
	generators.

	* IPython/Magic.py (Magic.getargspec): removed.  This (and
	_get_def) have been obsoleted by OInspect for a long time, I
	hadn't noticed that they were dead code.
	(Magic._ofind): restored _ofind functionality for a few literals
	(those in ["''",'""','[]','{}','()']).  But it won't work anymore
	for things like "hello".capitalize?, since that would require a
	potentially dangerous eval() again.

	* IPython/iplib.py (InteractiveShell._prefilter): reorganized the
	logic a bit more to clean up the escapes handling and minimize the
	use of _ofind to only necessary cases.  The interactive 'feel' of
	IPython should have improved quite a bit with the changes in
	_prefilter and _ofind (besides being far safer than before).

	* IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
	obscure, never reported).  Edit would fail to find the object to
	edit under some circumstances.
	(Magic._ofind): CRITICAL FIX.  Finally removed the eval() calls
	which were causing double-calling of generators.  Those eval calls
	were _very_ dangerous, since code with side effects could be
	triggered.  As they say, 'eval is evil'...  These were the
	nastiest evals in IPython.  Besides, _ofind is now far simpler,
	and it should also be quite a bit faster.  Its use of inspect is
	also safer, so perhaps some of the inspect-related crashes I've
	seen lately with Python 2.3 might be taken care of.  That will
	need more testing.

2003-08-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): significant
	simplifications to the logic for handling user escapes.  Faster
	and simpler code.

2003-08-14  Fernando Perez  <fperez@colorado.edu>

        * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
        Now it requires O(N) storage (N=size(a)) for non-contiguous input,
        but it should be quite a bit faster.  And the recursive version
        generated O(log N) intermediate storage for all rank>1 arrays,
        even if they were contiguous.
        (l1norm): Added this function.
        (norm):  Added this function for arbitrary norms (including
        l-infinity).  l1 and l2 are still special cases for convenience
        and speed.
	
2003-08-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_edit): Removed all remaining string
	exceptions, which now raise PendingDeprecationWarnings in Python
	2.3.  There were some in Magic and some in Gnuplot2.

2003-06-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): modified to call curses only for
	terminals where TERM=='xterm'.  After problems under many other
	terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.

	* IPython/iplib.py (complete): removed spurious 'print "IE"' which
	would be triggered when readline was absent.  This was just an old
	debugging statement I'd forgotten to take out.

2003-06-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (clock): modified to return only user time
	(not counting system time), after a discussion on scipy.  While
	system time may be a useful quantity occasionally, it may much
	more easily be skewed by occasional swapping or other similar
	activity.

2003-06-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (identity): new function, for building
	arbitrary rank Kronecker deltas (mostly backwards compatible with
	Numeric.identity)

2003-06-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_magic): protect
	arguments passed to magics with spaces, to allow trailing '\' to
	work normally (mainly for Windows users).

2003-05-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): Load site._Helper() as help
	instead of pydoc.help.  This fixes a bizarre behavior where
	printing '%s' % locals() would trigger the help system.  Now
	ipython behaves like normal python does.  

	Note that if one does 'from pydoc import help', the bizarre
	behavior returns, but this will also happen in normal python, so
	it's not an ipython bug anymore (it has to do with how pydoc.help
	is implemented).

2003-05-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/FlexCompleter.py (Completer.attr_matches): fixed to
	return [] instead of None when nothing matches, also match to end
	of line.  Patch by Gary Bishop.

	* IPython/ipmaker.py (make_IPython): Added same sys.excepthook
	protection as before, for files passed on the command line.  This
	prevents the CrashHandler from kicking in if user files call into
	sys.excepthook (such as PyQt and WxWindows have a nasty habit of
	doing).  After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>

2003-05-20  *** Released version 0.4.0

2003-05-20  Fernando Perez  <fperez@colorado.edu>

	* setup.py: added support for manpages.  It's a bit hackish b/c of
	a bug in the way the bdist_rpm distutils target handles gzipped
	manpages, but it works.  After a patch by Jack.

2003-05-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py: added a mockup of the kinds module, since
	it was recently removed from Numeric.  This way, numutils will
	work for all users even if they are missing kinds.

	* IPython/Magic.py (Magic._ofind): Harden against an inspect
	failure, which can occur with SWIG-wrapped extensions.  After a
	crash report from Prabhu.

2003-05-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.excepthook): New method to
	protect ipython from user code which may call directly
	sys.excepthook (this looks like an ipython crash to the user, even
	when it isn't).  After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
	This is especially important to help users of WxWindows, but may
	also be useful in other cases.

	* IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
	an optional tb_offset to be specified, and to preserve exception
	info if given.  After a patch by Gary Bishop <gb-AT-cs.unc.edu>.

	* ipython.1 (Default): Thanks to Jack's work, we now have manpages!

2003-05-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
	installing for a new user under Windows.

2003-05-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_emacs): New line
	handler for Emacs comint-based lines.  Currently it doesn't do
	much (but importantly, it doesn't update the history cache).  In
	the future it may be expanded if Alex needs more functionality
	there.

	* IPython/CrashHandler.py (CrashHandler.__call__): Added platform
	info to crash reports.

	* IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
	just like Python's -c.  Also fixed crash with invalid -color
	option value at startup. Thanks to Will French
	<wfrench-AT-bestweb.net> for the bug report.

2003-05-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
	to EvalDict (it's a mapping, after all) and simplified its code
	quite a bit, after a nice discussion on c.l.py where Gustavo
	Córdova <gcordova-AT-sismex.com> suggested the new version.

2003-04-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timings_out): modified it to reduce its
	overhead in the common reps==1 case.

2003-04-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timings_out): Modified to use the resource
	module, which avoids the wraparound problems of time.clock().

2003-04-17  *** Released version 0.2.15pre4

2003-04-17  Fernando Perez  <fperez@colorado.edu>

	* setup.py (scriptfiles): Split windows-specific stuff over to a
	separate file, in an attempt to have a Windows GUI installer.
	That didn't work, but part of the groundwork is done.

	* IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
	indent/unindent with 4 spaces.  Particularly useful in combination
	with the new auto-indent option.

2003-04-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py: various replacements of self.rc for
	self.shell.rc.  A lot more remains to be done to fully disentangle
	this class from the main Shell class.

	* IPython/GnuplotRuntime.py: added checks for mouse support so
	that we don't try to enable it if the current gnuplot doesn't
	really support it.  Also added checks so that we don't try to
	enable persist under Windows (where Gnuplot doesn't recognize the
	option).

	* IPython/iplib.py (InteractiveShell.interact): Added optional
	auto-indenting code, after a patch by King C. Shu
	<kingshu-AT-myrealbox.com>. It's off by default because it doesn't
	get along well with pasting indented code.  If I ever figure out
	how to make that part go well, it will become on by default.

	* IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
	crash ipython if there was an unmatched '%' in the user's prompt
	string.  Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
	
	* IPython/iplib.py (InteractiveShell.interact): removed the
	ability to ask the user whether he wants to crash or not at the
	'last line' exception handler.  Calling functions at that point
	changes the stack, and the error reports would have incorrect
	tracebacks.

	* IPython/Magic.py (Magic.magic_page): Added new @page magic, to
	pass through a peger a pretty-printed form of any object.  After a
	contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>

2003-04-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
	all files in ~ would be modified at first install (instead of
	~/.ipython).  This could be potentially disastrous, as the
	modification (make line-endings native) could damage binary files.
	
2003-04-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_help): Modified to
	handle only lines which are invalid python.  This now means that
	lines like 'x=1 #?' execute properly.  Thanks to Jeffery Collins
	for the bug report.

2003-04-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
	where failing to set sys.last_traceback would crash pdb.pm().
	Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
	report.

2003-03-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
	before printing it (it had a lot of spurious blank lines at the
	end).

	* IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
	output would be sent 21 times!  Obviously people don't use this
	too often, or I would have heard about it.

2003-03-24  Fernando Perez  <fperez@colorado.edu>

	* setup.py (scriptfiles): renamed the data_files parameter from
	'base' to 'data' to fix rpm build issues.  Thanks to Ralf Ahlbrink
	for the patch.

2003-03-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (error): added error() and fatal()
	functions.

2003-03-18  *** Released version 0.2.15pre3

2003-03-18  Fernando Perez  <fperez@colorado.edu>

	* setupext/install_data_ext.py
	(install_data_ext.initialize_options): Class contributed by Jack
	Moffit for fixing the old distutils hack.  He is sending this to
	the distutils folks so in the future we may not need it as a
	private fix.

	* MANIFEST.in: Extensive reorganization, based on Jack Moffit's
	changes for Debian packaging.  See his patch for full details.
	The old distutils hack of making the ipythonrc* files carry a
	bogus .py extension is gone, at last.  Examples were moved to a
	separate subdir under doc/, and the separate executable scripts
	now live in their own directory.  Overall a great cleanup.  The
	manual was updated to use the new files, and setup.py has been
	fixed for this setup.

	* IPython/PyColorize.py (Parser.usage): made non-executable and
	created a pycolor wrapper around it to be included as a script.

2003-03-12  *** Released version 0.2.15pre2

2003-03-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/ColorANSI.py (make_color_table): Finally fixed the
	long-standing problem with garbage characters in some terminals.
	The issue was really that the \001 and \002 escapes must _only_ be
	passed to input prompts (which call readline), but _never_ to
	normal text to be printed on screen.  I changed ColorANSI to have
	two classes: TermColors and InputTermColors, each with the
	appropriate escapes for input prompts or normal text.  The code in
	Prompts.py got slightly more complicated, but this very old and
	annoying bug is finally fixed.  

	All the credit for nailing down the real origin of this problem
	and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
	*Many* thanks to him for spending quite a bit of effort on this.

2003-03-05  *** Released version 0.2.15pre1

2003-03-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/FakeModule.py: Moved the former _FakeModule to a
	separate file, because it's also needed by Magic (to fix a similar
	pickle-related issue in @run).

2003-03-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_autocall): new magic to control
	the autocall option at runtime.
	(Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
	across Magic.py to start separating Magic from InteractiveShell.
	(Magic._ofind): Fixed to return proper namespace for dotted
	names. Before, a dotted name would always return 'not currently
	defined', because it would find the 'parent'. s.x would be found,
	but since 'x' isn't defined by itself, it would get confused.
	(Magic.magic_run): Fixed pickling problems reported by Ralf
	Ahlbrink <RAhlbrink-AT-RosenInspection.net>.  The fix was similar to
	that I'd used when Mike Heeter reported similar issues at the
	top-level, but now for @run.  It boils down to injecting the
	namespace where code is being executed with something that looks
	enough like a module to fool pickle.dump().  Since a pickle stores
	a named reference to the importing module, we need this for
	pickles to save something sensible.

	* IPython/ipmaker.py (make_IPython): added an autocall option.

	* IPython/iplib.py (InteractiveShell._prefilter): reordered all of
	the auto-eval code.  Now autocalling is an option, and the code is
	also vastly safer.  There is no more eval() involved at all.

2003-03-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): Changed interface to return a
	dict with named keys instead of a tuple.

	* IPython: Started using CVS for IPython as of 0.2.15pre1.

	* setup.py (make_shortcut): Fixed message about directories
	created during Windows installation (the directories were ok, just
	the printed message was misleading).  Thanks to Chris Liechti
	<cliechti-AT-gmx.net> for the heads up.

2003-02-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
	of ValueError exception when checking for auto-execution.  This
	one is raised by things like Numeric arrays arr.flat when the
	array is non-contiguous.

2003-01-31  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
	not return any value at all (even though the command would get
	executed).
	(xsys): Flush stdout right after printing the command to ensure
	proper ordering of commands and command output in the total
	output.
	(SystemExec/xsys/bq): Switched the names of xsys/bq and
	system/getoutput as defaults.  The old ones are kept for
	compatibility reasons, so no code which uses this library needs
	changing.

2003-01-27  *** Released version 0.2.14

2003-01-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_edit): Fixed problem where
	functions defined in previous edit sessions could not be re-edited
	(because the temp files were immediately removed).  Now temp files
	are removed only at IPython's exit.
	(Magic.magic_run): Improved @run to perform shell-like expansions
	on its arguments (~users and $VARS).  With this, @run becomes more
	like a normal command-line.

	* IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
	bugs related to embedding and cleaned up that code.  A fairly
	important one was the impossibility to access the global namespace
	through the embedded IPython (only local variables were visible).

2003-01-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): Fixed
	auto-calling to be a bit more conservative.  Now it doesn't get
	triggered if any of '!=()<>' are in the rest of the input line, to
	allow comparing callables.  Thanks to Alex for the heads up.

2003-01-07  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): fixed estimation of the number of
	lines in a string to be paged to simply count newlines. This
	prevents over-guessing due to embedded escape sequences. A better
	long-term solution would involve stripping out the control chars
	for the count, but it's potentially so expensive I just don't
	think it's worth doing.

2002-12-19  *** Released version 0.2.14pre50

2002-12-19  Fernando Perez  <fperez@colorado.edu>

	* tools/release (version): Changed release scripts to inform
	Andrea and build a NEWS file with a list of recent changes.

	* IPython/ColorANSI.py (__all__): changed terminal detection
	code. Seems to work better for xterms without breaking
	konsole. Will need more testing to determine if WinXP and Mac OSX
	also work ok.

2002-12-18  *** Released version 0.2.14pre49

2002-12-18  Fernando Perez  <fperez@colorado.edu>

	* Docs: added new info about Mac OSX, from Andrea.

	* IPython/Gnuplot2.py (String): Added a String PlotItem class to
	allow direct plotting of python strings whose format is the same
	of gnuplot data files.

2002-12-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): fixed default (y)
	value of exit question to be acknowledged.

2002-12-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py: removed generators, which had been added
	by mistake in an earlier debugging run. This was causing trouble
	to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
	for pointing this out.

2002-11-17  Fernando Perez  <fperez@colorado.edu>

	* Manual: updated the Gnuplot section.

	* IPython/GnuplotRuntime.py: refactored a lot all this code, with
	a much better split of what goes in Runtime and what goes in
	Interactive.

	* IPython/ipmaker.py: fixed bug where import_fail_info wasn't
	being imported from iplib.

	* IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
	for command-passing. Now the global Gnuplot instance is called
	'gp' instead of 'g', which was really a far too fragile and
	common name.

	* IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
	bounding boxes generated by Gnuplot for square plots.

	* IPython/genutils.py (popkey): new function added. I should
	suggest this on c.l.py as a dict method, it seems useful.

	* IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
	to transparently handle PostScript generation. MUCH better than
	the previous plot_eps/replot_eps (which I removed now). The code
	is also fairly clean and well documented now (including
	docstrings).

2002-11-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_edit): fixed docstring
	(inconsistent with options).

	* IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
	manually disabled, I don't know why. Fixed it.
	(Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
	eps output.

2002-11-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
	don't propagate up to caller. Fixes crash reported by François
	Pinard.

2002-11-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): fixed problem with writing
	history file for new users.
	(make_IPython): fixed bug where initial install would leave the
	user running in the .ipython dir.
	(make_IPython): fixed bug where config dir .ipython would be
	created regardless of the given -ipythondir option. Thanks to Cory
	Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.

	* IPython/genutils.py (ask_yes_no): new function for asking yes/no
	type confirmations. Will need to use it in all of IPython's code
	consistently.
	
	* IPython/CrashHandler.py (CrashHandler.__call__): changed the
	context to print 31 lines instead of the default 5. This will make
	the crash reports extremely detailed in case the problem is in
	libraries I don't have access to.

	* IPython/iplib.py (InteractiveShell.interact): changed the 'last
	line of defense' code to still crash, but giving users fair
	warning. I don't want internal errors to go unreported: if there's
	an internal problem, IPython should crash and generate a full
	report.

2002-11-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): added code to trap
	otherwise uncaught exceptions which can appear if people set
	sys.stdout to something badly broken. Thanks to a crash report
	from henni-AT-mail.brainbot.com.

2002-11-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): added
	__IPYTHON__active to the builtins. It's a flag which goes on when
	the interaction starts and goes off again when it stops. This
	allows embedding code to detect being inside IPython. Before this
	was done via __IPYTHON__, but that only shows that an IPython
	instance has been created.

	* IPython/Magic.py (Magic.magic_env): I realized that in a
	UserDict, instance.data holds the data as a normal dict. So I
	modified @env to return os.environ.data instead of rebuilding a
	dict by hand.

2002-11-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (warn): changed so that level 1 prints no
	header. Level 2 is now the default (with 'WARNING' header, as
	before). I think I tracked all places where changes were needed in
	IPython, but outside code using the old level numbering may have
	broken.

	* IPython/iplib.py (InteractiveShell.runcode): added this to
	handle the tracebacks in SystemExit traps correctly. The previous
	code (through interact) was printing more of the stack than
	necessary, showing IPython internal code to the user.

	* IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
	default. Now that the default at the confirmation prompt is yes,
	it's not so intrusive. François' argument that ipython sessions
	tend to be complex enough not to lose them from an accidental C-d,
	is a valid one.

	* IPython/iplib.py (InteractiveShell.interact): added a
	showtraceback() call to the SystemExit trap, and modified the exit
	confirmation to have yes as the default.

	* IPython/UserConfig/ipythonrc.py: removed 'session' option from
	this file. It's been gone from the code for a long time, this was
	simply leftover junk.

2002-11-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/ipythonrc.py: new confirm_exit option
	added. If set, IPython now traps EOF and asks for
	confirmation. After a request by François Pinard.

	* IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
	of @abort, and with a new (better) mechanism for handling the
	exceptions.

2002-10-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/usage.py (__doc__): updated the --help information and
	the ipythonrc file to indicate that -log generates
	./ipython.log. Also fixed the corresponding info in @logstart.
	This and several other fixes in the manuals thanks to reports by
	François Pinard <pinard-AT-iro.umontreal.ca>.
	
	* IPython/Logger.py (Logger.switch_log): Fixed error message to
	refer to @logstart (instead of @log, which doesn't exist).

	* IPython/iplib.py (InteractiveShell._prefilter): fixed
	AttributeError crash. Thanks to Christopher Armstrong
	<radix-AT-twistedmatrix.com> for the report/fix. This bug had been
	introduced recently (in 0.2.14pre37) with the fix to the eval
	problem mentioned below.
	
2002-10-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
	installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.

	* IPython/iplib.py (InteractiveShell._prefilter): Many changes to
	this function to fix a problem reported by Alex Schmolck. He saw
	it with list comprehensions and generators, which were getting
	called twice. The real problem was an 'eval' call in testing for
	automagic which was evaluating the input line silently. 

	This is a potentially very nasty bug, if the input has side
	effects which must not be repeated. The code is much cleaner now,
	without any blanket 'except' left and with a regexp test for
	actual function names. 

	But an eval remains, which I'm not fully comfortable with. I just
	don't know how to find out if an expression could be a callable in
	the user's namespace without doing an eval on the string. However
	that string is now much more strictly checked so that no code
	slips by, so the eval should only happen for things that can
	really be only function/method names.

2002-10-15  Fernando Perez  <fperez@colorado.edu>

	* Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
	OSX information to main manual, removed README_Mac_OSX file from
	distribution. Also updated credits for recent additions.

2002-10-10  Fernando Perez  <fperez@colorado.edu>

	* README_Mac_OSX: Added a README for Mac OSX users for fixing
	terminal-related issues. Many thanks to Andrea Riciputi
	<andrea.riciputi-AT-libero.it> for writing it.

	* IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
	thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.

	* setup.py (make_shortcut): Fixes for Windows installation. Thanks
	to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
	<syver-en-AT-online.no> who both submitted patches for this problem.

	* IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
	global embedding to make sure that things don't overwrite user
	globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>

	* IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
	compatibility. Thanks to Hayden Callow
	<h.callow-AT-elec.canterbury.ac.nz>

2002-10-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/Gnuplot2.py (PlotItem): Added 'index' option for
	Gnuplot.File objects.
	      
2002-07-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timing): Added timings() and timing() for
	quick access to the most commonly needed data, the execution
	times. Old timing() renamed to timings_out().

2002-07-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
	bug with nested instances disrupting the parent's tab completion.

	* IPython/iplib.py (all_completions): Added Alex Schmolck's
	all_completions code to begin the emacs integration.

	* IPython/Gnuplot2.py (zip_items): Added optional 'titles'
	argument to allow titling individual arrays when plotting.

2002-07-15  Fernando Perez  <fperez@colorado.edu>

	* setup.py (make_shortcut): changed to retrieve the value of
	'Program Files' directory from the registry (this value changes in
	non-english versions of Windows). Thanks to Thomas Fanslau
	<tfanslau-AT-gmx.de> for the report.

2002-07-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
	a bug in pdb, which crashes if a line with only whitespace is
	entered. Bug report submitted to sourceforge.

2002-07-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
	reporting exceptions (it's a bug in inspect.py, I just set a
	workaround).

2002-07-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): fixed reference to
	__IPYTHON__ in __builtins__ to show up in user_ns.

2002-07-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/GnuplotInteractive.py (magic_gp_set_default): changed
	name from @gp_set_instance to @gp_set_default.

	* IPython/ipmaker.py (make_IPython): default editor value set to
	'0' (a string), to match the rc file. Otherwise will crash when
	.strip() is called on it.
	

2002-06-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
	of files in current directory when a file is executed via
	@run. Patch also by RA <ralf_ahlbrink-AT-web.de>.

	* setup.py (manfiles): fix for rpm builds, submitted by RA
	<ralf_ahlbrink-AT-web.de>. Now we have RPMs!

	* IPython/ipmaker.py (make_IPython): fixed lookup of default
	editor when set to '0'. Problem was, '0' evaluates to True (it's a
	string!). A. Schmolck caught this one.

2002-06-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): fixed bug when running user
	defined files at the cmd line. __name__ wasn't being set to
	__main__.

	* IPython/Gnuplot2.py (zip_items): improved it so it can plot also
	regular lists and tuples besides Numeric arrays.

	* IPython/Prompts.py (CachedOutput.__call__): Added output
	supression for input ending with ';'. Similar to Mathematica and
	Matlab. The _* vars and Out[] list are still updated, just like
	Mathematica behaves.

2002-06-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
	.ini extensions for profiels under Windows.

	* IPython/OInspect.py (Inspector.pinfo): improved alignment of
	string form. Fix contributed by Alexander Schmolck
	<a.schmolck-AT-gmx.net>

	* IPython/GnuplotRuntime.py (gp_new): new function. Returns a
	pre-configured Gnuplot instance.

2002-06-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (exp_safe): new function, works around the
	underflow problems in Numeric.
	(log2): New fn. Safe log in base 2: returns exact integer answer
	for exact integer powers of 2.

	* IPython/Magic.py (get_py_filename): fixed it not expanding '~'
	properly.

2002-06-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timing): new function like
	Mathematica's. Similar to time_test, but returns more info.

2002-06-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_save): modified @save and @r
	according to Mike Heeter's suggestions.

2002-06-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
	system. GnuplotMagic is gone as a user-directory option. New files
	make it easier to use all the gnuplot stuff both from external
	programs as well as from IPython. Had to rewrite part of
	hardcopy() b/c of a strange bug: often the ps files simply don't
	get created, and require a repeat of the command (often several
	times).

	* IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
	resolve output channel at call time, so that if sys.stderr has
	been redirected by user this gets honored.

2002-06-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
	IPShell. Kept a copy with the old names to avoid breaking people's
	embedded code.

	* IPython/ipython: simplified it to the bare minimum after
	Holger's suggestions. Added info about how to use it in
	PYTHONSTARTUP.

	* IPython/Shell.py (IPythonShell): changed the options passing
	from a string with funky %s replacements to a straight list. Maybe
	a bit more typing, but it follows sys.argv conventions, so there's
	less special-casing to remember.

2002-06-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_r): new magic auto-repeat
	command. Thanks to a suggestion by Mike Heeter.
	(Magic.magic_pfile): added behavior to look at filenames if given
	arg is not a defined object.
	(Magic.magic_save): New @save function to save code snippets. Also
	a Mike Heeter idea.

	* IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
	plot() and replot(). Much more convenient now, especially for
	interactive use.

	* IPython/Magic.py (Magic.magic_run): Added .py automatically to
	filenames.

2002-06-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/Struct.py (Struct.__init__): modified to admit
	initialization via another struct.

	* IPython/genutils.py (SystemExec.__init__): New stateful
	interface to xsys and bq. Useful for writing system scripts.

2002-05-30  Fernando Perez  <fperez@colorado.edu>

	* MANIFEST.in: Changed docfile selection to exclude all the lyx
	documents. This will make the user download smaller (it's getting
	too big).

2002-05-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (_FakeModule.__init__): New class introduced to
	fix problems with shelve and pickle. Seems to work, but I don't
	know if corner cases break it. Thanks to Mike Heeter
	<korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.

2002-05-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Macro.__init__): fixed magics embedded in
	macros having broken.

2002-05-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_logstart): fixed recently
	introduced logging bug: all history before logging started was
	being written one character per line! This came from the redesign
	of the input history as a special list which slices to strings,
	not to lists.

2002-05-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (CachedOutput.__init__): made the color table
	be an attribute of all classes in this module. The design of these
	classes needs some serious overhauling.

	* IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
	which was ignoring '_' in option names.

	* IPython/ultraTB.py (FormattedTB.__init__): Changed
	'Verbose_novars' to 'Context' and made it the new default. It's a
	bit more readable and also safer than verbose.

	* IPython/PyColorize.py (Parser.__call__): Fixed coloring of
	triple-quoted strings.

	* IPython/OInspect.py (__all__): new module exposing the object
	introspection facilities. Now the corresponding magics are dummy
	wrappers around this. Having this module will make it much easier
	to put these functions into our modified pdb.
	This new object inspector system uses the new colorizing module,
	so source code and other things are nicely syntax highlighted.

2002-05-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/ColorANSI.py: Split the coloring tools into a separate
	module so I can use them in other code easier (they were part of
	ultraTB).

2002-05-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
	fixed it to set the global 'g' also to the called instance, as
	long as 'g' was still a gnuplot instance (so it doesn't overwrite
	user's 'g' variables).

	* IPython/iplib.py (InteractiveShell.__init__): Added In/Out
	global variables (aliases to _ih,_oh) so that users which expect
	In[5] or Out[7] to work aren't unpleasantly surprised.
	(InputList.__getslice__): new class to allow executing slices of
	input history directly. Very simple class, complements the use of
	macros.

2002-05-16  Fernando Perez  <fperez@colorado.edu>

	* setup.py (docdirbase): make doc directory be just doc/IPython
	without version numbers, it will reduce clutter for users.

	* IPython/Magic.py (Magic.magic_run): Add explicit local dict to
	execfile call to prevent possible memory leak. See for details:
	http://mail.python.org/pipermail/python-list/2002-February/088476.html

2002-05-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_psource): made the object
	introspection names be more standard: pdoc, pdef, pfile and
	psource. They all print/page their output, and it makes
	remembering them easier. Kept old names for compatibility as
	aliases.

2002-05-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/GnuplotMagic.py: I think I finally understood
	what the mouse problem was. The trick is to use gnuplot with temp
	files and NOT with pipes (for data communication), because having
	both pipes and the mouse on is bad news.

2002-05-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): fixed namespace order search
	bug. Information would be reported about builtins even when
	user-defined functions overrode them.

2002-05-11  Fernando Perez  <fperez@colorado.edu>

	* IPython/__init__.py (__all__): removed FlexCompleter from
	__all__ so that things don't fail in platforms without readline.

2002-05-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/__init__.py (__all__): removed numutils from __all__ b/c
	it requires Numeric, effectively making Numeric a dependency for
	IPython.

	* Released 0.2.13

	* IPython/Magic.py (Magic.magic_prun): big overhaul to the
	profiler interface. Now all the major options from the profiler
	module are directly supported in IPython, both for single
	expressions (@prun) and for full programs (@run -p).

2002-05-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
	magic properly formatted for screen.

	* setup.py (make_shortcut): Changed things to put pdf version in
	doc/ instead of doc/manual (had to change lyxport a bit).

	* IPython/Magic.py (Profile.string_stats): made profile runs go
	through pager (they are long and a pager allows searching, saving,
	etc.)

2002-05-08  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.12

2002-05-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
	introduced); 'hist n1 n2' was broken.
	(Magic.magic_pdb): added optional on/off arguments to @pdb
	(Magic.magic_run): added option -i to @run, which executes code in
	the IPython namespace instead of a clean one. Also added @irun as
	an alias to @run -i.

	* IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
	fixed (it didn't really do anything, the namespaces were wrong).

	* IPython/Debugger.py (__init__): Added workaround for python 2.1

	* IPython/__init__.py (__all__): Fixed package namespace, now
	'import IPython' does give access to IPython.<all> as
	expected. Also renamed __release__ to Release.

	* IPython/Debugger.py (__license__): created new Pdb class which
	functions like a drop-in for the normal pdb.Pdb but does NOT
	import readline by default. This way it doesn't muck up IPython's
	readline handling, and now tab-completion finally works in the
	debugger -- sort of. It completes things globally visible, but the
	completer doesn't track the stack as pdb walks it. That's a bit
	tricky, and I'll have to implement it later.

2002-05-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
	magic docstrings when printed via ? (explicit \'s were being
	printed).

	* IPython/ipmaker.py (make_IPython): fixed namespace
	identification bug. Now variables loaded via logs or command-line
	files are recognized in the interactive namespace by @who.

	* IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
	log replay system stemming from the string form of Structs.

	* IPython/Magic.py (Macro.__init__): improved macros to properly
	handle magic commands in them.
	(Magic.magic_logstart): usernames are now expanded so 'logstart
	~/mylog' now works.

	* IPython/iplib.py (complete): fixed bug where paths starting with
	'/' would be completed as magic names.

2002-05-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_run): added options -p and -f to
	allow running full programs under the profiler's control.

	* IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
	mode to report exceptions verbosely but without formatting
	variables. This addresses the issue of ipython 'freezing' (it's
	not frozen, but caught in an expensive formatting loop) when huge
	variables are in the context of an exception.
	(VerboseTB.text): Added '--->' markers at line where exception was
	triggered. Much clearer to read, especially in NoColor modes.

	* IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
	implemented in reverse when changing to the new parse_options().

2002-05-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): new function so that
	magics can parse options easier.
	(Magic.magic_prun): new function similar to profile.run(),
	suggested by Chris Hart.
	(Magic.magic_cd): fixed behavior so that it only changes if
	directory actually is in history.

	* IPython/usage.py (__doc__): added information about potential
	slowness of Verbose exception mode when there are huge data
	structures to be formatted (thanks to Archie Paulson).

	* IPython/ipmaker.py (make_IPython): Changed default logging
	(when simply called with -log) to use curr_dir/ipython.log in
	rotate mode. Fixed crash which was occuring with -log before
	(thanks to Jim Boyle).

2002-05-01  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.11 for these fixes (mainly the ultraTB one which
	was nasty -- though somewhat of a corner case).

	* IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
	text (was a bug).

2002-04-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
	a print after ^D or ^C from the user so that the In[] prompt
	doesn't over-run the gnuplot one.

2002-04-29  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.10

	* IPython/__release__.py (version): get date dynamically.

	* Misc. documentation updates thanks to Arnd's comments. Also ran
	a full spellcheck on the manual (hadn't been done in a while).

2002-04-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_logstart): Fixed bug where
	starting a log in mid-session would reset the input history list.

2002-04-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
	all files were being included in an update. Now anything in
	UserConfig that matches [A-Za-z]*.py will go (this excludes
	__init__.py)

2002-04-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
	to __builtins__ so that any form of embedded or imported code can
	test for being inside IPython.

	* IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
	changed to GnuplotMagic because it's now an importable module,
	this makes the name follow that of the standard Gnuplot module.
	GnuplotMagic can now be loaded at any time in mid-session.

2002-04-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py: removed SIUnits. It doesn't properly set
	the globals (IPython has its own namespace) and the
	PhysicalQuantity stuff is much better anyway.

	* IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
	embedding example to standard user directory for
	distribution. Also put it in the manual.

	* IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
	instance as first argument (so it doesn't rely on some obscure
	hidden global).

	* IPython/UserConfig/ipythonrc.py: put () back in accepted
	delimiters. While it prevents ().TAB from working, it allows
	completions in open (... expressions. This is by far a more common
	case.

2002-04-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Extensions/InterpreterPasteInput.py: new
	syntax-processing module for pasting lines with >>> or ... at the
	start.

	* IPython/Extensions/PhysicalQ_Interactive.py
	(PhysicalQuantityInteractive.__int__): fixed to work with either
	Numeric or math.

	* IPython/UserConfig/ipythonrc-numeric.py: reorganized the
	provided profiles. Now we have:
	-math -> math module as * and cmath with its own namespace.
	-numeric -> Numeric as *, plus gnuplot & grace
	-physics -> same as before

	* IPython/Magic.py (Magic.magic_magic): Fixed bug where
	user-defined magics wouldn't be found by @magic if they were
	defined as class methods. Also cleaned up the namespace search
	logic and the string building (to use %s instead of many repeated
	string adds).

	* IPython/UserConfig/example-magic.py (magic_foo): updated example
	of user-defined magics to operate with class methods (cleaner, in
	line with the gnuplot code).

2002-04-22  Fernando Perez  <fperez@colorado.edu>

	* setup.py: updated dependency list so that manual is updated when
	all included files change.

	* IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
	the delimiter removal option (the fix is ugly right now).

	* IPython/UserConfig/ipythonrc-physics.py: simplified not to load
	all of the math profile (quicker loading, no conflict between
	g-9.8 and g-gnuplot).

	* IPython/CrashHandler.py (CrashHandler.__call__): changed default
	name of post-mortem files to IPython_crash_report.txt.

	* Cleanup/update of the docs. Added all the new readline info and
	formatted all lists as 'real lists'.

	* IPython/ipmaker.py (make_IPython): removed now-obsolete
	tab-completion options, since the full readline parse_and_bind is
	now accessible.

	* IPython/iplib.py (InteractiveShell.init_readline): Changed
	handling of readline options. Now users can specify any string to
	be passed to parse_and_bind(), as well as the delimiters to be
	removed.
	(InteractiveShell.__init__): Added __name__ to the global
	namespace so that things like Itpl which rely on its existence
	don't crash.
	(InteractiveShell._prefilter): Defined the default with a _ so
	that prefilter() is easier to override, while the default one
	remains available.

2002-04-18  Fernando Perez  <fperez@colorado.edu>

	* Added information about pdb in the docs.

2002-04-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): added rc_override option to
	allow passing config options at creation time which may override
	anything set in the config files or command line. This is
	particularly useful for configuring embedded instances.

2002-04-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.log): Fixed a nasty bug which could
	crash embedded instances because of the input cache falling out of
	sync with the output counter.

	* IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
	mode which calls pdb after an uncaught exception in IPython itself.

2002-04-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
	readline, fix it back after each call.

	* IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
	method to force all access via __call__(), which guarantees that
	traceback references are properly deleted.

	* IPython/Prompts.py (CachedOutput._display): minor fixes to
	improve printing when pprint is in use.

2002-04-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
	exceptions aren't caught anymore. If the user triggers one, he
	should know why he's doing it and it should go all the way up,
	just like any other exception. So now @abort will fully kill the
	embedded interpreter and the embedding code (unless that happens
	to catch SystemExit).

	* IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
	and a debugger() method to invoke the interactive pdb debugger
	after printing exception information. Also added the corresponding
	-pdb option and @pdb magic to control this feature, and updated
	the docs. After a suggestion from Christopher Hart
	(hart-AT-caltech.edu).

2002-04-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
	the exception handlers defined by the user (not the CrashHandler)
	so that user exceptions don't trigger an ipython bug report.

	* IPython/ultraTB.py (ColorTB.__init__): made the color scheme
	configurable (it should have always been so).

2002-03-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
	and there to fix embedding namespace issues. This should all be
	done in a more elegant way.

2002-03-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (get_home_dir): Try to make it work under
	win9x also.

2002-03-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__init__): leave
	sys.displayhook untouched upon __init__.

2002-03-19  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.9 (for embedding bug, basically).

	* IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
	exceptions so that enclosing shell's state can be restored.

	* Changed magic_gnuplot.py to magic-gnuplot.py to standardize
	naming conventions in the .ipython/ dir.

	* IPython/iplib.py (InteractiveShell.init_readline): removed '-'
	from delimiters list so filenames with - in them get expanded.

	* IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
	sys.displayhook not being properly restored after an embedded call.

 2002-03-18  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.8

	* IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
	some files weren't being included in a -upgrade.
	(InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
	on' so that the first tab completes.
	(InteractiveShell.handle_magic): fixed bug with spaces around
	quotes breaking many magic commands.

	* setup.py: added note about ignoring the syntax error messages at
	installation.

	* IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
	streamlining the gnuplot interface, now there's only one magic @gp.

2002-03-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/magic_gnuplot.py: new name for the
	example-magic_pm.py file. Much enhanced system, now with a shell
	for communicating directly with gnuplot, one command at a time.

	* IPython/Magic.py (Magic.magic_run): added option -n to prevent
	setting __name__=='__main__'.

	* IPython/UserConfig/example-magic_pm.py (magic_pm): Added
	mini-shell for accessing gnuplot from inside ipython. Should
	extend it later for grace access too. Inspired by Arnd's
	suggestion.

	* IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
	calling magic functions with () in their arguments. Thanks to Arnd
	Baecker for pointing this to me.

	* IPython/numutils.py (sum_flat): fixed bug. Would recurse
	infinitely for integer or complex arrays (only worked with floats).

2002-03-16  Fernando Perez  <fperez@colorado.edu>

	* setup.py: Merged setup and setup_windows into a single script
	which properly handles things for windows users.

2002-03-15  Fernando Perez  <fperez@colorado.edu>

	* Big change to the manual: now the magics are all automatically
	documented. This information is generated from their docstrings
	and put in a latex file included by the manual lyx file. This way
	we get always up to date information for the magics. The manual
	now also has proper version information, also auto-synced.

	For this to work, an undocumented --magic_docstrings option was added.

2002-03-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (TermColors): fixed problem with dark colors
	under CDE terminals. An explicit ;2 color reset is needed in the escapes.

2002-03-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (TermColors): changed color escapes again to
	fix the (old, reintroduced) line-wrapping bug. Basically, if
	\001..\002 aren't given in the color escapes, lines get wrapped
	weirdly. But giving those screws up old xterms and emacs terms. So
	I added some logic for emacs terms to be ok, but I can't identify old
	xterms separately ($TERM=='xterm' for many terminals, like konsole).

2002-03-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/usage.py (__doc__): Various documentation cleanups and
	updates, both in usage docstrings and in the manual.

	* IPython/Prompts.py (CachedOutput.set_colors): cleanups for
	handling of caching. Set minimum acceptabe value for having a
	cache at 20 values.

	* IPython/iplib.py (InteractiveShell.user_setup): moved the
	install_first_time function to a method, renamed it and added an
	'upgrade' mode. Now people can update their config directory with
	a simple command line switch (-upgrade, also new).

	* IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
	@file (convenient for automagic users under Python >= 2.2). 
	Removed @files (it seemed more like a plural than an abbrev. of
	'file show').

	* IPython/iplib.py (install_first_time): Fixed crash if there were
	backup files ('~') in .ipython/ install directory.

	* IPython/ipmaker.py (make_IPython): fixes for new prompt
	system. Things look fine, but these changes are fairly
	intrusive. Test them for a few days.

	* IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
	the prompts system. Now all in/out prompt strings are user
	controllable. This is particularly useful for embedding, as one
	can tag embedded instances with particular prompts. 

	Also removed global use of sys.ps1/2, which now allows nested
	embeddings without any problems. Added command-line options for
	the prompt strings.

2002-03-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/example-embed-short.py (ipshell): added
	example file with the bare minimum code for embedding.

	* IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
	functionality for the embeddable shell to be activated/deactivated
	either globally or at each call.

	* IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
	rewriting the prompt with '--->' for auto-inputs with proper
	coloring. Now the previous UGLY hack in handle_auto() is gone, and
	this is handled by the prompts class itself, as it should.

2002-03-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_logstart): Changed @log to
	@logstart to avoid name clashes with the math log function.

	* Big updates to X/Emacs section of the manual.

	* Removed ipython_emacs. Milan explained to me how to pass
	arguments to ipython through Emacs. Some day I'm going to end up
	learning some lisp...

2002-03-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipython_emacs: Created script to be used as the
	py-python-command Emacs variable so we can pass IPython
	parameters. I can't figure out how to tell Emacs directly to pass
	parameters to IPython, so a dummy shell script will do it.

	Other enhancements made for things to work better under Emacs'
	various types of terminals. Many thanks to Milan Zamazal
	<pdm-AT-zamazal.org> for all the suggestions and pointers.

2002-03-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): added a --readline! option so
	that loading of readline is now optional. This gives better
	control to emacs users.

	* IPython/ultraTB.py (__date__): Modified color escape sequences
	and now things work fine under xterm and in Emacs' term buffers
	(though not shell ones). Well,  in emacs you get colors, but all
	seem to be 'light' colors (no difference between dark and light
	ones). But the garbage chars are gone, and also in xterms. It
	seems that now I'm using 'cleaner' ansi sequences.

2002-02-21  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.7 (mainly to publish the scoping fix).
	
	* IPython/Logger.py (Logger.logstate): added. A corresponding
	@logstate magic was created.

	* IPython/Magic.py: fixed nested scoping problem under Python
	2.1.x (automagic wasn't working).

2002-02-20  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.6.

	* IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
	option so that logs can come out without any headers at all.

	* IPython/UserConfig/ipythonrc-scipy.py: created a profile for
	SciPy.

	* IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
	that embedded IPython calls don't require vars() to be explicitly
	passed. Now they are extracted from the caller's frame (code
	snatched from Eric Jones' weave). Added better documentation to
	the section on embedding and the example file.

	* IPython/genutils.py (page): Changed so that under emacs, it just
	prints the string. You can then page up and down in the emacs
	buffer itself. This is how the builtin help() works.

	* IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
	macro scoping: macros need to be executed in the user's namespace
	to work as if they had been typed by the user.

	* IPython/Magic.py (Magic.magic_macro): Changed macros so they
	execute automatically (no need to type 'exec...'). They then
	behave like 'true macros'. The printing system was also modified
	for this to work.

2002-02-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page_file): new function for paging files
	in an OS-independent way. Also necessary for file viewing to work
	well inside Emacs buffers.
	(page): Added checks for being in an emacs buffer.
	(page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
	same bug in iplib.

2002-02-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.init_readline): modified use
	of readline so that IPython can work inside an Emacs buffer.

	* IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
	method signatures (they weren't really bugs, but it looks cleaner
	and keeps PyChecker happy).

	* IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
	for implementing various user-defined hooks. Currently only
	display is done.

	* IPython/Prompts.py (CachedOutput._display): changed display
	functions so that they can be dynamically changed by users easily.

	* IPython/Extensions/numeric_formats.py (num_display): added an
	extension for printing NumPy arrays in flexible manners. It
	doesn't do anything yet, but all the structure is in
	place. Ultimately the plan is to implement output format control
	like in Octave.

	* IPython/Magic.py (Magic.lsmagic): changed so that bound magic
	methods are found at run-time by all the automatic machinery.

2002-02-17  Fernando Perez  <fperez@colorado.edu>

	* setup_Windows.py (make_shortcut): documented. Cleaned up the
	whole file a little.

	* ToDo: closed this document. Now there's a new_design.lyx
	document for all new ideas. Added making a pdf of it for the
	end-user distro.

	* IPython/Logger.py (Logger.switch_log): Created this to replace
	logon() and logoff(). It also fixes a nasty crash reported by 
	Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.

	* IPython/iplib.py (complete): got auto-completion to work with
	automagic (I had wanted this for a long time).

	* IPython/Magic.py (Magic.magic_files): Added @files as an alias
	to @file, since file() is now a builtin and clashes with automagic
	for @file.

	* Made some new files: Prompts, CrashHandler, Magic, Logger. All
	of this was previously in iplib, which had grown to more than 2000
	lines, way too long. No new functionality, but it makes managing
	the code a bit easier.

	* IPython/iplib.py (IPythonCrashHandler.__call__): Added version
	information to crash reports.

2002-02-12  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.5.

2002-02-11  Fernando Perez  <fperez@colorado.edu>

	* Wrote a relatively complete Windows installer. It puts
	everything in place, creates Start Menu entries and fixes the
	color issues. Nothing fancy, but it works.

2002-02-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.safe_execfile): added an
	os.path.expanduser() call so that we can type @run ~/myfile.py and
	have thigs work as expected.

	* IPython/genutils.py (page): fixed exception handling so things
	work both in Unix and Windows correctly. Quitting a pager triggers
	an IOError/broken pipe in Unix, and in windows not finding a pager
	is also an IOError, so I had to actually look at the return value
	of the exception, not just the exception itself. Should be ok now.

	* IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
	modified to allow case-insensitive color scheme changes.

2002-02-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (native_line_ends): new function to leave
	user config files with os-native line-endings.

	* README and manual updates.

	* IPython/genutils.py: fixed unicode bug: use types.StringTypes
	instead of StringType to catch Unicode strings.

	* IPython/genutils.py (filefind): fixed bug for paths with
	embedded spaces (very common in Windows).

	* IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
	files under Windows, so that they get automatically associated
	with a text editor. Windows makes it a pain to handle
	extension-less files.

	* IPython/iplib.py (InteractiveShell.init_readline): Made the
	warning about readline only occur for Posix. In Windows there's no
	way to get readline, so why bother with the warning.

	* IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
	for __str__ instead of dir(self), since dir() changed in 2.2.

	* Ported to Windows! Tested on XP, I suspect it should work fine
	on NT/2000, but I don't think it will work on 98 et al. That
	series of Windows is such a piece of junk anyway that I won't try
	porting it there. The XP port was straightforward, showed a few
	bugs here and there (fixed all), in particular some string
	handling stuff which required considering Unicode strings (which
	Windows uses). This is good, but hasn't been too tested :) No
	fancy installer yet, I'll put a note in the manual so people at
	least make manually a shortcut.

	* IPython/iplib.py (Magic.magic_colors): Unified the color options
	into a single one, "colors". This now controls both prompt and
	exception color schemes, and can be changed both at startup
	(either via command-line switches or via ipythonrc files) and at
	runtime, with @colors.
	(Magic.magic_run): renamed @prun to @run and removed the old
	@run. The two were too similar to warrant keeping both.

2002-02-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (install_first_time): Added comment on how to
	configure the color options for first-time users. Put a <return>
	request at the end so that small-terminal users get a chance to
	read the startup info.

2002-01-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (CachedOutput.update): Changed output memory
	variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
	input history we still use _i. Did this b/c these variable are
	very commonly used in interactive work, so the less we need to
	type the better off we are.
	(Magic.magic_prun): updated @prun to better handle the namespaces
	the file will run in, including a fix for __name__ not being set
	before.

2002-01-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
	extra garbage for Python 2.2. Need to look more carefully into
	this later.

2002-01-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.showtraceback): fixed to
	display SyntaxError exceptions properly formatted when they occur
	(they can be triggered by imported code).

2002-01-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.safe_execfile): now
	SyntaxError exceptions are reported nicely formatted, instead of
	spitting out only offset information as before.
	(Magic.magic_prun): Added the @prun function for executing
	programs with command line args inside IPython.

2002-01-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
	to *not* include the last item given in a range. This brings their
	behavior in line with Python's slicing: 
	  a[n1:n2] -> a[n1]...a[n2-1]
	It may be a bit less convenient, but I prefer to stick to Python's
	conventions *everywhere*, so users never have to wonder.
	(Magic.magic_macro): Added @macro function to ease the creation of
	macros.

2002-01-05  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.4.

	* IPython/iplib.py (Magic.magic_pdef): 
	(InteractiveShell.safe_execfile): report magic lines and error
	lines without line numbers so one can easily copy/paste them for
	re-execution.

	* Updated manual with recent changes.

	* IPython/iplib.py (Magic.magic_oinfo): added constructor
	docstring printing when class? is called. Very handy for knowing
	how to create class instances (as long as __init__ is well
	documented, of course :)
	(Magic.magic_doc): print both class and constructor docstrings.
	(Magic.magic_pdef): give constructor info if passed a class and
	__call__ info for callable object instances.

2002-01-04  Fernando Perez  <fperez@colorado.edu>

	* Made deep_reload() off by default. It doesn't always work
	exactly as intended, so it's probably safer to have it off. It's
	still available as dreload() anyway, so nothing is lost.

2002-01-02  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.3 (contacted R.Singh at CU about biopython course,
	so I wanted an updated release).

2001-12-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): Added the original
	code from 'code.py' for this module in order to change the
	handling of a KeyboardInterrupt. This was necessary b/c otherwise
	the history cache would break when the user hit Ctrl-C, and
	interact() offers no way to add any hooks to it.

2001-12-23  Fernando Perez  <fperez@colorado.edu>

	* setup.py: added check for 'MANIFEST' before trying to remove
	it. Thanks to Sean Reifschneider.

2001-12-22  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.2.

	* Finished (reasonably) writing the manual. Later will add the
	python-standard navigation stylesheets, but for the time being
	it's fairly complete. Distribution will include html and pdf
	versions.

	* Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
	(MayaVi author).

2001-12-21  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.1. Barring any nasty bugs, this is it as far as a
	good public release, I think (with the manual and the distutils
	installer). The manual can use some work, but that can go
	slowly. Otherwise I think it's quite nice for end users. Next
	summer, rewrite the guts of it...

	* Changed format of ipythonrc files to use whitespace as the
	separator instead of an explicit '='. Cleaner.

2001-12-20  Fernando Perez  <fperez@colorado.edu>

	* Started a manual in LyX. For now it's just a quick merge of the
	various internal docstrings and READMEs. Later it may grow into a
	nice, full-blown manual.

	* Set up a distutils based installer. Installation should now be
	trivially simple for end-users.

2001-12-11  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.0. First public release, announced it at
	comp.lang.python. From now on, just bugfixes...

	* Went through all the files, set copyright/license notices and
	cleaned up things. Ready for release.

2001-12-10  Fernando Perez  <fperez@colorado.edu>

	* Changed the first-time installer not to use tarfiles. It's more
	robust now and less unix-dependent. Also makes it easier for
	people to later upgrade versions.

	* Changed @exit to @abort to reflect the fact that it's pretty
	brutal (a sys.exit()). The difference between @abort and Ctrl-D
	becomes significant only when IPyhton is embedded: in that case,
	C-D closes IPython only, but @abort kills the enclosing program
	too (unless it had called IPython inside a try catching
	SystemExit).

	* Created Shell module which exposes the actuall IPython Shell
	classes, currently the normal and the embeddable one. This at
	least offers a stable interface we won't need to change when
	(later) the internals are rewritten. That rewrite will be confined
	to iplib and ipmaker, but the Shell interface should remain as is.

	* Added embed module which offers an embeddable IPShell object,
	useful to fire up IPython *inside* a running program. Great for
	debugging or dynamical data analysis.

2001-12-08  Fernando Perez  <fperez@colorado.edu>

	* Fixed small bug preventing seeing info from methods of defined
	objects (incorrect namespace in _ofind()).

	* Documentation cleanup. Moved the main usage docstrings to a
	separate file, usage.py (cleaner to maintain, and hopefully in the
	future some perlpod-like way of producing interactive, man and
	html docs out of it will be found).

	* Added @profile to see your profile at any time.

	* Added @p as an alias for 'print'. It's especially convenient if
	using automagic ('p x' prints x).

	* Small cleanups and fixes after a pychecker run.

	* Changed the @cd command to handle @cd - and @cd -<n> for
	visiting any directory in _dh.

	* Introduced _dh, a history of visited directories. @dhist prints
	it out with numbers.

2001-12-07  Fernando Perez  <fperez@colorado.edu>

	* Released 0.1.22

	* Made initialization a bit more robust against invalid color
	options in user input (exit, not traceback-crash).

	* Changed the bug crash reporter to write the report only in the
	user's .ipython directory. That way IPython won't litter people's
	hard disks with crash files all over the place. Also print on
	screen the necessary mail command.

	* With the new ultraTB, implemented LightBG color scheme for light
	background terminals. A lot of people like white backgrounds, so I
	guess we should at least give them something readable.

2001-12-06  Fernando Perez  <fperez@colorado.edu>

	* Modified the structure of ultraTB. Now there's a proper class
	for tables of color schemes which allow adding schemes easily and
	switching the active scheme without creating a new instance every
	time (which was ridiculous). The syntax for creating new schemes
	is also cleaner. I think ultraTB is finally done, with a clean
	class structure. Names are also much cleaner (now there's proper
	color tables, no need for every variable to also have 'color' in
	its name).

	* Broke down genutils into separate files. Now genutils only
	contains utility functions, and classes have been moved to their
	own files (they had enough independent functionality to warrant
	it): ConfigLoader, OutputTrap, Struct.

2001-12-05  Fernando Perez  <fperez@colorado.edu>

	* IPython turns 21! Released version 0.1.21, as a candidate for
	public consumption. If all goes well, release in a few days.

	* Fixed path bug (files in Extensions/ directory wouldn't be found
	unless IPython/ was explicitly in sys.path).

	* Extended the FlexCompleter class as MagicCompleter to allow
	completion of @-starting lines.

	* Created __release__.py file as a central repository for release
	info that other files can read from.

	* Fixed small bug in logging: when logging was turned on in
	mid-session, old lines with special meanings (!@?) were being
	logged without the prepended comment, which is necessary since
	they are not truly valid python syntax. This should make session
	restores produce less errors.

	* The namespace cleanup forced me to make a FlexCompleter class
	which is nothing but a ripoff of rlcompleter, but with selectable
	namespace (rlcompleter only works in __main__.__dict__). I'll try
	to submit a note to the authors to see if this change can be
	incorporated in future rlcompleter releases (Dec.6: done)

	* More fixes to namespace handling. It was a mess! Now all
	explicit references to __main__.__dict__ are gone (except when
	really needed) and everything is handled through the namespace
	dicts in the IPython instance. We seem to be getting somewhere
	with this, finally...

	* Small documentation updates.

	* Created the Extensions directory under IPython (with an
	__init__.py). Put the PhysicalQ stuff there. This directory should
	be used for all special-purpose extensions.

	* File renaming:
	  ipythonlib --> ipmaker
	  ipplib     --> iplib
	This makes a bit more sense in terms of what these files actually do.

	* Moved all the classes and functions in ipythonlib to ipplib, so
	now ipythonlib only has make_IPython(). This will ease up its
	splitting in smaller functional chunks later.

	* Cleaned up (done, I think) output of @whos. Better column
	formatting, and now shows str(var) for as much as it can, which is
	typically what one gets with a 'print var'.

2001-12-04  Fernando Perez  <fperez@colorado.edu>

	* Fixed namespace problems. Now builtin/IPyhton/user names get
	properly reported in their namespace. Internal namespace handling
	is finally getting decent (not perfect yet, but much better than
	the ad-hoc mess we had).

	* Removed -exit option. If people just want to run a python
	script, that's what the normal interpreter is for. Less
	unnecessary options, less chances for bugs.

	* Added a crash handler which generates a complete post-mortem if
	IPython crashes. This will help a lot in tracking bugs down the
	road.

	* Fixed nasty bug in auto-evaluation part of prefilter(). Names
	which were boud to functions being reassigned would bypass the
	logger, breaking the sync of _il with the prompt counter. This
	would then crash IPython later when a new line was logged.

2001-12-02  Fernando Perez  <fperez@colorado.edu>

	* Made IPython a package. This means people don't have to clutter
	their sys.path with yet another directory. Changed the INSTALL
	file accordingly.

	* Cleaned up the output of @who_ls, @who and @whos. @who_ls now
	sorts its output (so @who shows it sorted) and @whos formats the
	table according to the width of the first column. Nicer, easier to
	read. Todo: write a generic table_format() which takes a list of
	lists and prints it nicely formatted, with optional row/column
	separators and proper padding and justification. 

	* Released 0.1.20

	* Fixed bug in @log which would reverse the inputcache list (a
	copy operation was missing).

	* Code cleanup. @config was changed to use page(). Better, since
	its output is always quite long.

	* Itpl is back as a dependency. I was having too many problems
	getting the parametric aliases to work reliably, and it's just
	easier to code weird string operations with it than playing %()s
	games. It's only ~6k, so I don't think it's too big a deal.

	* Found (and fixed) a very nasty bug with history. !lines weren't
	getting cached, and the out of sync caches would crash
	IPython. Fixed it by reorganizing the prefilter/handlers/logger
	division of labor a bit better. Bug fixed, cleaner structure.

2001-12-01  Fernando Perez  <fperez@colorado.edu>

	* Released 0.1.19

	* Added option -n to @hist to prevent line number printing. Much
	easier to copy/paste code this way.

	* Created global _il to hold the input list. Allows easy
	re-execution of blocks of code by slicing it (inspired by Janko's
	comment on 'macros').

	* Small fixes and doc updates.

	* Rewrote @history function (was @h). Renamed it to @hist, @h is
	much too fragile with automagic. Handles properly multi-line
	statements and takes parameters.

2001-11-30  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.18 released.

	* Fixed nasty namespace bug in initial module imports.

	* Added copyright/license notes to all code files (except
	DPyGetOpt). For the time being, LGPL. That could change.

	* Rewrote a much nicer README, updated INSTALL, cleaned up
	ipythonrc-* samples.

	* Overall code/documentation cleanup. Basically ready for
	release. Only remaining thing: licence decision (LGPL?).

	* Converted load_config to a class, ConfigLoader. Now recursion
	control is better organized. Doesn't include the same file twice.

2001-11-29  Fernando Perez  <fperez@colorado.edu>

	* Got input history working. Changed output history variables from
	_p to _o so that _i is for input and _o for output. Just cleaner
	convention.

	* Implemented parametric aliases. This pretty much allows the
	alias system to offer full-blown shell convenience, I think.

	* Version 0.1.17 released, 0.1.18 opened.

	* dot_ipython/ipythonrc (alias): added documentation.
	(xcolor): Fixed small bug (xcolors -> xcolor)

	* Changed the alias system. Now alias is a magic command to define
	aliases just like the shell. Rationale: the builtin magics should
	be there for things deeply connected to IPython's
	architecture. And this is a much lighter system for what I think
	is the really important feature: allowing users to define quickly
	magics that will do shell things for them, so they can customize
	IPython easily to match their work habits. If someone is really
	desperate to have another name for a builtin alias, they can
	always use __IP.magic_newname = __IP.magic_oldname. Hackish but
	works.

2001-11-28  Fernando Perez  <fperez@colorado.edu>

	* Changed @file so that it opens the source file at the proper
	line. Since it uses less, if your EDITOR environment is
	configured, typing v will immediately open your editor of choice
	right at the line where the object is defined. Not as quick as
	having a direct @edit command, but for all intents and purposes it
	works. And I don't have to worry about writing @edit to deal with
	all the editors, less does that.

	* Version 0.1.16 released, 0.1.17 opened.

	* Fixed some nasty bugs in the page/page_dumb combo that could
	crash IPython.

2001-11-27  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.15 released, 0.1.16 opened.

	* Finally got ? and ?? to work for undefined things: now it's
	possible to type {}.get? and get information about the get method
	of dicts, or os.path? even if only os is defined (so technically
	os.path isn't). Works at any level. For example, after import os,
	os?, os.path?, os.path.abspath? all work. This is great, took some
	work in _ofind.

	* Fixed more bugs with logging. The sanest way to do it was to add
	to @log a 'mode' parameter. Killed two in one shot (this mode
	option was a request of Janko's). I think it's finally clean
	(famous last words).

	* Added a page_dumb() pager which does a decent job of paging on
	screen, if better things (like less) aren't available. One less
	unix dependency (someday maybe somebody will port this to
	windows).

	* Fixed problem in magic_log: would lock of logging out if log
	creation failed (because it would still think it had succeeded).

	* Improved the page() function using curses to auto-detect screen
	size. Now it can make a much better decision on whether to print
	or page a string. Option screen_length was modified: a value 0
	means auto-detect, and that's the default now.

	* Version 0.1.14 released, 0.1.15 opened. I think this is ready to
	go out. I'll test it for a few days, then talk to Janko about
	licences and announce it.

	* Fixed the length of the auto-generated ---> prompt which appears
	for auto-parens and auto-quotes. Getting this right isn't trivial,
	with all the color escapes, different prompt types and optional
	separators. But it seems to be working in all the combinations.

2001-11-26  Fernando Perez  <fperez@colorado.edu>

	* Wrote a regexp filter to get option types from the option names
	string. This eliminates the need to manually keep two duplicate
	lists.

	* Removed the unneeded check_option_names. Now options are handled
	in a much saner manner and it's easy to visually check that things
	are ok.

	* Updated version numbers on all files I modified to carry a
	notice so Janko and Nathan have clear version markers.

	* Updated docstring for ultraTB with my changes. I should send
	this to Nathan.

	* Lots of small fixes. Ran everything through pychecker again.

	* Made loading of deep_reload an cmd line option. If it's not too
	kosher, now people can just disable it. With -nodeep_reload it's
	still available as dreload(), it just won't overwrite reload().

	* Moved many options to the no| form (-opt and -noopt
	accepted). Cleaner.

	* Changed magic_log so that if called with no parameters, it uses
	'rotate' mode. That way auto-generated logs aren't automatically
	over-written. For normal logs, now a backup is made if it exists
	(only 1 level of backups). A new 'backup' mode was added to the
	Logger class to support this. This was a request by Janko.

	* Added @logoff/@logon to stop/restart an active log.

	* Fixed a lot of bugs in log saving/replay. It was pretty
	broken. Now special lines (!@,/) appear properly in the command
	history after a log replay.

	* Tried and failed to implement full session saving via pickle. My
	idea was to pickle __main__.__dict__, but modules can't be
	pickled. This would be a better alternative to replaying logs, but
	seems quite tricky to get to work. Changed -session to be called
	-logplay, which more accurately reflects what it does. And if we
	ever get real session saving working, -session is now available.

	* Implemented color schemes for prompts also. As for tracebacks,
	currently only NoColor and Linux are supported. But now the
	infrastructure is in place, based on a generic ColorScheme
	class. So writing and activating new schemes both for the prompts
	and the tracebacks should be straightforward.

	* Version 0.1.13 released, 0.1.14 opened.

	* Changed handling of options for output cache. Now counter is
	hardwired starting at 1 and one specifies the maximum number of
	entries *in the outcache* (not the max prompt counter). This is
	much better, since many statements won't increase the cache
	count. It also eliminated some confusing options, now there's only
	one: cache_size.

	* Added 'alias' magic function and magic_alias option in the
	ipythonrc file. Now the user can easily define whatever names he
	wants for the magic functions without having to play weird
	namespace games. This gives IPython a real shell-like feel.

	* Fixed doc/?/?? for magics. Now all work, in all forms (explicit
	@ or not).

	This was one of the last remaining 'visible' bugs (that I know
	of). I think if I can clean up the session loading so it works
	100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
	about licensing).	

2001-11-25  Fernando Perez  <fperez@colorado.edu>

	* Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
	there's a cleaner distinction between what ? and ?? show.

	* Added screen_length option. Now the user can define his own
	screen size for page() operations.

	* Implemented magic shell-like functions with automatic code
	generation. Now adding another function is just a matter of adding
	an entry to a dict, and the function is dynamically generated at
	run-time. Python has some really cool features!

	* Renamed many options to cleanup conventions a little. Now all
	are lowercase, and only underscores where needed. Also in the code
	option name tables are clearer.

	* Changed prompts a little. Now input is 'In [n]:' instead of
	'In[n]:='. This allows it the numbers to be aligned with the
	Out[n] numbers, and removes usage of ':=' which doesn't exist in
	Python (it was a Mathematica thing). The '...' continuation prompt
	was also changed a little to align better.

	* Fixed bug when flushing output cache. Not all _p<n> variables
	exist, so their deletion needs to be wrapped in a try:

	* Figured out how to properly use inspect.formatargspec() (it
	requires the args preceded by *). So I removed all the code from
	_get_pdef in Magic, which was just replicating that.

	* Added test to prefilter to allow redefining magic function names
	as variables. This is ok, since the @ form is always available,
	but whe should allow the user to define a variable called 'ls' if
	he needs it.

	* Moved the ToDo information from README into a separate ToDo.

	* General code cleanup and small bugfixes. I think it's close to a
	state where it can be released, obviously with a big 'beta'
	warning on it.

	* Got the magic function split to work. Now all magics are defined
	in a separate class. It just organizes things a bit, and now
	Xemacs behaves nicer (it was choking on InteractiveShell b/c it
	was too long).

	* Changed @clear to @reset to avoid potential confusions with
	the shell command clear. Also renamed @cl to @clear, which does
	exactly what people expect it to from their shell experience.

	Added a check to the @reset command (since it's so
	destructive, it's probably a good idea to ask for confirmation).
	But now reset only works for full namespace resetting. Since the
	del keyword is already there for deleting a few specific
	variables, I don't see the point of having a redundant magic
	function for the same task.

2001-11-24  Fernando Perez  <fperez@colorado.edu>

	* Updated the builtin docs (esp. the ? ones).

	* Ran all the code through pychecker. Not terribly impressed with
	it: lots of spurious warnings and didn't really find anything of
	substance (just a few modules being imported and not used).

	* Implemented the new ultraTB functionality into IPython. New
	option: xcolors. This chooses color scheme. xmode now only selects
	between Plain and Verbose. Better orthogonality.

	* Large rewrite of ultraTB. Much cleaner now, with a separation of
	mode and color scheme for the exception handlers. Now it's
	possible to have the verbose traceback with no coloring.

2001-11-23  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.12 released, 0.1.13 opened.

	* Removed option to set auto-quote and auto-paren escapes by
	user. The chances of breaking valid syntax are just too high. If
	someone *really* wants, they can always dig into the code.

	* Made prompt separators configurable.

2001-11-22  Fernando Perez  <fperez@colorado.edu>

	* Small bugfixes in many places.

	* Removed the MyCompleter class from ipplib. It seemed redundant
	with the C-p,C-n history search functionality. Less code to
	maintain.

	* Moved all the original ipython.py code into ipythonlib.py. Right
	now it's just one big dump into a function called make_IPython, so
	no real modularity has been gained. But at least it makes the
	wrapper script tiny, and since ipythonlib is a module, it gets
	compiled and startup is much faster.

	This is a reasobably 'deep' change, so we should test it for a
	while without messing too much more with the code.

2001-11-21  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.11 released, 0.1.12 opened for further work.

	* Removed dependency on Itpl. It was only needed in one place. It
	would be nice if this became part of python, though. It makes life
	*a lot* easier in some cases.

	* Simplified the prefilter code a bit. Now all handlers are
	expected to explicitly return a value (at least a blank string).

	* Heavy edits in ipplib. Removed the help system altogether. Now
	obj?/?? is used for inspecting objects, a magic @doc prints
	docstrings, and full-blown Python help is accessed via the 'help'
	keyword. This cleans up a lot of code (less to maintain) and does
	the job. Since 'help' is now a standard Python component, might as
	well use it and remove duplicate functionality.

	Also removed the option to use ipplib as a standalone program. By
	now it's too dependent on other parts of IPython to function alone.

	* Fixed bug in genutils.pager. It would crash if the pager was
	exited immediately after opening (broken pipe).

	* Trimmed down the VerboseTB reporting a little. The header is
	much shorter now and the repeated exception arguments at the end
	have been removed. For interactive use the old header seemed a bit
	excessive.

	* Fixed small bug in output of @whos for variables with multi-word
	types (only first word was displayed).

2001-11-17  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.10 released, 0.1.11 opened for further work.

	* Modified dirs and friends. dirs now *returns* the stack (not
	prints), so one can manipulate it as a variable. Convenient to
	travel along many directories.

	* Fixed bug in magic_pdef: would only work with functions with
	arguments with default values.

2001-11-14  Fernando Perez  <fperez@colorado.edu>

	* Added the PhysicsInput stuff to dot_ipython so it ships as an
	example with IPython. Various other minor fixes and cleanups.

	* Version 0.1.9 released, 0.1.10 opened for further work.

	* Added sys.path to the list of directories searched in the
	execfile= option. It used to be the current directory and the
	user's IPYTHONDIR only.

2001-11-13  Fernando Perez  <fperez@colorado.edu>

	* Reinstated the raw_input/prefilter separation that Janko had
	initially. This gives a more convenient setup for extending the
	pre-processor from the outside: raw_input always gets a string,
	and prefilter has to process it. We can then redefine prefilter
	from the outside and implement extensions for special
	purposes.

	Today I got one for inputting PhysicalQuantity objects
	(from Scientific) without needing any function calls at
	all. Extremely convenient, and it's all done as a user-level
	extension (no IPython code was touched). Now instead of:
		a = PhysicalQuantity(4.2,'m/s**2')
	one can simply say
		a = 4.2 m/s**2
	or even
		a = 4.2 m/s^2
	
	I use this, but it's also a proof of concept: IPython really is
	fully user-extensible, even at the level of the parsing of the
	command line. It's not trivial, but it's perfectly doable.

	* Added 'add_flip' method to inclusion conflict resolver. Fixes
	the problem of modules being loaded in the inverse order in which
	they were defined in 

	* Version 0.1.8 released, 0.1.9 opened for further work.

	* Added magics pdef, source and file. They respectively show the
	definition line ('prototype' in C), source code and full python
	file for any callable object. The object inspector oinfo uses
	these to show the same information.

	* Version 0.1.7 released, 0.1.8 opened for further work.

	* Separated all the magic functions into a class called Magic. The
	InteractiveShell class was becoming too big for Xemacs to handle
	(de-indenting a line would lock it up for 10 seconds while it
	backtracked on the whole class!)

	FIXME: didn't work. It can be done, but right now namespaces are
	all messed up. Do it later (reverted it for now, so at least
	everything works as before).

	* Got the object introspection system (magic_oinfo) working! I
	think this is pretty much ready for release to Janko, so he can
	test it for a while and then announce it. Pretty much 100% of what
	I wanted for the 'phase 1' release is ready. Happy, tired.

2001-11-12  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.6 released, 0.1.7 opened for further work.

	* Fixed bug in printing: it used to test for truth before
	printing, so 0 wouldn't print. Now checks for None.

	* Fixed bug where auto-execs increase the prompt counter by 2 (b/c
	they have to call len(str(sys.ps1)) ). But the fix is ugly, it
	reaches by hand into the outputcache. Think of a better way to do
	this later.

	* Various small fixes thanks to Nathan's comments.

	* Changed magic_pprint to magic_Pprint. This way it doesn't
	collide with pprint() and the name is consistent with the command
	line option.

	* Changed prompt counter behavior to be fully like
	Mathematica's. That is, even input that doesn't return a result
	raises the prompt counter. The old behavior was kind of confusing
	(getting the same prompt number several times if the operation
	didn't return a result).

	* Fixed Nathan's last name in a couple of places (Gray, not Graham).

	* Fixed -Classic mode (wasn't working anymore).

	* Added colored prompts using Nathan's new code. Colors are
	currently hardwired, they can be user-configurable. For
	developers, they can be chosen in file ipythonlib.py, at the
	beginning of the CachedOutput class def.

2001-11-11  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.5 released, 0.1.6 opened for further work.

	* Changed magic_env to *return* the environment as a dict (not to
	print it). This way it prints, but it can also be processed.

	* Added Verbose exception reporting to interactive
	exceptions. Very nice, now even 1/0 at the prompt gives a verbose
	traceback. Had to make some changes to the ultraTB file. This is
	probably the last 'big' thing in my mental todo list.  This ties
	in with the next entry:

	* Changed -Xi and -Xf to a single -xmode option. Now all the user
	has to specify is Plain, Color or Verbose for all exception
	handling.

	* Removed ShellServices option. All this can really be done via
	the magic system. It's easier to extend, cleaner and has automatic
	namespace protection and documentation.

2001-11-09  Fernando Perez  <fperez@colorado.edu>

	* Fixed bug in output cache flushing (missing parameter to
	__init__). Other small bugs fixed (found using pychecker).

	* Version 0.1.4 opened for bugfixing.

2001-11-07  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.3 released, mainly because of the raw_input bug.

	* Fixed NASTY bug in raw_input: input line wasn't properly parsed
	and when testing for whether things were callable, a call could
	actually be made to certain functions. They would get called again
	once 'really' executed, with a resulting double call. A disaster
	in many cases (list.reverse() would never work!).

	* Removed prefilter() function, moved its code to raw_input (which
	after all was just a near-empty caller for prefilter). This saves
	a function call on every prompt, and simplifies the class a tiny bit.

	* Fix _ip to __ip name in magic example file.

	* Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
	work with non-gnu versions of tar.

2001-11-06  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.2. Just to keep track of the recent changes.

	* Fixed nasty bug in output prompt routine. It used to check 'if
	arg != None...'. Problem is, this fails if arg implements a
	special comparison (__cmp__) which disallows comparing to
	None. Found it when trying to use the PhysicalQuantity module from
	ScientificPython.

2001-11-05  Fernando Perez  <fperez@colorado.edu>

	* Also added dirs. Now the pushd/popd/dirs family functions
	basically like the shell, with the added convenience of going home
	when called with no args.

	* pushd/popd slightly modified to mimic shell behavior more
	closely.

	* Added env,pushd,popd from ShellServices as magic functions. I
	think the cleanest will be to port all desired functions from
	ShellServices as magics and remove ShellServices altogether. This
	will provide a single, clean way of adding functionality
	(shell-type or otherwise) to IP.

2001-11-04  Fernando Perez  <fperez@colorado.edu>

	* Added .ipython/ directory to sys.path. This way users can keep
	customizations there and access them via import.

2001-11-03  Fernando Perez  <fperez@colorado.edu>

	* Opened version 0.1.1 for new changes.

	* Changed version number to 0.1.0: first 'public' release, sent to
	Nathan and Janko.

	* Lots of small fixes and tweaks.

	* Minor changes to whos format. Now strings are shown, snipped if
	too long.

	* Changed ShellServices to work on __main__ so they show up in @who

	* Help also works with ? at the end of a line:
		?sin and sin?
	both produce the same effect. This is nice, as often I use the
	tab-complete to find the name of a method, but I used to then have
	to go to the beginning of the line to put a ? if I wanted more
	info. Now I can just add the ? and hit return. Convenient.

2001-11-02  Fernando Perez  <fperez@colorado.edu>

	* Python version check (>=2.1) added.

	* Added LazyPython documentation. At this point the docs are quite
	a mess. A cleanup is in order.

	* Auto-installer created. For some bizarre reason, the zipfiles
	module isn't working on my system. So I made a tar version
	(hopefully the command line options in various systems won't kill
	me).

	* Fixes to Struct in genutils. Now all dictionary-like methods are
	protected (reasonably).

	* Added pager function to genutils and changed ? to print usage
	note through it (it was too long).

	* Added the LazyPython functionality. Works great! I changed the
	auto-quote escape to ';', it's on home row and next to '. But
	both auto-quote and auto-paren (still /) escapes are command-line
	parameters.
	

2001-11-01  Fernando Perez  <fperez@colorado.edu>

	* Version changed to 0.0.7. Fairly large change: configuration now
	is all stored in a directory, by default .ipython. There, all
	config files have normal looking names (not .names)

	* Version 0.0.6 Released first to Lucas and Archie as a test
	run. Since it's the first 'semi-public' release, change version to
	> 0.0.6 for any changes now.

	* Stuff I had put in the ipplib.py changelog:
	
	Changes to InteractiveShell:
	
	- Made the usage message a parameter.
	
	- Require the name of the shell variable to be given. It's a bit
	of a hack, but allows the name 'shell' not to be hardwire in the
	magic (@) handler, which is problematic b/c it requires
	polluting the global namespace with 'shell'. This in turn is
	fragile: if a user redefines a variable called shell, things
	break.

	- magic @: all functions available through @ need to be defined
	as magic_<name>, even though they can be called simply as
	@<name>. This allows the special command @magic to gather
	information automatically about all existing magic functions,
	even if they are run-time user extensions, by parsing the shell
	instance __dict__ looking for special magic_ names.

	- mainloop: added *two* local namespace parameters. This allows
	the class to differentiate between parameters which were there
	before and after command line initialization was processed. This
	way, later @who can show things loaded at startup by the
	user. This trick was necessary to make session saving/reloading
	really work: ideally after saving/exiting/reloading a session,
	*everythin* should look the same, including the output of @who. I
	was only able to make this work with this double namespace
	trick.

	- added a header to the logfile which allows (almost) full
	session restoring.

	- prepend lines beginning with @ or !, with a and log
	them. Why?  !lines: may be useful to know what you did @lines:
	they may affect session state. So when restoring a session, at
	least inform the user of their presence. I couldn't quite get
	them to properly re-execute, but at least the user is warned.

	* Started ChangeLog.
