diff options
author | Georg Brandl <georg@python.org> | 2010-07-29 11:56:20 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2010-07-29 11:56:20 (GMT) |
commit | f206d0e3931b64aa3c8219badb9e0fbb81f1eb38 (patch) | |
tree | 21841c861a430f4067269363dd453f9bc1b5f3b2 | |
parent | c62a704189518ecd0c7420c61b41750c7984312a (diff) | |
download | cpython-f206d0e3931b64aa3c8219badb9e0fbb81f1eb38.zip cpython-f206d0e3931b64aa3c8219badb9e0fbb81f1eb38.tar.gz cpython-f206d0e3931b64aa3c8219badb9e0fbb81f1eb38.tar.bz2 |
Fix for r83202: improve the handling of empty lines.
-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: |