|  | 
|  | 1 | +- case: queryset_isinstance_check | 
|  | 2 | +  main: | | 
|  | 3 | +    from typing import Any | 
|  | 4 | +    from django.db.models.query import QuerySet | 
|  | 5 | +    from django_stubs_ext import QuerySetAny | 
|  | 6 | +
 | 
|  | 7 | +    def foo(q: QuerySet[Any]) -> None: | 
|  | 8 | +      pass | 
|  | 9 | +
 | 
|  | 10 | +    def bar(q: QuerySetAny) -> None: | 
|  | 11 | +      pass | 
|  | 12 | +
 | 
|  | 13 | +    def baz(obj: object) -> None: | 
|  | 14 | +      if isinstance(obj, QuerySetAny): | 
|  | 15 | +        reveal_type(obj)             # N: Revealed type is "django.db.models.query._QuerySet[Any, Any]" | 
|  | 16 | +        foo(obj) | 
|  | 17 | +        bar(obj) | 
|  | 18 | +
 | 
|  | 19 | +      if isinstance(obj, QuerySet):  # E: Parameterized generics cannot be used with class or instance checks | 
|  | 20 | +        reveal_type(obj)             # N: Revealed type is "django.db.models.query._QuerySet[Any, Any]" | 
|  | 21 | +        foo(obj) | 
|  | 22 | +        bar(obj) | 
|  | 23 | +- case: queryset_list | 
|  | 24 | +  main: | | 
|  | 25 | +    from typing import List | 
|  | 26 | +    from django.db.models.query import QuerySet | 
|  | 27 | +    from django_stubs_ext import QuerySetAny | 
|  | 28 | +    from myapp.models import User, Book | 
|  | 29 | +
 | 
|  | 30 | +    def try_append(queryset_instance: QuerySetAny, queryset: QuerySet[User], queryset_book: QuerySet[Book]) -> None: | 
|  | 31 | +      user_querysets: List[QuerySet[User]] = [] | 
|  | 32 | +      user_querysets.append(queryset_instance) | 
|  | 33 | +      user_querysets.append(queryset) | 
|  | 34 | +      user_querysets.append(queryset_book)  # E: Argument 1 to "append" of "list" has incompatible type "_QuerySet[Book, Book]"; expected "_QuerySet[User, User]" | 
|  | 35 | +  installed_apps: | 
|  | 36 | +    - myapp | 
|  | 37 | +  files: | 
|  | 38 | +    - path: myapp/__init__.py | 
|  | 39 | +    - path: myapp/models.py | 
|  | 40 | +      content: | | 
|  | 41 | +        from django.db import models | 
|  | 42 | +        class User(models.Model): | 
|  | 43 | +          pass | 
|  | 44 | +        class Book(models.Model): | 
|  | 45 | +          pass | 
0 commit comments