mirror of
https://github.com/python/cpython
synced 2024-09-04 15:56:13 +00:00
bpo-23835: Enforce that configparser defaults are strings (#2558)
* Enforce that configparser defaults are strings * Update test_configparser.py
This commit is contained in:
parent
9a83f651f3
commit
44e6ad8734
|
@ -610,9 +610,6 @@ def __init__(self, defaults=None, dict_type=_default_dict,
|
|||
self._converters = ConverterMapping(self)
|
||||
self._proxies = self._dict()
|
||||
self._proxies[default_section] = SectionProxy(self, default_section)
|
||||
if defaults:
|
||||
for key, value in defaults.items():
|
||||
self._defaults[self.optionxform(key)] = value
|
||||
self._delimiters = tuple(delimiters)
|
||||
if delimiters == ('=', ':'):
|
||||
self._optcre = self.OPTCRE_NV if allow_no_value else self.OPTCRE
|
||||
|
@ -637,6 +634,8 @@ def __init__(self, defaults=None, dict_type=_default_dict,
|
|||
self._interpolation = Interpolation()
|
||||
if converters is not _UNSET:
|
||||
self._converters.update(converters)
|
||||
if defaults:
|
||||
self.read_dict({default_section: defaults})
|
||||
|
||||
def defaults(self):
|
||||
return self._defaults
|
||||
|
|
|
@ -855,6 +855,15 @@ def test_invalid_multiline_value(self):
|
|||
self.assertEqual(cf.get('DEFAULT', 'test'), 'test')
|
||||
self.assertEqual(cf['DEFAULT']['test'], 'test')
|
||||
|
||||
def test_defaults_keyword(self):
|
||||
# test that bpo-23835 is fixed
|
||||
cf = self.newconfig(defaults={1: 2.4})
|
||||
self.assertEqual(cf[self.default_section]['1'], '2.4')
|
||||
self.assertAlmostEqual(cf[self.default_section].getfloat('1'), 2.4)
|
||||
cf = self.newconfig(defaults={"A": 5.2})
|
||||
self.assertEqual(cf[self.default_section]['a'], '5.2')
|
||||
self.assertAlmostEqual(cf[self.default_section].getfloat('a'), 5.2)
|
||||
|
||||
|
||||
class StrictTestCase(BasicTestCase, unittest.TestCase):
|
||||
config_class = configparser.RawConfigParser
|
||||
|
|
Loading…
Reference in a new issue