diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2000-07-10 18:11:00 (GMT) |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2000-07-10 18:11:00 (GMT) |
commit | 417c489defd33ceb4a3cb76efaf4975ee886221e (patch) | |
tree | 1a51f55578f47ba1f181b3b3f49ed81a7550ce06 /Lib | |
parent | 3e3175b5e7cfdb5ad1ba087a5f0b01e414cbad40 (diff) | |
download | cpython-417c489defd33ceb4a3cb76efaf4975ee886221e.zip cpython-417c489defd33ceb4a3cb76efaf4975ee886221e.tar.gz cpython-417c489defd33ceb4a3cb76efaf4975ee886221e.tar.bz2 |
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.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ConfigParser.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py index 38a85f4..878b790 100644 --- a/Lib/ConfigParser.py +++ b/Lib/ConfigParser.py @@ -286,6 +286,42 @@ class ConfigParser: 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 |