8000 Added overridable methods for handling duplicate sections and options… · python/cpython@cb351f4 · GitHub
[go: up one dir, main page]

Skip to content

Commit cb351f4

Browse files
committed
Added overridable methods for handling duplicate sections and options in ConfigParser.
1 parent 87de2fb commit cb351f4

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Lib/configparser.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -997,8 +997,7 @@ def _read(self, fp, fpname):
997997
sectname = mo.group('header')
998998
if sectname in self._sections:
999999
if self._strict and sectname in elements_added:
1000-
raise DuplicateSectionError(sectname, fpname,
1001-
lineno)
1000+
self._handle_duplicate_section(sectname, fpname, lineno)
10021001
cursect = self._sections[sectname]
10031002
elements_added.add(sectname)
10041003
elif sectname == self.default_section:
@@ -1023,8 +1022,7 @@ def _read(self, fp, fpname):
10231022
optname = self.optionxform(optname.rstrip())
10241023
if (self._strict and
10251024
(sectname, optname) in elements_added):
1026-
raise DuplicateOptionError(sectname, optname,
1027-
fpname, lineno)
1025+
self._handle_duplicate_option(sectname, optname, fpname, lineno)
10281026
elements_added.add((sectname, optname))
10291027
# This check is fine because the OPTCRE cannot
10301028
# match if it would set optval to None
@@ -1045,6 +1043,14 @@ def _read(self, fp, fpname):
10451043
if e:
10461044
raise e
10471045

1046+
def _handle_duplicate_option(self, sectname, optname, fpname, lineno):
1047+
"""Handle duplicate option definition. Override for custom behavior."""
1048+
raise DuplicateOptionError(sectname, optname, fpname, lineno)
1049+
1050+
def _handle_duplicate_section(self, sectname, fpname, lineno):
1051+
"""Handle duplicate section definition. Override for custom behavior."""
1052+
raise DuplicateSectionError(sectname, fpname, lineno)
1053+
10481054
def _join_multiline_values(self):
10491055
defaults = self.default_section, self._defaults
10501056
all_sections = itertools.chain((defaults,),

0 commit comments

Comments
 (0)
0