[Python-ideas] A Pythonic replacement for ConfigParser?

Larry Hastings larry at hastings.org
Sat Feb 24 02:28:12 CET 2007


Ah, yes, ConfigParser, the red-headed stepchild of Python 
serialization.  It seems ConfigParser has been around for a /very/ long 
time... and it shows.  In particular, its interface is pretty clunky 
when viewed with a modern Python programmer's eye.

I propose hacking up ConfigParser so it has a more Pythonic 
interface--specifically, so it acts more-or-less like a two-level nested 
dict.  I'll call the rewritten module "configdict" for now.

Here's the full list of what I have in mind:
    * a configdict object behaves like a dict, but can only contain 
configdict.section objects
    * a configdict.section object behaves like a dict, but can only 
contain strings
    * obviously, configdict and configdict.section would be new-style 
classes
    * write the initial implementation as a wrapper around RawConfigParser
    * "defaults" argument to constructor -> configdict.update() or 
configdict[section].update()
    * sections() -> configdict.iternames()
    * add_section(s) -> configdict[s] = section
    * has_section(s) -> s in configdict
    * readfp(fp) -> configdict.read(fp)
    * add a new function parse(s) which parses s as if it were a file 
(probably just wraps in stringio and calls read())
    * get(section, option) -> configdict[section][option] or 
configdict[section].get(option)
    * items(section) -> configdict[section].iteritems()
    * write(fp) -> unchanged
    * remove_option(section, option) -> del configdict[section][option]
    * remove_section(section) -> del configdict[section]
    * drop read(filenames), getint(), getboolean()
    * not sure how I feel about optionxform(), could keep it, could drop it
    * drop the spooky "magic interpolation feature" entirely (explicit, 
not implicit)

Worth pursuing?

Cheers,


/larry/



More information about the Python-ideas mailing list