If you assign a ConfigParser section back to the parent ConfigParser object (say after updating the section), the section is emptied. (I realise now that you don't need to assign the section back to the parent as it's a proxy for the section in the parent already - but still it does not behave as you would expect): code: from configparser import ConfigParser config = ConfigParser() config['test'] = {'key': 'value'} section = config['test'] section['key'] = 'different' print("before: config['test'] is %s" % dict(config['test'])) config['test'] = section print("after: config['test'] is %s" % dict(config['test'])) # the section is now printed as {}
PR 4607 doesn't look a correct solution to me. I don't know a precedence of calling deepcopy() for a value in __setitem__(). deepcopy() is too heavy, calling it can slow down normal cases. Using deepcopy likely means a bad design.