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

Antoine Pitrou solipsis at pitrou.net
Thu Oct 1 12:48:44 CEST 2009


Vinay Sajip <vinay_sajip <at> yahoo.co.uk> writes:
> 
> This seems perhaps usable for a Formatter instantiation (infrequent) but a
> problem for the case where you want to convert format_str + args -> message
> (potentially frequent, and less readable).

Why is it a problem? I don't understand. It certainly is less pleasant to write
"{foo}".format or "{0} {1}".format than it is to write "{0} {1}" alone, but it's
still prettier and easier to remember than the special wrappers people are
proposing here.

> Another problem is that logging
> calls already use keyword arguments (extra, exc_info) and so backward
> compatibility might be compromised.

Then logging can just keep recognizing those special keyword arguments, and
forward the others to the formatting function.

> It also feels like passing a callable could
> encourage patterns of usage which restrict our flexibility for future changes:

Which future changes are you thinking about? AFAIK, there hasn't been a single
change in logging output formatting in years. Rejecting a present change on the
basis that it "restricts our flexibility for future changes" sounds like the
worst kind of argument to me :-)

> That's more flexible, to be sure, but more specialized formatting
> requirements are already catered for using e.g. the PercentMessage/BraceMessage
> approach.

Except that having to wrap format strings with "PercentMessage" or
"BraceMessage" is horrible. Python is not Java.

Regards

Antoine.




More information about the Python-Dev mailing list