[Python-ideas] [Python-Dev] User conversions in custom string.Formatter

Andrew Svetlov andrew.svetlov at gmail.com
Wed Mar 16 01:41:39 CET 2011


Well, let's discuss in python-ideas.

I mean my custom formatter like:

class Formatter(string.Formatter):
    def convert_field(self, value, conversion):
        if 'q' == conversion:
            return qname(value)
        elif 't' == conversion:
            return format_datetime(value)
        else:
            return super(Formatter, self).convert_field(value, conversion)

I can use it like:

s = "{0!q}, {1!t}".format(a, b)

!q and !t are my extensions to formatter conversions. It's good enough
but I prefer to see

s = "{0!qname}, {1!time}".format(a, b)

or something like that. It cannot break any existing rule (you still
can use "{0!qname:<20}" for example) but you can
use more readable names for converters.

There are only changed file is Objects/stringlib/string_format.h as I
can see (I don't count documentation and unitests).
On Wed, Mar 16, 2011 at 2:25 AM, Eric Smith <eric at trueblade.com> wrote:
> On 03/15/2011 08:07 PM, Andrew Svetlov wrote:
>>
>> As PEP 3101 http://www.python.org/dev/peps/pep-3101/ says (and current
>> Python does) user can specify conversions like "{0!s}".
>> In custom formatters (derived from string.Formatter) he can override
>> convert_field method to add custom conversions.
>>
>> I experimented with that last month and found it very convenient.
>>>
>>> From my perspective custom conversions are very close to 'filters'
>>
>> from html template engines (jinja2, mako, django etc).
>> While I like to see custom conversions simple and easy I don't wan't
>> to bring 'cascading' and 'parametrization' to standard formatting.
>>
>> But why don't relax spec a bit and allow to use any word (with
>> 'identifier' semantix, I mean str.isidentifier()) as conversion name?
>> Proposed update doesn't make any backward incompatibility (both python
>> and public C API are not changed), it's clean and obvious.
>> And it's very funny to use words instead single characters for custom
>> user-specific conversions.
>>
>> What do you think?
>
> This should be in python-ideas, but I don't know if Andrew is subscribed, so
> I'll reply here until it gets out of control.
>
> Andrew: Could you give a code sample of what you'd like to see?
>
> Eric.
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/andrew.svetlov%40gmail.com
>



More information about the Python-ideas mailing list