[Python-Dev] ConfigParser patches (original) (raw)
David Goodger goodger at python.org
Fri Oct 1 16:24:39 CEST 2004
- Previous message: [Python-Dev] Proposing a sys.special_exceptions tuple
- Next message: [Python-Dev] ConfigParser patches
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I have patches up on SF for two ConfigParser bugs, which I'd like to check in ASAP. Any objections?
http://www.python.org/sf/1017864: Case sensitivity bug in ConfigParser
This is a simple bug relating to default values passed in as dictionaries, illustrated here:
import ConfigParser cp = ConfigParser.ConfigParser({"foo": "Bar"}) cp.get("DEFAULT", "Foo") 'Bar' cp = ConfigParser.ConfigParser({"FOO": "Bar"}) # <-- note CAPS cp.get("DEFAULT", "FOO") # same for "foo", "Foo", etc. Traceback (most recent call last): ... ConfigParser.NoOptionError: No option 'foo' in section: 'DEFAULT'
The patch applies ConfigParser.optionxform to keys of defaults when supplied, to be consistent with the handling of keys of config file entries and runtime-set options. A test patch is also included.
http://www.python.org/sf/997050: ConfigParser behavior change
This may be more controversial. In Python 2.3 and earlier, ConfigParser implicitly allowed non-string values to be set. http://python.org/sf/810843 asked for clarification, and in rev 1.65 an explicit type check was added that raises TypeError. The problem is that this breaks Docutils code, and I suspect it will break other code as well, which we won't hear about until after Python 2.4 final is released. Setting non-string values worked just fine for application-internal use, as long as interpolation is turned off (RawConfigParser is used or ConfigParser with "raw" parameter set) and config files aren't written.
A new SafeConfigParser class was added in Python 2.3:
New applications should prefer this version if they don't need to
be compatible with older versions of Python.
My solution is to add the new string-only restriction to the SafeConfigParser class, leave existing ConfigParser & RawConfigParser behavior alone, and document the conditions under which non-string values work. Code, doc, and test patches included.
What say you?
-- David Goodger <http://python.net/~goodger> -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 253 bytes Desc: OpenPGP digital signature Url : http://mail.python.org/pipermail/python-dev/attachments/20041001/d193ff4f/signature.pgp
- Previous message: [Python-Dev] Proposing a sys.special_exceptions tuple
- Next message: [Python-Dev] ConfigParser patches
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]