From a821f82f66260601aa184d5788226dd0c64251a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Tue, 1 Jan 2013 22:33:19 +0100 Subject: configparser: preserve section order when using `__setitem__` (issue #16820) --- Lib/configparser.py | 4 ++-- Lib/test/test_configparser.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/configparser.py b/Lib/configparser.py index eac508e..c7bee6b 100644 --- a/Lib/configparser.py +++ b/Lib/configparser.py @@ -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): diff --git a/Lib/test/test_configparser.py b/Lib/test/test_configparser.py index 3823641..57e9df1 100644 --- a/Lib/test/test_configparser.py +++ b/Lib/test/test_configparser.py @@ -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): -- cgit v0.12