[IPython-dev] I need feedback: new escape for @magics?
Fernando Perez
Fernando.Perez at colorado.edu
Wed Sep 29 03:01:00 EDT 2004
Hi all,
while I'm almost ready to release ipython 0.6.4, I will have to wait a bit
before starting the 'big cleanup' (yes, it's finally coming :) because I need
to address the issue of @ being part of python's syntax as of python 2.4.
This means that I'll release 0.6.4 with @, and once I'm done with changing
this I'll release 0.6.5, and _then_ I can start overhauling the internals. I
don't want to delay 0.6.4 on this issue because it contains important
matplotlib-related fixes, and the @ change will be time-consuming.
For those of you who don't read python-dev or comp.lang.python, a
micro-summary is: Guido introduced a new syntax into the language for
function decorators, using the @ character:
@classmethod
def foo():
...
is now valid python syntax. This PEP discusses the topic in detail:
http://www.python.org/peps/pep-0318.html
Guido was quite gracious in taking my input into account, but ultimately the
decision was made to use the @ character for decorators, so IPython must adapt
by changing the @magic escape. I'd like to solicit feedback on what to use; I
obviously want to make this change ONLY ONCE, since it's perfectly wasted time
in my book.
My current candidate is '/', which somebody (can't remember who or where)
suggested. I like it because it's a binary operator, so
/magic foo bar
can never be valid python syntax as a first line (magics can only occur on
single lines, not on continuation lines). This makes it pretty future-proof.
It's also an easy to type character, and guaranteed to exist on all
international keyboards (since it's the division operator).
Currently ipython uses / as an autocall escape, but that's a minor and obscure
enough use that I'm willing to sacrifice it. I'll either remove the feature
altogether or (if someone complains) reassign it to some other escape.
So I'd like to hear from all of you on suggestions on this. Even a simple +1
vote is welcome, so at least I know that you agree. If you disagree, please
take the time to suggest an alternative, along with a short justification for
it. Also, please comment on whether you are OK with removing explicitly
escaped autocalling or if you want me to keep the feature, assigning it to a
different escape.
Thanks in advance to all.
Best,
Fernando.
More information about the IPython-dev
mailing list