diff options
Diffstat (limited to 'Lib/configparser.py')
-rw-r--r-- | Lib/configparser.py | 15 |
1 files 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: |