bpo-38741: Definition of multiple ']' in header configparser (GH-17129)

Co-authored-by: Jason Killen <jason.killen@windsorcircle.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
This commit is contained in:
jsnklln 2021-07-13 09:54:06 -04:00 committed by GitHub
parent d4a5f0b659
commit 2924bb1a56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 1 deletions

View File

@ -563,7 +563,7 @@ class RawConfigParser(MutableMapping):
# Regular expressions for parsing section headers and options
_SECT_TMPL = r"""
\[ # [
(?P<header>[^]]+) # very permissive!
(?P<header>.+) # very permissive!
\] # ]
"""
_OPT_TMPL = r"""

View File

@ -79,6 +79,7 @@ class BasicTestCase(CfgParserTestCaseClass):
'Spacey Bar',
'Spacey Bar From The Beginning',
'Types',
'This One Has A ] In It',
]
if self.allow_no_value:
@ -130,6 +131,7 @@ class BasicTestCase(CfgParserTestCaseClass):
eq(cf.get('Types', 'float'), "0.44")
eq(cf.getboolean('Types', 'boolean'), False)
eq(cf.get('Types', '123'), 'strange but acceptable')
eq(cf.get('This One Has A ] In It', 'forks'), 'spoons')
if self.allow_no_value:
eq(cf.get('NoValue', 'option-without-value'), None)
@ -320,6 +322,8 @@ int {0[1]} 42
float {0[0]} 0.44
boolean {0[0]} NO
123 {0[1]} strange but acceptable
[This One Has A ] In It]
forks {0[0]} spoons
""".format(self.delimiters, self.comment_prefixes)
if self.allow_no_value:
config_string += (
@ -394,6 +398,9 @@ boolean {0[0]} NO
"boolean": False,
123: "strange but acceptable",
},
"This One Has A ] In It": {
"forks": "spoons"
},
}
if self.allow_no_value:
config.update({

View File

@ -0,0 +1 @@
:mod:`configparser`: using ']' inside a section header will no longer cut the section name short at the ']'