mirror of
https://github.com/python/cpython.git
synced 2025-08-27 20:25:18 +00:00
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:
parent
bfe5684308
commit
68a1abdade
3 changed files with 24 additions and 7 deletions
|
@ -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__")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue