[Python-checkins] cpython (3.3): configparser: preserve section order when using `__setitem__` (issue #16820)

lukasz.langa python-checkins at python.org
Tue Jan 1 22:37:56 CET 2013


http://hg.python.org/cpython/rev/f580342b63d8
changeset:   81205:f580342b63d8
branch:      3.3
parent:      81203:b8b5303ac96f
user:        Łukasz Langa <lukasz at langa.pl>
date:        Tue Jan 01 22:33:19 2013 +0100
summary:
  configparser: preserve section order when using `__setitem__` (issue #16820)

files:
  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
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -962,8 +962,8 @@
         # 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
--- a/Lib/test/test_configparser.py
+++ b/Lib/test/test_configparser.py
@@ -812,18 +812,22 @@
         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):

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list