summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-07-13 14:35:30 (GMT)
committerGitHub <noreply@github.com>2021-07-13 14:35:30 (GMT)
commit1cc6769e4146951d47528a97e56ba1e8e9ee7fc1 (patch)
tree89bd377749be6a106d76dae5d3ed27b95e55a1fd
parentf514addfbc637a42549ddc422b35b6caad2a4363 (diff)
downloadcpython-1cc6769e4146951d47528a97e56ba1e8e9ee7fc1.zip
cpython-1cc6769e4146951d47528a97e56ba1e8e9ee7fc1.tar.gz
cpython-1cc6769e4146951d47528a97e56ba1e8e9ee7fc1.tar.bz2
bpo-38741: Definition of multiple ']' in header configparser (GH-17129) (#27110)
Co-authored-by: Jason Killen <jason.killen@windsorcircle.com> Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> (cherry picked from commit 2924bb1a566977efd45f335d6a94cd84d8047edf) Co-authored-by: jsnklln <jsnklln@gmail.com>
-rw-r--r--Lib/configparser.py2
-rw-r--r--Lib/test/test_configparser.py7
-rw-r--r--Misc/NEWS.d/next/Library/2019-11-12-18-59-33.bpo-38741.W7IYkq.rst1
3 files changed, 9 insertions, 1 deletions
diff --git a/Lib/configparser.py b/Lib/configparser.py
index 2f45e24..042a5c7 100644
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -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"""
diff --git a/Lib/test/test_configparser.py b/Lib/test/test_configparser.py
index 9373a62..e9b03e6 100644
--- a/Lib/test/test_configparser.py
+++ b/Lib/test/test_configparser.py
@@ -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({
diff --git a/Misc/NEWS.d/next/Library/2019-11-12-18-59-33.bpo-38741.W7IYkq.rst b/Misc/NEWS.d/next/Library/2019-11-12-18-59-33.bpo-38741.W7IYkq.rst
new file mode 100644
index 0000000..39d84cc
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-11-12-18-59-33.bpo-38741.W7IYkq.rst
@@ -0,0 +1 @@
+:mod:`configparser`: using ']' inside a section header will no longer cut the section name short at the ']' \ No newline at end of file