Declare Prefetch as generic and do specialization in the plugin
#2786
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.
I have made things!
Followup to #2779 to handle more
Prefetchusages using a generic class over the prefetchedquerysetandto_attrvalue (with plugin specialization to LiteralString).We now:
prefetch_relatedcallsPrefetchclasses created from external function or variable assignmentsto_attrattribute filled but not thequerysetattribute.reveal_type( Article.objects.prefetch_related( - models.Prefetch("tags", to_attr="tags")).get().tags) # N: Revealed type is "builtins.list[Any]" + models.Prefetch("tags", to_attr="tags")).get().tags) # N: Revealed type is "builtins.list[myapp.models.Tag]" ) )I've also expanded the tests with a test for annotated prefetched queryset