fix(ifex_to_json_schema): use None sentinels for mutable default args - #169
Open
SoundMatt wants to merge 1 commit into
Open
fix(ifex_to_json_schema): use None sentinels for mutable default args#169SoundMatt wants to merge 1 commit into
SoundMatt wants to merge 1 commit into
Conversation
`collect_type_info(t, collection={}, seen={})` creates both dicts once
at function-definition time and reuses them across all calls. After
the first run, `seen` already contains all visited types so subsequent
calls find no new types, and `collection` accumulates data across
unrelated invocations.
Replace with `None` sentinels initialised inside the function body.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
Collaborator
|
Same as in other places but the described problem is never triggered because the function (the whole module) is only run once. Maybe if the function was shown to be internal to the module, this would be evident to Claude. Anyhow, I guess the pattern is considered bad practice, so it should be avoided. |
Collaborator
|
It looks good anyhow - will either merge it, or combine it with the same style of change in other modules. |
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.
collect_type_info(t, collection={}, seen={})uses mutable dicts as default arguments. Python creates these once at function-definition time and reuses the same objects on every call that omits those arguments.After the first call:
seenretains all visited type names, so any subsequent call skips every node and collects nothing.collectionaccumulates entries from previous calls, polluting results.Fix with the standard
None-sentinel pattern.