Repository navigation
fix: evaluate task annotations consistently across Python versions - #1025
Merged
Merged
Conversation
tobiasraabe
added this pull request to stack #1027
October 14, 2026 04:27
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.
Annotation evaluation used different namespaces before Python 3.14, and ordinary signature inspection could evaluate lazy annotations before their saved locals were available. A task whose annotation references a deleted definition-local name could collect successfully and then fail during execution.
Use one namespace-building path across Python versions and read signatures without evaluating annotations throughout collection, parametrization, and execution. Default arguments supply missing names without overriding module globals or builtins. Regression tests cover deleted local bindings, default recovery, global/default collisions, explicit namespaces, and current module globals.
Validation:
just lintandjust typingpassed.This is the first PR in a stack. Follow-up #1026 enables definition-local snapshots for future annotations and releases generated-task snapshots after collection hooks finish. Merge this PR first, then retarget #1026 to
main.