You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
string.Formatter does not support key/attribute access on unnumbered fields #71494
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=Nonecreated_at=<Date2016-06-13.15:32:42.624>labels= ['3.7', '3.8', 'type-bug', 'library', '3.9']
title='string.Formatter does not support key/attribute access on unnumbered fields'updated_at=<Date2020-08-07.15:32:47.479>user='https://bugs.python.org/tbeadle'
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'])
\---------------------------------------------------------------------------
```pytb
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: ''
It would be good if someone could convert this to a pull request and beef up the tests.
tekknolagi commented on Mar 19, 2020
tekknolagimannequin
Mannequin
More actions
I'll take a look at the patch and see if this solves my problem. If it does, I'll update my PR with tests.
tekknolagi commented on Mar 19, 2020
tekknolagimannequin
Mannequin
More actions
Looks like the patch solves my problem, so I am going to update my PR sometime today.
tekknolagi commented on Mar 19, 2020
tekknolagimannequin
Mannequin
More actions
Okay, well it doesn't provide the desired behavior of raising the error when switching back and forth between manual and auto numbering, so I am looking into that.
Activity
tbeadle commentedon Jun 13, 2016
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: ''":
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?
ericvsmith commentedon Mar 19, 2020
It would be good if someone could convert this to a pull request and beef up the tests.
tekknolagi commentedon Mar 19, 2020
I'll take a look at the patch and see if this solves my problem. If it does, I'll update my PR with tests.
tekknolagi commentedon Mar 19, 2020
Looks like the patch solves my problem, so I am going to update my PR sometime today.
tekknolagi commentedon Mar 19, 2020
Okay, well it doesn't provide the desired behavior of raising the error when switching back and forth between manual and auto numbering, so I am looking into that.
gh-71494: string.Formatter: support keys/attributes in unnumbered fie…
encukou commentedon Jan 31, 2025
Fixed by: #21767
pythongh-71494: string.Formatter: support keys/attributes in unnumber…