SF bug #1017864: ConfigParser now correctly handles default keys, processing them with `ConfigParser.optionxform` when supplied, consistent with the handling of config file entries and runtime-set options.

This commit is contained in:
David Goodger 2004-10-03 15:40:25 +00:00
parent bfe5684308
commit 68a1abdade
3 changed files with 24 additions and 7 deletions

View file

@ -202,10 +202,10 @@ class MissingSectionHeaderError(ParsingError):
class RawConfigParser:
def __init__(self, defaults=None):
self._sections = {}
if defaults is None:
self._defaults = {}
else:
self._defaults = defaults
self._defaults = {}
if defaults:
for key, value in defaults.items():
self._defaults[self.optionxform(key)] = value
def defaults(self):
return self._defaults
@ -511,8 +511,9 @@ class ConfigParser(RawConfigParser):
if section != DEFAULTSECT:
raise NoSectionError(section)
# Update with the entry specific variables
if vars is not None:
d.update(vars)
if vars:
for key, value in vars.items():
d[self.optionxform(key)] = value
option = self.optionxform(option)
try:
value = d[option]
@ -544,7 +545,8 @@ class ConfigParser(RawConfigParser):
raise NoSectionError(section)
# Update with the entry specific variables
if vars:
d.update(vars)
for key, value in vars.items():
d[self.optionxform(key)] = value
options = d.keys()
if "__name__" in options:
options.remove("__name__")