[issue27307] string.Formatter does not support key/attribute access on unnumbered fields
Tommy Beadle
report at bugs.python.org
Mon Jun 13 11:32:42 EDT 2016
New submission from Tommy Beadle:
Support for unnumbered fields in string.Formatter.format was added in http://bugs.python.org/issue13598, however, it does not support accessing an index or attribute of an unnumbered field like str.format does. Instead, it raises an unhelpful "KeyError: ''":
In [1]: import string
In [2]: fmt = string.Formatter()
In [3]: fmt.format('{[0]}', ['a', 'b'])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-3-a923004fe8e8> in <module>()
----> 1 fmt.format('{[0]}', ['a', 'b'])
/usr/lib64/python2.7/string.pyc in format(*args, **kwargs)
557 raise TypeError("format() missing 1 required positional "
558 "argument: 'format_string'")
--> 559 return self.vformat(format_string, args, kwargs)
560
561 def vformat(self, format_string, args, kwargs):
/usr/lib64/python2.7/string.pyc in vformat(self, format_string, args, kwargs)
561 def vformat(self, format_string, args, kwargs):
562 used_args = set()
--> 563 result = self._vformat(format_string, args, kwargs, used_args, 2)
564 self.check_unused_args(used_args, args, kwargs)
565 return result
/usr/lib64/python2.7/string.pyc in _vformat(self, format_string, args, kwargs, used_args, recursion_depth)
583 # given the field_name, find the object it references
584 # and the argument it came from
--> 585 obj, arg_used = self.get_field(field_name, args, kwargs)
586 used_args.add(arg_used)
587
/usr/lib64/python2.7/string.pyc in get_field(self, field_name, args, kwargs)
644 first, rest = field_name._formatter_field_name_split()
645
--> 646 obj = self.get_value(first, args, kwargs)
647
648 # loop through the rest of the field_name, doing
/usr/lib64/python2.7/string.pyc in get_value(self, key, args, kwargs)
603 return args[key]
604 else:
--> 605 return kwargs[key]
606
607
KeyError: ''
The attached patch adds this functionality.
aronancher asked in http://bugs.python.org/issue13598#msg218114 if the original patch was going to make it in to python 2.7. Perhaps that could get a look?
----------
components: Library (Lib)
messages: 268452
nosy: tbeadle
priority: normal
severity: normal
status: open
title: string.Formatter does not support key/attribute access on unnumbered fields
type: behavior
versions: Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue27307>
_______________________________________
More information about the Python-bugs-list
mailing list