diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-07-13 14:35:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-13 14:35:30 (GMT) |
commit | 1cc6769e4146951d47528a97e56ba1e8e9ee7fc1 (patch) | |
tree | 89bd377749be6a106d76dae5d3ed27b95e55a1fd | |
parent | f514addfbc637a42549ddc422b35b6caad2a4363 (diff) | |
download | cpython-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.py | 2 | ||||
-rw-r--r-- | Lib/test/test_configparser.py | 7 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-11-12-18-59-33.bpo-38741.W7IYkq.rst | 1 |
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 |