fix: resolve return annotations with from __future__ import annotations
#1258
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.
Summary
@fndecorated functions return strings instead of expected types when using PEP 563 (from __future__ import annotations)typing.get_type_hints()to properly resolve string annotations to actual typesProblem
When using
from __future__ import annotations, all type annotations become strings by default (PEP 563). ThePythonFunction.from_function()method was usingsig.return_annotationdirectly, which would be a string like"Recipe"instead of the actualRecipeclass. This caused decorated functions to fail or return wrong types.Solution
Added annotation resolution using
get_type_hints()inPythonFunction.from_function():Test plan
tests/basic/utilities/test_types_future_annotations.pyFixes #950