This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: ConfigParser._read doesn't join multi-line values collected while reading if a ParsingError occured
Type: behavior Stage:
Components: Library (Lib) Versions: Python 3.7, Python 3.6, Python 3.5
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: lukasz.langa Nosy List: fhoech, lukasz.langa, ned.deily, python-dev, serhiy.storchaka
Priority: normal Keywords: patch

Created on 2015-05-07 15:54 by fhoech, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
ConfigParser.py.patch fhoech, 2015-05-07 15:54
Pull Requests
URL Status Linked Edit
PR 552 closed dstufft, 2017-03-31 16:36
Messages (10)
msg242718 - (view) Author: Florian Höch (fhoech) * Date: 2015-05-07 15:54
If a ParsingError occurs while reading a config file, the multi-line values collected while reading will never be joined because the error is raised before this can happen. This leads to very unexpected results, e.g. consider the following config.ini:

[DEFAULT]
test = test
invalid

>>> cfg = ConfigParser.ConfigParser()
>>> cfg.read(['config.ini'])

This will raise a ParsingError as expected. But the option values that were parsed without error are now all lists instead of strings:

>>> cfg.get('DEFAULT', test')
['test']

Patch attached.
msg242719 - (view) Author: Florian Höch (fhoech) * Date: 2015-05-07 15:58
[Btw, you might want to fix the contributor agreement form - I can't sign it because it shows no text, so I don't know what I'm supposed to enter in the fields (Firefox 37.0.2)]
msg242725 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2015-05-07 18:53
[Thanks for the headsup about the contributor agreement form, now reported as https://github.com/python/pythondotorg/issues/747]
msg272120 - (view) Author: Florian Höch (fhoech) * Date: 2016-08-07 13:04
It seems this hasn't landed yet?
msg281802 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-11-26 22:05
New changeset 40567b8e3478 by Łukasz Langa in branch '3.5':
Fixes #24142: [configparser] always join multiline values to not leave the parser in an invalid state
https://hg.python.org/cpython/rev/40567b8e3478

New changeset 306cfb866399 by Łukasz Langa in branch '3.6':
Merge 3.5, fix for #24142
https://hg.python.org/cpython/rev/306cfb866399

New changeset 876bee0bd0ba by Łukasz Langa in branch 'default':
Merge 3.6, fix for #24142
https://hg.python.org/cpython/rev/876bee0bd0ba
msg281803 - (view) Author: Łukasz Langa (lukasz.langa) * (Python committer) Date: 2016-11-26 22:06
Thanks for your patch! As you can see, 2.7 is no longer touched as the codebases diverged. I'll release a 3.6 backport on PyPI sometime this weekend that you can use.
msg281804 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-11-26 23:27
Is this release critical for 3.6.0?
msg281809 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2016-11-27 03:18
After discussing this offline with Łukasz, I'm going to take the risk of allowing the non-conforming 3.6 checkin to remain in for 3.6.0.
msg281839 - (view) Author: Florian Höch (fhoech) * Date: 2016-11-28 00:34
> Thanks for your patch! As you can see, 2.7 is no longer touched as the
codebases diverged.

Thanks, although I have to say it's a little bit unfortunate that Python
2.7 will be left in a worse state than 2.6 where this bug did not exist.
msg281846 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-11-28 08:20
Would be nice to add Misc/NEWS entry for this patch.
History
Date User Action Args
2022-04-11 14:58:16adminsetgithub: 68330
2017-03-31 16:36:32dstufftsetpull_requests: + pull_request1059
2016-11-28 08:20:57serhiy.storchakasetmessages: + msg281846
2016-11-28 00:34:29fhoechsetmessages: + msg281839
2016-11-27 03:18:10ned.deilysetnosy: + ned.deily
messages: + msg281809
2016-11-26 23:27:00serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg281804
2016-11-26 22:06:53lukasz.langasetstatus: open -> closed
resolution: fixed
messages: + msg281803

versions: + Python 3.5, Python 3.6, Python 3.7, - Python 2.7
2016-11-26 22:05:47python-devsetnosy: + python-dev
messages: + msg281802
2016-08-07 13:04:08fhoechsetmessages: + msg272120
2015-09-04 17:43:14lukasz.langasetassignee: lukasz.langa
2015-05-07 18:53:23ned.deilysetnosy: - ned.deily
2015-05-07 18:53:09ned.deilysetnosy: + ned.deily
messages: + msg242725
2015-05-07 16:46:31r.david.murraysetnosy: + lukasz.langa
2015-05-07 15:58:22fhoechsetmessages: + msg242719
2015-05-07 15:54:46fhoechcreate