[Python-Dev] ConfigParser mangles keys with special chars
Fred Drake
fred at fdrake.net
Sat Apr 26 17:32:18 CEST 2014
More information about the Python-Dev mailing list
Sat Apr 26 17:32:18 CEST 2014
- Previous message: [Python-Dev] ConfigParser mangles keys with special chars
- Next message: [Python-Dev] Help with changes in stack from 2.7 to 3.x
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Apr 26, 2014 at 7:23 AM, Steven D'Aprano <steve at pearwood.info> wrote: > But the entry in question wasn't a line, it was a key=value pair in a > dict. Here's that line again: > > cp.read_dict({'DEFAULT': {';foo': 'bar'}}) > > or it could have been: > > cp['DEFAULT'][';foo'] = 'bar' > > Either way, if there's no way to escape comment characters, I think it > is a bug that you can insert illegal keys into the cp object in the > first place. Fair enough. I'm not trying to argue that it isn't a bug, but that risk of breaking currently-working applications with data they consider acceptable is high. Many use configparser for input only, and make no use of the serialization feature. Those applications can be broken by adding a constraint on the data that's allowed, regardless of what we think of their keys. Chaning this in an application for which it's safe (easier to know at the application level) is easy enough: import configparser import re class ProtectionistParser(configparser.RawConfigParser): _rx = re.compile(r"[a-z]([-a-z]*[a-z])?$") # or whatever makes sense for your app def optionxform(self, opt): if self._rx.match(opt) is None: raise ValueError("don't like this: %r" % opt) return opt Maybe the "strict" mode is considered new enough that this isn't as significant a risk, and it could be allowed when that's enabled; I'm sure Ćukasz will have a carefully considered opinion (and I'll defer to him in the end). -Fred -- Fred L. Drake, Jr. <fred at fdrake.net> "A storm broke loose in my mind." --Albert Einstein
- Previous message: [Python-Dev] ConfigParser mangles keys with special chars
- Next message: [Python-Dev] Help with changes in stack from 2.7 to 3.x
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list