summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFacundo Batista <facundobatista@gmail.com>2008-02-23 12:46:10 +0000
committerFacundo Batista <facundobatista@gmail.com>2008-02-23 12:46:10 +0000
commitb12f0b581a6f268d0611c87012d1273aeca220b8 (patch)
tree15cd0ffb90086c018c9542aa516b988aff18bde1
parent1660933d23ed99393c2ea9bbe0204318936e3bbc (diff)
downloadcpython-git-b12f0b581a6f268d0611c87012d1273aeca220b8.tar.gz
Issue 1781. Now ConfigParser.add_section does not let you add a
DEFAULT section any more, because it duplicated sections with the rest of the machinery. Thanks Tim Lesher and Manuel Kaufmann.
-rw-r--r--Doc/library/configparser.rst5
-rw-r--r--Lib/ConfigParser.py6
-rw-r--r--Lib/test/test_cfgparser.py8
-rw-r--r--Misc/NEWS3
4 files changed, 19 insertions, 3 deletions
diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst
index ec3b0220ba..96c001fc7d 100644
--- a/Doc/library/configparser.rst
+++ b/Doc/library/configparser.rst
@@ -187,8 +187,9 @@ RawConfigParser Objects
.. method:: RawConfigParser.add_section(section)
Add a section named *section* to the instance. If a section by the given name
- already exists, :exc:`DuplicateSectionError` is raised.
-
+ already exists, :exc:`DuplicateSectionError` is raised. If the name
+ ``DEFAULT`` (or any of it's case-insensitive variants) is passed,
+ :exc:`ValueError` is raised.
.. method:: RawConfigParser.has_section(section)
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py
index 131d697467..65c6ae2ae3 100644
--- a/Lib/ConfigParser.py
+++ b/Lib/ConfigParser.py
@@ -235,8 +235,12 @@ class RawConfigParser:
"""Create a new section in the configuration.
Raise DuplicateSectionError if a section by the specified name
- already exists.
+ already exists. Raise ValueError if name is DEFAULT or any of it's
+ case-insensitive variants.
"""
+ if section.lower() == "default":
+ raise ValueError, 'Invalid section name: %s' % section
+
if section in self._sections:
raise DuplicateSectionError(section)
self._sections[section] = self._dict()
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index c4df74185e..a8b5d7c389 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -446,6 +446,14 @@ class SafeConfigParserTestCase(ConfigParserTestCase):
self.assertRaises(TypeError, cf.set, "sect", "option2", 1.0)
self.assertRaises(TypeError, cf.set, "sect", "option2", object())
+ def test_add_section_default_1(self):
+ cf = self.newconfig()
+ self.assertRaises(ValueError, cf.add_section, "default")
+
+ def test_add_section_default_2(self):
+ cf = self.newconfig()
+ self.assertRaises(ValueError, cf.add_section, "DEFAULT")
+
class SortedTestCase(RawConfigParserTestCase):
def newconfig(self, defaults=None):
self.cf = self.config_class(defaults=defaults, dict_type=SortedDict)
diff --git a/Misc/NEWS b/Misc/NEWS
index a33bf714c4..89f4c49937 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -434,6 +434,9 @@ Core and builtins
Library
-------
+- Issue 1781: ConfigParser now does not let you add the "default" section
+ (ignore-case)
+
- Removed uses of dict.has_key() from distutils, and uses of
callable() from copy_reg.py, so the interpreter now starts up
without warnings when '-3' is given. More work like this needs to