mirror of
https://github.com/python/cpython.git
synced 2024-11-23 09:54:58 +08:00
configparser: preserve section order when using __setitem__
(issue #16820)
This commit is contained in:
parent
eb6aa5c525
commit
a821f82f66
@ -962,8 +962,8 @@ class RawConfigParser(MutableMapping):
|
||||
# no update method in configparser is atomic in this implementation.
|
||||
if key == self.default_section:
|
||||
self._defaults.clear()
|
||||
else:
|
||||
self.remove_section(key)
|
||||
elif key in self._sections:
|
||||
self._sections[key].clear()
|
||||
self.read_dict({key: value})
|
||||
|
||||
def __delitem__(self, key):
|
||||
|
@ -812,18 +812,22 @@ boolean {0[0]} NO
|
||||
self.assertEqual(cf['section1']['name1'], 'value1')
|
||||
self.assertEqual(cf['section2']['name2'], 'value2')
|
||||
self.assertEqual(cf['section3']['name3'], 'value3')
|
||||
self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
|
||||
cf['section2'] = {'name22': 'value22'}
|
||||
self.assertEqual(set(cf['section2'].keys()), {'name22', 'named'})
|
||||
self.assertEqual(cf['section2']['name22'], 'value22')
|
||||
self.assertNotIn('name2', cf['section2'])
|
||||
self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
|
||||
cf['section3'] = {}
|
||||
self.assertEqual(set(cf['section3'].keys()), {'named'})
|
||||
self.assertNotIn('name3', cf['section3'])
|
||||
self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
|
||||
cf[self.default_section] = {}
|
||||
self.assertEqual(set(cf[self.default_section].keys()), set())
|
||||
self.assertEqual(set(cf['section1'].keys()), {'name1'})
|
||||
self.assertEqual(set(cf['section2'].keys()), {'name22'})
|
||||
self.assertEqual(set(cf['section3'].keys()), set())
|
||||
self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
|
||||
|
||||
|
||||
class StrictTestCase(BasicTestCase):
|
||||
|
Loading…
Reference in New Issue
Block a user