fix values_list

This commit is contained in:
Maxim Kurnikov
2019-02-07 01:01:05 +03:00
parent 191496ed72
commit 3fb3bbcf19
5 changed files with 38 additions and 8 deletions

View File

@@ -7,8 +7,8 @@ class ModelBase(type): ...
_Self = TypeVar("_Self", bound="Model")
class Model(metaclass=ModelBase):
class DoesNotExist(Exception):
pass
class DoesNotExist(Exception): ...
class Meta: ...
_meta: Any
pk: Any = ...
objects: Manager[Model]

View File

@@ -231,6 +231,7 @@ class DateField(DateTimeCheckMixin, Field):
validators: Iterable[_ValidatorCallable] = ...,
error_messages: Optional[_ErrorMessagesToOverride] = ...,
): ...
def __set__(self, instance, value: Any) -> None: ...
def __get__(self, instance, owner) -> date: ...
class TimeField(DateTimeCheckMixin, Field):
@@ -256,12 +257,15 @@ class TimeField(DateTimeCheckMixin, Field):
validators: Iterable[_ValidatorCallable] = ...,
error_messages: Optional[_ErrorMessagesToOverride] = ...,
): ...
def __set__(self, instance, value: Any) -> None: ...
def __get__(self, instance, owner) -> time: ...
class DateTimeField(DateField):
def __set__(self, instance, value: Any) -> None: ...
def __get__(self, instance, owner) -> datetime: ...
class UUIDField(Field):
def __set__(self, instance, value: Any) -> None: ...
def __get__(self, instance, owner) -> uuid.UUID: ...
class FilePathField(Field):

View File

@@ -18,11 +18,32 @@ from typing import (
from django.db.models.base import Model
from django.db.models.expressions import Combinable as Combinable, F as F
from django.db.models.sql.query import Query, RawQuery
from typing_extensions import Literal
from django.db import models
from django.db.models import Manager
from django.db.models.query_utils import Q as Q
_Row = TypeVar("_Row", covariant=True)
class BaseIterable(Sequence[_Row]):
def __init__(self, queryset: QuerySet, chunked_fetch: bool = ..., chunk_size: int = ...): ...
def __iter__(self) -> Iterator[_Row]: ...
def __contains__(self, x: object) -> bool: ...
def __len__(self) -> int: ...
@overload
def __getitem__(self, i: int) -> _Row: ...
@overload
def __getitem__(self, s: slice) -> Sequence[_Row]: ...
class ModelIterable(BaseIterable[Model]): ...
class ValuesIterable(BaseIterable[Dict[str, Any]]): ...
class ValuesListIterable(BaseIterable[Tuple]): ...
class NamedValuesListIterable(ValuesListIterable): ...
class FlatValuesListIterable(BaseIterable):
def __iter__(self) -> Iterator[Any]: ...
_T = TypeVar("_T", bound=models.Model, covariant=True)
class QuerySet(Iterable[_T], Sized):
@@ -75,7 +96,12 @@ class QuerySet(Iterable[_T], Sized):
self, raw_query: str, params: Any = ..., translations: Optional[Dict[str, str]] = ..., using: None = ...
) -> RawQuerySet: ...
def values(self, *fields: Union[str, Combinable], **expressions: Any) -> QuerySet: ...
def values_list(self, *fields: Union[str, Combinable], flat: bool = ..., named: bool = ...) -> QuerySet: ...
@overload
def values_list(self, *fields: Union[str, Combinable], named: Literal[True]) -> NamedValuesListIterable: ...
@overload
def values_list(self, *fields: Union[str, Combinable], flat: Literal[True]) -> FlatValuesListIterable: ...
@overload
def values_list(self, *fields: Union[str, Combinable]) -> ValuesListIterable: ...
def dates(self, field_name: str, kind: str, order: str = ...) -> QuerySet: ...
def datetimes(self, field_name: str, kind: str, order: str = ..., tzinfo: None = ...) -> QuerySet: ...
def none(self) -> QuerySet[_T]: ...
@@ -157,8 +183,5 @@ class Prefetch(object):
def prefetch_related_objects(model_instances: Iterable[_T], *related_lookups: Union[str, Prefetch]) -> None: ...
def get_prefetcher(instance: Model, through_attr: str, to_attr: str) -> Tuple[Any, Any, bool, bool]: ...
class ModelIterable(Iterable[_T]):
def __iter__(self) -> Iterator[_T]: ...
class InstanceCheckMeta(type): ...
class EmptyQuerySet(metaclass=InstanceCheckMeta): ...

View File

@@ -40,6 +40,7 @@ class MultiValueDict(MutableMapping[_K, _V]):
def appendlist(self, key: _K, value: _V) -> None: ...
def lists(self) -> Iterable[Tuple[_K, List[_V]]]: ...
def dict(self) -> Dict[_K, _Val]: ...
def copy(self) -> MultiValueDict[_K, _V]: ...
# These overrides are needed to convince mypy that this isn't an abstract class
def __delitem__(self, item: _K) -> None: ...
def __getitem__(self, item: _K) -> _Val: ... # type: ignore

View File

@@ -76,10 +76,12 @@ IGNORED_ERRORS = {
],
'aggregation': [
'Incompatible types in assignment (expression has type "QuerySet[Any]", variable has type "List[Any]")',
'"as_sql" undefined in superclass'
'"as_sql" undefined in superclass',
'Incompatible types in assignment (expression has type "FlatValuesListIterable", variable has type "ValuesListIterable")'
],
'aggregation_regress': [
'Incompatible types in assignment (expression has type "List[str]", variable has type "QuerySet[Author]")'
'Incompatible types in assignment (expression has type "List[str]", variable has type "QuerySet[Author]")',
'Incompatible types in assignment (expression has type "FlatValuesListIterable", variable has type "QuerySet[Any]")'
],
'apps': [
'Incompatible types in assignment (expression has type "str", target has type "type")',