]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38741: Definition of multiple ']' in header configparser (GH-17129)
authorjsnklln <jsnklln@gmail.com>
Tue, 13 Jul 2021 13:54:06 +0000 (09:54 -0400)
committerGitHub <noreply@github.com>
Tue, 13 Jul 2021 13:54:06 +0000 (15:54 +0200)
Co-authored-by: Jason Killen <jason.killen@windsorcircle.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Lib/configparser.py
Lib/test/test_configparser.py
Misc/NEWS.d/next/Library/2019-11-12-18-59-33.bpo-38741.W7IYkq.rst [new file with mode: 0644]

index 2f45e242b49426d0c55b104bd48a41230e93a01e..042a5c74b696fbc7533c957277a5f75c7b45d06a 100644 (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"""
index 9373a62072ef47f5df515e871354ad7b56e5cdd8..e9b03e6c62ef141e4644f54cd2add2b6713a1713 100644 (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({
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 (file)
index 0000000..39d84cc
--- /dev/null
@@ -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