Mercurial > cpython-lru_cache-weakref
diff Lib/ConfigParser.py @ 13521:4dbc75c189bc legacy-trunk
Give ConfigParser the capability to set as well as read options, and to write
a representation of the configuration state in .ini format that can be read
back in by a future read() call. Thus this class is now a back end
for .ini editors as well as parsers.
This patch is complete and tested, but exposes a bug in the ConfigParser
implementation which I have not yet fixed. Because case information is
discarded during parsing, the output of write() has its case smashed.
I wrote this for a SourceForge interface script called forgetool.
Documentation for the new entry points included.
| author | Eric S. Raymond <esr@thyrsus.com> |
|---|---|
| date | Mon, 10 Jul 2000 18:11:00 +0000 |
| parents | 34d2b50eff2e |
| children | 39f54b9a7f9c |
line wrap: on
line diff
--- a/Lib/ConfigParser.py Mon Jul 10 17:25:37 2000 +0000 +++ b/Lib/ConfigParser.py Mon Jul 10 18:11:00 2000 +0000 @@ -286,6 +286,42 @@ def optionxform(self, optionstr): return string.lower(optionstr) + def has_option(self, section, option): + """Check for the existence of a given option in a given section.""" + if not section or section == "DEFAULT": + return self.__defaults.has_key(option) + elif not self.has_section(section): + return 0 + else: + return self.__sections[section].has_key(option) + + def set(self, section, option, value): + """Set an option.""" + if not section or section == "DEFAULT": + sectdict = self.__defaults + else: + try: + sectdict = self.__sections[section] + except KeyError: + raise NoSectionError(section) + sectdict[option] = value + + def write(self, fp): + """Write an .ini-format representation of the configuration state.""" + if self.__defaults: + fp.write("[DEFAULT]\n") + for key in self.__defaults.keys(): + fp.write(key + " = " + self.__defaults[key] + "\n") + fp.write("\n") + for section in self.sections(): + fp.write("[" + section + "]\n") + sectdict = self.__sections[section] + for key in sectdict.keys(): + if key == "__name__": + continue + fp.write(key + " = " + str(sectdict[key]) + "\n") + fp.write("\n") + # # Regular expressions for parsing section headers and options. Note a # slight semantic change from the previous version, because of the use
