diff options
author | Łukasz Langa <lukasz@langa.pl> | 2010-11-20 16:15:37 (GMT) |
---|---|---|
committer | Łukasz Langa <lukasz@langa.pl> | 2010-11-20 16:15:37 (GMT) |
commit | c264c098d03fb48e42ca58cd9888f6e35fba7d1a (patch) | |
tree | 50df0b67ba47cf48f645fd3521c8fd56929dc3de /Lib/configparser.py | |
parent | b357fb7bed55be24eba936f7ef9a13e964da89dc (diff) | |
download | cpython-c264c098d03fb48e42ca58cd9888f6e35fba7d1a.zip cpython-c264c098d03fb48e42ca58cd9888f6e35fba7d1a.tar.gz cpython-c264c098d03fb48e42ca58cd9888f6e35fba7d1a.tar.bz2 |
configparser: the name of the DEFAULT section is now customizable
Diffstat (limited to 'Lib/configparser.py')
-rw-r--r-- | Lib/configparser.py | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/Lib/configparser.py b/Lib/configparser.py index 9cbff70..03f98a6 100644 --- a/Lib/configparser.py +++ b/Lib/configparser.py @@ -406,12 +406,13 @@ class RawConfigParser(MutableMapping): def __init__(self, defaults=None, dict_type=_default_dict, allow_no_value=False, *, delimiters=('=', ':'), comment_prefixes=_COMPATIBLE, strict=False, - empty_lines_in_values=True): + empty_lines_in_values=True, + default_section=DEFAULTSECT): self._dict = dict_type self._sections = self._dict() self._defaults = self._dict() self._proxies = self._dict() - self._proxies[DEFAULTSECT] = SectionProxy(self, DEFAULTSECT) + self._proxies[default_section] = SectionProxy(self, default_section) if defaults: for key, value in defaults.items(): self._defaults[self.optionxform(key)] = value @@ -435,6 +436,7 @@ class RawConfigParser(MutableMapping): self._strict = strict self._allow_no_value = allow_no_value self._empty_lines_in_values = empty_lines_in_values + self._default_section=default_section def defaults(self): return self._defaults @@ -448,10 +450,9 @@ class RawConfigParser(MutableMapping): """Create a new section in the configuration. Raise DuplicateSectionError if a section by the specified name - already exists. Raise ValueError if name is DEFAULT or any of it's - case-insensitive variants. + already exists. Raise ValueError if name is DEFAULT. """ - if section.upper() == DEFAULTSECT: + if section == self._default_section: raise ValueError('Invalid section name: %s' % section) if section in self._sections: @@ -587,7 +588,7 @@ class RawConfigParser(MutableMapping): try: d2 = self._sections[section] except KeyError: - if section != DEFAULTSECT: + if section != self._default_section: raise NoSectionError(section) d2 = self._dict() d = self._defaults.copy() @@ -632,7 +633,7 @@ class RawConfigParser(MutableMapping): def has_option(self, section, option): """Check for the existence of a given option in a given section.""" - if not section or section == DEFAULTSECT: + if not section or section == self._default_section: option = self.optionxform(option) return option in self._defaults elif section not in self._sections: @@ -644,7 +645,7 @@ class RawConfigParser(MutableMapping): def set(self, section, option, value=None): """Set an option.""" - if not section or section == DEFAULTSECT: + if not section or section == self._default_section: sectdict = self._defaults else: try: @@ -664,7 +665,8 @@ class RawConfigParser(MutableMapping): else: d = self._delimiters[0] if self._defaults: - self._write_section(fp, DEFAULTSECT, self._defaults.items(), d) + self._write_section(fp, self._default_section, + self._defaults.items(), d) for section in self._sections: self._write_section(fp, section, self._sections[section].items(), d) @@ -684,7 +686,7 @@ class RawConfigParser(MutableMapping): def remove_option(self, section, option): """Remove an option.""" - if not section or section == DEFAULTSECT: + if not section or section == self._default_section: sectdict = self._defaults else: try: @@ -706,7 +708,7 @@ class RawConfigParser(MutableMapping): return existed def __getitem__(self, key): - if key != DEFAULTSECT and not self.has_section(key): + if key != self._default_section and not self.has_section(key): raise KeyError(key) return self._proxies[key] @@ -720,21 +722,21 @@ class RawConfigParser(MutableMapping): self.read_dict({key: value}) def __delitem__(self, key): - if key == DEFAULTSECT: + if key == self._default_section: raise ValueError("Cannot remove the default section.") if not self.has_section(key): raise KeyError(key) self.remove_section(key) def __contains__(self, key): - return key == DEFAULTSECT or self.has_section(key) + return key == self._default_section or self.has_section(key) def __len__(self): return len(self._sections) + 1 # the default section def __iter__(self): # XXX does it break when underlying container state changed? - return itertools.chain((DEFAULTSECT,), self._sections.keys()) + return itertools.chain((self._default_section,), self._sections.keys()) def _read(self, fp, fpname): """Parse a sectioned configuration file. @@ -806,7 +808,7 @@ class RawConfigParser(MutableMapping): lineno) cursect = self._sections[sectname] elements_added.add(sectname) - elif sectname == DEFAULTSECT: + elif sectname == self._default_section: cursect = self._defaults else: cursect = self._dict() @@ -877,7 +879,7 @@ class RawConfigParser(MutableMapping): try: d.update(self._sections[section]) except KeyError: - if section != DEFAULTSECT: + if section != self._default_section: raise NoSectionError(section) # Update with the entry specific variables if vars: @@ -999,7 +1001,7 @@ class ConfigParser(RawConfigParser): try: d.update(self._sections[section]) except KeyError: - if section != DEFAULTSECT: + if section != self._default_section: raise NoSectionError(section) # Update with the entry specific variables if vars: |