@@ -28,9 +28,10 @@ from django.db.models.query_utils import Q as Q # noqa: F401
28
28
from django .db .models .sql .query import Query , RawQuery
29
29
30
30
_T = TypeVar ("_T" , bound = models .Model , covariant = True )
31
- _QS = TypeVar ("_QS" , bound = "QuerySet" )
31
+ _Row = TypeVar ("_Row" , covariant = True )
32
+ _QS = TypeVar ("_QS" , bound = "_QuerySet" )
32
33
33
- class QuerySet (Generic [_T ], Collection [_T ], Reversible [_T ], Sized ):
34
+ class _QuerySet (Generic [_T , _Row ], Collection [_Row ], Reversible [_Row ], Sized ):
34
35
model : Type [_T ]
35
36
query : Query
36
37
def __init__ (
@@ -47,11 +48,13 @@ class QuerySet(Generic[_T], Collection[_T], Reversible[_T], Sized):
47
48
def __class_getitem__ (cls : Type [_QS ], item : Type [_T ]) -> Type [_QS ]: ...
48
49
def __getstate__ (self ) -> Dict [str , Any ]: ...
49
50
# Technically, the other QuerySet must be of the same type _T, but _T is covariant
50
- def __and__ (self : _QS , other : QuerySet [_T ]) -> _QS : ...
51
- def __or__ (self : _QS , other : QuerySet [_T ]) -> _QS : ...
52
- def iterator (self , chunk_size : int = ...) -> Iterator [_T ]: ...
51
+ def __and__ (self : _QS , other : _QuerySet [_T , _Row ]) -> _QS : ...
52
+ def __or__ (self : _QS , other : _QuerySet [_T , _Row ]) -> _QS : ...
53
+ # IMPORTANT: When updating any of the following methods' signatures, please ALSO modify
54
+ # the corresponding method in BaseManager.
55
+ def iterator (self , chunk_size : int = ...) -> Iterator [_Row ]: ...
53
56
def aggregate (self , * args : Any , ** kwargs : Any ) -> Dict [str , Any ]: ...
54
- def get (self , * args : Any , ** kwargs : Any ) -> _T : ...
57
+ def get (self , * args : Any , ** kwargs : Any ) -> _Row : ...
55
58
def create (self , * args : Any , ** kwargs : Any ) -> _T : ...
56
59
def bulk_create (
57
60
self , objs : Iterable [_T ], batch_size : Optional [int ] = ..., ignore_conflicts : bool = ...
@@ -61,10 +64,10 @@ class QuerySet(Generic[_T], Collection[_T], Reversible[_T], Sized):
61
64
def update_or_create (
62
65
self , defaults : Optional [MutableMapping [str , Any ]] = ..., ** kwargs : Any
63
66
) -> Tuple [_T , bool ]: ...
64
- def earliest (self , * fields : Any , field_name : Optional [Any ] = ...) -> _T : ...
65
- def latest (self , * fields : Any , field_name : Optional [Any ] = ...) -> _T : ...
66
- def first (self ) -> Optional [_T ]: ...
67
- def last (self ) -> Optional [_T ]: ...
67
+ def earliest (self , * fields : Any , field_name : Optional [Any ] = ...) -> _Row : ...
68
+ def latest (self , * fields : Any , field_name : Optional [Any ] = ...) -> _Row : ...
69
+ def first (self ) -> Optional [_Row ]: ...
70
+ def last (self ) -> Optional [_Row ]: ...
68
71
def in_bulk (self , id_list : Iterable [Any ] = ..., * , field_name : str = ...) -> Dict [Any , _T ]: ...
69
72
def delete (self ) -> Tuple [int , Dict [str , int ]]: ...
70
73
def update (self , ** kwargs : Any ) -> int : ...
@@ -78,15 +81,15 @@ class QuerySet(Generic[_T], Collection[_T], Reversible[_T], Sized):
78
81
using : Optional [str ] = ...,
79
82
) -> RawQuerySet : ...
80
83
# The type of values may be overridden to be more specific in the mypy plugin, depending on the fields param
81
- def values (self , * fields : Union [str , Combinable ], ** expressions : Any ) -> _ValuesQuerySet [_T , Dict [str , Any ]]: ...
84
+ def values (self , * fields : Union [str , Combinable ], ** expressions : Any ) -> _QuerySet [_T , Dict [str , Any ]]: ...
82
85
# The type of values_list may be overridden to be more specific in the mypy plugin, depending on the fields param
83
86
def values_list (
84
87
self , * fields : Union [str , Combinable ], flat : bool = ..., named : bool = ...
85
- ) -> _ValuesQuerySet [_T , Any ]: ...
86
- def dates (self , field_name : str , kind : str , order : str = ...) -> _ValuesQuerySet [_T , datetime .date ]: ...
88
+ ) -> _QuerySet [_T , Any ]: ...
89
+ def dates (self , field_name : str , kind : str , order : str = ...) -> _QuerySet [_T , datetime .date ]: ...
87
90
def datetimes (
88
91
self , field_name : str , kind : str , order : str = ..., tzinfo : Optional [datetime .tzinfo ] = ...
89
- ) -> _ValuesQuerySet [_T , datetime .datetime ]: ...
92
+ ) -> _QuerySet [_T , datetime .datetime ]: ...
90
93
def none (self : _QS ) -> _QS : ...
91
94
def all (self : _QS ) -> _QS : ...
92
95
def filter (self : _QS , * args : Any , ** kwargs : Any ) -> _QS : ...
@@ -114,7 +117,7 @@ class QuerySet(Generic[_T], Collection[_T], Reversible[_T], Sized):
114
117
tables : Optional [List [str ]] = ...,
115
118
order_by : Optional [Sequence [str ]] = ...,
116
119
select_params : Optional [Sequence [Any ]] = ...,
117
- ) -> QuerySet [ Any ]: ...
120
+ ) -> _QuerySet [ Any , Any ]: ...
118
121
def reverse (self : _QS ) -> _QS : ...
119
122
def defer (self : _QS , * fields : Any ) -> _QS : ...
120
123
def only (self : _QS , * fields : Any ) -> _QS : ...
@@ -124,28 +127,13 @@ class QuerySet(Generic[_T], Collection[_T], Reversible[_T], Sized):
124
127
@property
125
128
def db (self ) -> str : ...
126
129
def resolve_expression (self , * args : Any , ** kwargs : Any ) -> Any : ...
127
- def __iter__ (self ) -> Iterator [_T ]: ...
130
+ def __iter__ (self ) -> Iterator [_Row ]: ...
128
131
def __contains__ (self , x : object ) -> bool : ...
129
132
@overload
130
- def __getitem__ (self , i : int ) -> _T : ...
131
- @overload
132
- def __getitem__ (self : _QS , s : slice ) -> _QS : ...
133
- def __reversed__ (self ) -> Iterator [_T ]: ...
134
-
135
- _Row = TypeVar ("_Row" , covariant = True )
136
-
137
- class _ValuesQuerySet (QuerySet [_T ], Collection [_Row ], Reversible [_Row ], Sized ):
138
- def __iter__ (self ) -> Iterator [_Row ]: ... # type: ignore
139
- @overload # type: ignore
140
133
def __getitem__ (self , i : int ) -> _Row : ...
141
134
@overload
142
135
def __getitem__ (self : _QS , s : slice ) -> _QS : ...
143
- def iterator (self , chunk_size : int = ...) -> Iterator [_Row ]: ... # type: ignore
144
- def get (self , * args : Any , ** kwargs : Any ) -> _Row : ... # type: ignore
145
- def earliest (self , * fields : Any , field_name : Optional [Any ] = ...) -> _Row : ... # type: ignore
146
- def latest (self , * fields : Any , field_name : Optional [Any ] = ...) -> _Row : ... # type: ignore
147
- def first (self ) -> Optional [_Row ]: ... # type: ignore
148
- def last (self ) -> Optional [_Row ]: ... # type: ignore
136
+ def __reversed__ (self ) -> Iterator [_Row ]: ...
149
137
150
138
class RawQuerySet (Iterable [_T ], Sized ):
151
139
query : RawQuery
@@ -179,6 +167,8 @@ class RawQuerySet(Iterable[_T], Sized):
179
167
def resolve_model_init_order (self ) -> Tuple [List [str ], List [int ], List [Tuple [str , int ]]]: ...
180
168
def using (self , alias : Optional [str ]) -> RawQuerySet [_T ]: ...
181
169
170
+ QuerySet = _QuerySet [_T , _T ]
171
+
182
172
class Prefetch (object ):
183
173
def __init__ (self , lookup : str , queryset : Optional [QuerySet ] = ..., to_attr : Optional [str ] = ...) -> None : ...
184
174
def __getstate__ (self ) -> Dict [str , Any ]: ...
0 commit comments