From 74e31c7562c7b983fbef832b13629ee8c13636ff Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sun, 28 Aug 2022 13:15:28 +0100 Subject: [PATCH] Add QuerySet.__aiter__() (#1136) --- django-stubs/db/models/query.pyi | 2 ++ .../managers/querysets/test_iteration.yml | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/typecheck/managers/querysets/test_iteration.yml diff --git a/django-stubs/db/models/query.pyi b/django-stubs/db/models/query.pyi index e96bdcd..0bd830e 100644 --- a/django-stubs/db/models/query.pyi +++ b/django-stubs/db/models/query.pyi @@ -1,6 +1,7 @@ import datetime from typing import ( Any, + AsyncIterator, Collection, Dict, Generic, @@ -167,6 +168,7 @@ class _QuerySet(Generic[_T, _Row], Collection[_Row], Reversible[_Row], Sized): def db(self) -> str: ... def resolve_expression(self, *args: Any, **kwargs: Any) -> Any: ... def __iter__(self) -> Iterator[_Row]: ... + def __aiter__(self) -> AsyncIterator[_Row]: ... def __contains__(self, x: object) -> bool: ... @overload def __getitem__(self, i: int) -> _Row: ... diff --git a/tests/typecheck/managers/querysets/test_iteration.yml b/tests/typecheck/managers/querysets/test_iteration.yml new file mode 100644 index 0000000..5a9b08c --- /dev/null +++ b/tests/typecheck/managers/querysets/test_iteration.yml @@ -0,0 +1,33 @@ +- case: sync_for + main: | + from myapp.models import User + + for user in User.objects.all(): + reveal_type(user) # N: Revealed type is "myapp.models.User" + installed_apps: + - myapp + files: + - path: myapp/__init__.py + - path: myapp/models.py + content: | + from django.db import models + class User(models.Model): + pass + + +- case: async_for + main: | + from myapp.models import User + + async def main(): + async for user in User.objects.all(): + reveal_type(user) # N: Revealed type is "myapp.models.User" + installed_apps: + - myapp + files: + - path: myapp/__init__.py + - path: myapp/models.py + content: | + from django.db import models + class User(models.Model): + pass