New submission from Phil Kang <keepyourho...@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 <rep...@bugs.python.org> <https://bugs.python.org/issue35838> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com