[Gustavo Niemeyer] > Patch #549037 implements an interesting feature: it allows one to have > configuration files without headers. I'd like to know what's your > opinion about this issue, so that we can either forget the issue or > implement the functionality, closing that bug. [Tim Peters] > -0. Complicates the code and the docs and the mental model to save what, 3 > measly characters of typing (e.g., "[x]")? It also saves me to explain to the users of my program why they _have_ to start each configuration file with a line containing "[Options]", even if there can't be anything other than options in this file. (Making them type "[x]" instead of "[Options]" is even harder <.5 wink>). Unfortunately I cannot easily supply the section line when parsing the config file, even if I use ConfigParser.readfp(); the "obvious solution" prefix = cStringIO.StringIO("[Options]\n") cfp = ConfigParser.ConfigParser() cfp.readfp(prefix, filename) cfp.read(filename) doesn't work because the ConfigParser object expects a new section header for each read*() call. A generator that encapsulates the file and supplies an initial section header doesn't work either because the ConfigParser uses the readline() method; it doesn't iterate over the file. Subclassing the ConfigParser class doesn't help much because the _read() method does most of the relevant work and at the same time requires the section header line. So this would basically mean I had to copy that method (~60 lines) and tweak it to handle the case of missing section headers. [I had tried this before I submitted the patch.] [Gustavo Niemeyer, in a preceding mail] > The patch includes a new parameter in read functions, stating > what's the first section name. It means that we could have other > sections after the first unheaded section. IMO, that situation should > still be considered an error. Not necessarily an error; I was thinking of a configuration file like spam = available frob = required # ... more general options [Holidays] frob = optional # ... more options for a special case # etc. where labelled, optional sections may follow the (usually unlabelled) main configuration section. If the caller doesn't want this, he can easily detect this situation (checking cfp.sections()) and reject/handle it. Detlef
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4