[Python-checkins] r83931 - in python/branches/release27-maint: Lib/ConfigParser.py Lib/test/test_cfgparser.py Misc/NEWS
fred.drake
python-checkins at python.org
Tue Aug 10 15:09:54 CEST 2010
Author: fred.drake
Date: Tue Aug 10 15:09:54 2010
New Revision: 83931
Log:
Issue #9551: Do not raise TypeError when setting the value to None for
SafeConfigParser instances constructed with allow_no_value == True.
Modified:
python/branches/release27-maint/Lib/ConfigParser.py
python/branches/release27-maint/Lib/test/test_cfgparser.py
python/branches/release27-maint/Misc/NEWS
Modified: python/branches/release27-maint/Lib/ConfigParser.py
==============================================================================
--- python/branches/release27-maint/Lib/ConfigParser.py (original)
+++ python/branches/release27-maint/Lib/ConfigParser.py Tue Aug 10 15:09:54 2010
@@ -699,13 +699,13 @@
if self._optcre is self.OPTCRE or value:
if not isinstance(value, basestring):
raise TypeError("option values must be strings")
- # check for bad percent signs:
- # first, replace all "good" interpolations
- tmp_value = value.replace('%%', '')
- tmp_value = self._interpvar_re.sub('', tmp_value)
- # then, check if there's a lone percent sign left
- percent_index = tmp_value.find('%')
- if percent_index != -1:
- raise ValueError("invalid interpolation syntax in %r at "
- "position %d" % (value, percent_index))
+ if value is not None:
+ # check for bad percent signs:
+ # first, replace all "good" interpolations
+ tmp_value = value.replace('%%', '')
+ tmp_value = self._interpvar_re.sub('', tmp_value)
+ # then, check if there's a lone percent sign left
+ if '%' in tmp_value:
+ raise ValueError("invalid interpolation syntax in %r at "
+ "position %d" % (value, tmp_value.find('%')))
ConfigParser.set(self, section, option, value)
Modified: python/branches/release27-maint/Lib/test/test_cfgparser.py
==============================================================================
--- python/branches/release27-maint/Lib/test/test_cfgparser.py (original)
+++ python/branches/release27-maint/Lib/test/test_cfgparser.py Tue Aug 10 15:09:54 2010
@@ -357,6 +357,7 @@
class ConfigParserTestCase(TestCaseBase):
config_class = ConfigParser.ConfigParser
+ allow_no_value = True
def test_interpolation(self):
rawval = {
@@ -397,6 +398,7 @@
cf.set('non-string', 'dict', {'pi': 3.14159, '%(': 1,
'%(list)': '%(list)'})
cf.set('non-string', 'string_with_interpolation', '%(list)s')
+ cf.set('non-string', 'no-value')
self.assertEqual(cf.get('non-string', 'int', raw=True), 1)
self.assertRaises(TypeError, cf.get, 'non-string', 'int')
self.assertEqual(cf.get('non-string', 'list', raw=True),
@@ -409,6 +411,7 @@
raw=True), '%(list)s')
self.assertRaises(ValueError, cf.get, 'non-string',
'string_with_interpolation', raw=False)
+ self.assertEqual(cf.get('non-string', 'no-value'), None)
class MultilineValuesTestCase(TestCaseBase):
config_class = ConfigParser.ConfigParser
Modified: python/branches/release27-maint/Misc/NEWS
==============================================================================
--- python/branches/release27-maint/Misc/NEWS (original)
+++ python/branches/release27-maint/Misc/NEWS Tue Aug 10 15:09:54 2010
@@ -29,6 +29,9 @@
Library
-------
+- Issue #9551: Don't raise TypeError when setting the value to None for
+ SafeConfigParser instances constructed with allow_no_value == True.
+
- Issue #6915: Under Windows, os.listdir() didn't release the Global
Interpreter Lock around all system calls. Original patch by Ryan Kelly.
More information about the Python-checkins
mailing list