[Python-3000] PATCH: library reference docs for PEP 3101

Eric Smith eric+python-dev at trueblade.com
Fri Aug 31 11:35:22 CEST 2007


Talin wrote:
> I just posted on the tracker a patch which adds extensive documentation 
> for PEP 3101 to the Python Library Reference. This includes:
> 
>    str.format()
>    format()
>    __format__
>    Formatter
>    format string syntax
>    format specification mini-language
> 
> http://bugs.python.org/issue1068
> 
> (Eric, my description of the Formatter overloaded methods may not match 
> your latest revisions. Feel free to point out any errors.)

This is awesome!  Thanks.

The only 2 differences are:

- in the implementation for float formatting, a type of '' is the same 
as 'g'.  I think the PEP originally had the wording it does so that 
float(1.0, '') would match str(1.0).  This case now matches, because of 
the change that says zero length format_spec's are the same as str(). 
However, if there's anything else in the format_spec (still with no 
type), it doesn't match what str() would do.
 >>> str(1.0)
'1.0'
 >>> format(1.0)
'1.0'
 >>> format(1.0, "-")
'1'
 >>> format(1.0, "g")
'1'
Actually, str() doesn't add a decimal for exponential notation:
 >>> str(1e100)
'1e+100'

I'd like to see the docs just say that an empty type is the same as 'g', 
but I'm not sure of the use case for what the documentation currently says.


- I changed Formatter.get_field to something like:

    .. method:: get_field(field_name, args, kwargs)

       Given *field_name* as returned by :meth:`parse` (see above),
       convert it to an object to be formatted.  Returns a tuple (obj,
       used_key).  The default version takes strings of the form
       defined in :pep:`3101`, such as "0[name]" or "label.title".
       *args* and *kwargs* are as passed in to :meth:`vformat`.  The
       return value *used_key* has the same meaning as the *key*
       parameter to :meth:`get_value`.



More information about the Python-3000 mailing list