From f206d0e3931b64aa3c8219badb9e0fbb81f1eb38 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 29 Jul 2010 11:56:20 +0000 Subject: Fix for r83202: improve the handling of empty lines. --- Lib/configparser.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Lib/configparser.py b/Lib/configparser.py index d979e6c..8c0546a 100644 --- a/Lib/configparser.py +++ b/Lib/configparser.py @@ -558,7 +558,7 @@ class RawConfigParser: indent_level = 0 e = None # None, or an exception for lineno, line in enumerate(fp, start=1): - # strip prefix-only comments + # strip full line comments comment_start = None for prefix in self._startonly_comment_prefixes: if line.strip().startswith(prefix): @@ -572,11 +572,14 @@ class RawConfigParser: break value = line[:comment_start].strip() if not value: - if self._empty_lines_in_values and comment_start is None: + if self._empty_lines_in_values: # add empty line to the value, but only if there was no # comment on the line - if cursect is not None and optname: - cursect[optname].append('\n') + if (comment_start is None and + cursect is not None and + optname and + cursect[optname] is not None): + cursect[optname].append('') # newlines added at join else: # empty line marks end of value indent_level = sys.maxsize @@ -643,9 +646,7 @@ class RawConfigParser: for options in all_sections: for name, val in options.items(): if isinstance(val, list): - if val[-1] == '\n': - val = val[:-1] - options[name] = '\n'.join(val) + options[name] = '\n'.join(val).rstrip() def _handle_error(self, exc, fpname, lineno, line): if not exc: -- cgit v0.12