[issue35838] ConfigParser calls optionxform twice when assigning dict
Phil Kang
report at bugs.python.org
Sun Jan 27 17:27:03 EST 2019
New submission from Phil Kang <keepyourhonor at gmail.com>:
ConfigParser calls ConfigParser.optionxform twice per each key when assigning a dictionary to a section.
The following code:
ini = configparser.ConfigParser()
ini.optionxform = lambda x: '(' + x + ')'
# Bugged
ini['section A'] = {'key 1': 'value 1', 'key 2': 'value 2'}
# Not bugged
ini.add_section('section B')
ini['section B']['key 3'] = 'value 3'
ini['section B']['key 4'] = 'value 4'
inifile = io.StringIO()
ini.write(inifile)
print(inifile.getvalue())
...results in an INI file that looks like:
[section A]
((key 1)) = value 1
((key 2)) = value 2
[section B]
(key 3) = value 3
(key 4) = value 4
Here, optionxform has been called twice on key 1 and key 2, resulting in the double parentheses.
This also breaks conventional mapping access on the ConfigParser:
print(ini['section A']['key 1']) # Raises KeyError('key 1')
print(ini['section A']['(key 1)']) # OK
# Raises ValueError: too many values to unpack (expected 2)
for key, value in ini['section A']:
print(key + ', ' + value)
----------
components: Library (Lib)
messages: 334439
nosy: Phil Kang
priority: normal
severity: normal
status: open
title: ConfigParser calls optionxform twice when assigning dict
type: behavior
versions: Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue35838>
_______________________________________
More information about the Python-bugs-list
mailing list