-
-
Notifications
You must be signed in to change notification settings - Fork 518
Description
Bug report
When a manager is created using .from_queryset() and imported from another module, it's type is Any, but only when the QuerySet subclass has its generic specified as ["MyModel"].
What's wrong
I took this test case and adapted it to move the NewManager = BaseManager.from_queryset(ModelQuerySet) line into myapp/querysets.py and imported NewManager into myapp/models.py instead of ModelQuerySet.
See this diff: from_queryset-extra-tests.txt
Applying this to the current master results in the following two tests failing:
from_queryset_using_basemanager_with_manager_imported_from_other_modulefrom_queryset_using_manager_with_manager_imported_from_other_module
If I change the following in myapp/querysets.py for these tests then they pass:
- class ModelQuerySet(models.QuerySet["MyModel"]):
+ class ModelQuerySet(models.QuerySet):Weird.
As far as I could work out get_dynamic_class_hook is being called for myapp.models.NewManager, but then get_function_hook/get_method_hook doesn't seem to get called for methods on the manager in the failure case.
How is that should be
When NewManager is created using .from_queryset() and is imported from another module it shouldn't resolve to Any when Queryset["MyModel"] is used as the subclass, but should be the same as when only QuerySet is used as the subclass or NewManager is created in myapp/models.py.
System information
- OS:
pythonversion: 3.9.5djangoversion: 3.2.13mypyversion: 0.961django-stubsversion: 1.12.0django-stubs-extversion: 0.5.0