gh-82113: Fix ConfigParser.items() returning '' for value-less options#151898
Open
iamsharduld wants to merge 1 commit into
Open
gh-82113: Fix ConfigParser.items() returning '' for value-less options#151898iamsharduld wants to merge 1 commit into
iamsharduld wants to merge 1 commit into
Conversation
…options ConfigParser.items() always ran the option value through interpolation, which turned a None value (a value-less option under allow_no_value=True) into an empty string. get(), mapping access and dict(section) all return None in that case. Skip interpolation when the stored value is None so items() is consistent with the other accessors.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
With
allow_no_value=True, a value-less option is stored asNone.ConfigParser.get()returns it directly (if raw or value is None: return value), and mapping access anddict(section)also returnNone. Butitems(section)always ran each value throughself._interpolation.before_get(), which turnsNoneinto an empty string, soitems()was inconsistent with every other accessor.Make the non-raw value getter in
items()mirrorget(): return the storedvalue directly when it is
None, otherwise interpolate. Interpolation of realvalues is unchanged.