On 2015-09-22 03:59:07 +0000, Andrew Barnert via Python-ideas said:

I'm not saying they have a right to expect/demand that Guido never change his mind about anything anywhere ever, just that maybe they get a little extra consideration on backward compatibility with their use of ? than with their use of ! or % (which have been in use as operators or parts of operators for decades).

I just wanted to quickly comment on what my original stance was regarding IPython's extensions to the base Python language.  This was where I stood as I made decisions when the project was basically just me, and over time we've mostly adopted this as project policy.

We fully acknowledge that IPython has to be a strict superset of the Python language, and we are  most emphatically *not* a fork of the lanugage intended to be incompatible. We've added some extensions by hijacking a few characters that are invalid in the base language for thigns we deemed to be useful while working interactively, but we always accept that, if the language moves in our direction, it's our job to pack up and move again to a new location.

In fact, that already happened once: before Python 2.4, our prefix for "magic functions" was the @ character, and when that was introduced as the decorator prefix, we had to scramble.  We carefully decided to pick %, knowing that an existing binary operator would be unlikely to be added also as a new unary prefix.

Now, accepting that as our reality doesn't mean that at least we don't want to *inform* you folks of what our uses are, so that at least you can consider them in your decision-making process.  Since in some cases, that means there's an established ~ 15 years of a community with a habit of using a particular syntax for something, that may be confused if things change.  So at least, we want to let you know.

Due precisely to these recent conversations (I had a very similar thread a few days ago with Nick about the ! operator, which we also use in all kinds of nasty ways), we have started documenting more precisely all these differences, so the question "where exactly does IPython go beyond Python" can be answered in one place.  You can see the progress here:


We hope this will be merged soon into our docs, and it should help you folks have a quick reference for these questions.

Finally, I want to emphasize that these things aren't really changing much anymore, this is all fairly stable.  All these choices have by now stabilized, we only introduced the @ -> % transition when python 2.4 forced us, and more recently we introduced the notion of having a double-%% marker for "cell magics", but that was ~ 4 years ago, and it didn't require a new character, only allowing it to be doubled.