mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-12 23:16:31 +08:00
Re-allow expressions in UniqueConstraint (#1220)
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Any, Optional, Sequence, Tuple, Type, TypeVar, Union
|
from typing import Any, Optional, Sequence, Tuple, Type, TypeVar, Union, overload
|
||||||
|
|
||||||
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
||||||
from django.db.models.base import Model
|
from django.db.models.base import Model
|
||||||
@@ -32,14 +32,23 @@ class UniqueConstraint(BaseConstraint):
|
|||||||
fields: Tuple[str, ...]
|
fields: Tuple[str, ...]
|
||||||
condition: Optional[Q]
|
condition: Optional[Q]
|
||||||
deferrable: Optional[Deferrable]
|
deferrable: Optional[Deferrable]
|
||||||
|
|
||||||
|
@overload
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*expressions: Union[str, Combinable],
|
||||||
# For 4.0:
|
fields: None = ...,
|
||||||
# *expressions: Union[str, Combinable],
|
name: str,
|
||||||
# fields: Optional[Sequence[str]] = ...,
|
condition: Optional[Q] = ...,
|
||||||
# name: str = ...,
|
deferrable: Optional[Deferrable] = ...,
|
||||||
fields: Optional[Sequence[str]],
|
include: Optional[Sequence[str]] = ...,
|
||||||
|
opclasses: Sequence[Any] = ...,
|
||||||
|
) -> None: ...
|
||||||
|
@overload
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
fields: Sequence[str],
|
||||||
name: str,
|
name: str,
|
||||||
condition: Optional[Q] = ...,
|
condition: Optional[Q] = ...,
|
||||||
deferrable: Optional[Deferrable] = ...,
|
deferrable: Optional[Deferrable] = ...,
|
||||||
|
|||||||
37
tests/typecheck/db/models/test_constraints.yml
Normal file
37
tests/typecheck/db/models/test_constraints.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
- case: unique_constraint_expressions
|
||||||
|
main: |
|
||||||
|
from django.db.models import Q, UniqueConstraint
|
||||||
|
from django.db.models.functions import Lower
|
||||||
|
|
||||||
|
UniqueConstraint(
|
||||||
|
Lower('name').desc(),
|
||||||
|
'category',
|
||||||
|
name='unique_lower_name_category',
|
||||||
|
)
|
||||||
|
|
||||||
|
- case: unique_constraint_fields
|
||||||
|
main: |
|
||||||
|
from django.db.models import Q, UniqueConstraint
|
||||||
|
from django.db.models.functions import Lower
|
||||||
|
|
||||||
|
UniqueConstraint(
|
||||||
|
fields=['name'],
|
||||||
|
name='unqiue_name',
|
||||||
|
)
|
||||||
|
|
||||||
|
- case: unique_constraint_expressions_fields
|
||||||
|
main: |
|
||||||
|
from django.db.models import Q, UniqueConstraint
|
||||||
|
from django.db.models.functions import Lower
|
||||||
|
|
||||||
|
UniqueConstraint(
|
||||||
|
Lower('name'),
|
||||||
|
fields=['name'],
|
||||||
|
name='unique_mess',
|
||||||
|
)
|
||||||
|
regex: true
|
||||||
|
out: |
|
||||||
|
main:4: error: No overload variant of "UniqueConstraint" matches argument types "Lower", "List\[str\]", "str"
|
||||||
|
main:4: note: Possible overload variants:
|
||||||
|
main:4: note: .*
|
||||||
|
main:4: note: .*
|
||||||
Reference in New Issue
Block a user