fix: lookup_default returns None instead of leaking internal sentinel#3209
Closed
karthiksai109 wants to merge 1 commit intopallets:mainfrom
Closed
fix: lookup_default returns None instead of leaking internal sentinel#3209karthiksai109 wants to merge 1 commit intopallets:mainfrom
karthiksai109 wants to merge 1 commit intopallets:mainfrom
Conversation
Fixes pallets#3145 In 8.3.0, lookup_default started returning the internal Sentinel.UNSET value instead of None when a key wasn't found in default_map. This broke code that relied on the pre-8.3.0 behavior where lookup_default returned None for missing keys. Extracted the sentinel-aware logic into _lookup_default for internal use by get_default and consume_value, and made the public lookup_default convert UNSET to None before returning. Added a regression test covering all three cases: no default_map, default_map without the key, and default_map with the key.
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.
Fixes #3145
In 8.3.0, lookup_default started returning the internal Sentinel.UNSET
value instead of None when a key wasn't found in default_map. This broke
code that checked
if default is not Nonesince UNSET is not None.Extracted the sentinel-aware logic into _lookup_default for internal use
by get_default and consume_value, and made the public lookup_default
convert UNSET to None before returning. This restores the pre-8.3.0
behavior for external callers while keeping the internal distinction
between "missing" and "explicitly None" intact.
Added a regression test covering all three cases: no default_map,
default_map without the key, and default_map with the key.