Message268452
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? |
|
Date |
User |
Action |
Args |
2016-06-13 15:32:42 | tbeadle | set | recipients:
+ tbeadle |
2016-06-13 15:32:42 | tbeadle | set | messageid: <1465831962.68.0.949862526307.issue27307@psf.upfronthosting.co.za> |
2016-06-13 15:32:42 | tbeadle | link | issue27307 messages |
2016-06-13 15:32:41 | tbeadle | create | |
|