Hi, Does the SafeConfigParser class correctly detects lone percent signs? For example, shouldn't the string "100%%" be accepted as a valid value? Executing the code below should only print one error, instead it prints 2. (I've tested this with version 2.6.1 on Windows XP.)
It seems the "_badpercent_re" regular expression (an attribute of SafeConfigParser, with value "%[^%]|%$") is flawed: - The first alternative "%[^%]" fails with the string "%%_", because it matches "%_". - The second alternative "%$" fails with the string "%%", because it matches "%". The correct regular expression is "(?<!%)%(?!%)", which passes the previous tests. Thanks, -- from ConfigParser import * import re config = SafeConfigParser() # Expected: try: config.set('DEFAULT', 'test', '100%') except ValueError as error: print 'Error:', error # Unexpected: try: config.set('DEFAULT', 'test', '100%%') except ValueError as error: print 'Error:', error try: config._badpercent_re = re.compile('(?<!%)%(?!%)') config.set('DEFAULT', 'test', '100%%') except ValueError as error: print 'Error:', error -- http://mail.python.org/mailman/listinfo/python-list