[Python-Dev] transitioning from % to {} formatting

James Y Knight foom at fuhm.net
Fri Oct 2 01:13:28 CEST 2009

On Oct 1, 2009, at 6:19 PM, Steven Bethard wrote:
> I see how this could allow a user to supply a {}-format string to an
> API that accepts only %-format strings. But I still don't see the
> transition strategy for the API itself. That is, how does the %-format
> API use this to eventually switch to {}-format strings? Could someone
> please lay it out for me, step by step, showing what happens in each
> version?

Here's what I said in my first message, suggesting this change.  
Copy&pasted below:

I wrote:
> 1) introduce the above feature, and recommend in docs that people  
> only ever use new-style format strings, wrapping the string in  
> newstyle_formatstr() when necessary for passing to an API which uses  
> % internally.
> 2) A long time later...deprecate str.__mod__; don't deprecate  
> newstyle_formatstr.__mod__.
> 3) A while after that (maybe), remove str.__mod__ and replace all  
> calls in Python to % (used as a formatting operator) with .format()  
> so that the default is to use newstyle format strings for all APIs  
> from then on.

So do (1) in 3.2. Then do (2) in 3.4, and (3) in 3.6. I skipped two  
versions each time because of how widely this API is used, and the  
likely pain that doing the transition quickly would cause. But I guess  
you *could* do it in one version each step.


More information about the Python-Dev mailing list