add relation fields overloads
This commit is contained in:
@ -3,7 +3,17 @@ import sys
|
|||||||
import uuid
|
import uuid
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from random import choices
|
from random import choices
|
||||||
from typing import Any, Dict, List, Optional, TYPE_CHECKING, Tuple, Type, Union
|
from typing import (
|
||||||
|
Any,
|
||||||
|
Dict,
|
||||||
|
List,
|
||||||
|
Optional,
|
||||||
|
TYPE_CHECKING,
|
||||||
|
Tuple,
|
||||||
|
Type,
|
||||||
|
Union,
|
||||||
|
overload,
|
||||||
|
)
|
||||||
|
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
from pydantic import BaseModel, create_model
|
from pydantic import BaseModel, create_model
|
||||||
@ -19,9 +29,9 @@ if TYPE_CHECKING: # pragma no cover
|
|||||||
from ormar.fields import ManyToManyField
|
from ormar.fields import ManyToManyField
|
||||||
|
|
||||||
if sys.version_info < (3, 7):
|
if sys.version_info < (3, 7):
|
||||||
ToType = Type["Model"]
|
ToType = Type["T"]
|
||||||
else:
|
else:
|
||||||
ToType = Union[Type["Model"], "ForwardRef"]
|
ToType = Union[Type["T"], "ForwardRef"]
|
||||||
|
|
||||||
|
|
||||||
def create_dummy_instance(fk: Type["T"], pk: Any = None) -> "T":
|
def create_dummy_instance(fk: Type["T"], pk: Any = None) -> "T":
|
||||||
@ -168,8 +178,18 @@ class ForeignKeyConstraint:
|
|||||||
onupdate: Optional[str]
|
onupdate: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def ForeignKey(to: Type["T"], **kwargs: Any) -> "T":
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def ForeignKey(to: ForwardRef, **kwargs: Any) -> "Model":
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
def ForeignKey( # noqa CFQ002
|
def ForeignKey( # noqa CFQ002
|
||||||
to: Type["T"],
|
to: "ToType",
|
||||||
*,
|
*,
|
||||||
name: str = None,
|
name: str = None,
|
||||||
unique: bool = False,
|
unique: bool = False,
|
||||||
|
|||||||
@ -1,5 +1,15 @@
|
|||||||
import sys
|
import sys
|
||||||
from typing import Any, List, Optional, TYPE_CHECKING, Tuple, Type, Union, cast
|
from typing import (
|
||||||
|
Any,
|
||||||
|
List,
|
||||||
|
Optional,
|
||||||
|
TYPE_CHECKING,
|
||||||
|
Tuple,
|
||||||
|
Type,
|
||||||
|
Union,
|
||||||
|
cast,
|
||||||
|
overload,
|
||||||
|
)
|
||||||
|
|
||||||
from pydantic.typing import ForwardRef, evaluate_forwardref
|
from pydantic.typing import ForwardRef, evaluate_forwardref
|
||||||
import ormar # noqa: I100
|
import ormar # noqa: I100
|
||||||
@ -12,9 +22,9 @@ if TYPE_CHECKING: # pragma no cover
|
|||||||
from ormar.relations.relation_proxy import RelationProxy
|
from ormar.relations.relation_proxy import RelationProxy
|
||||||
|
|
||||||
if sys.version_info < (3, 7):
|
if sys.version_info < (3, 7):
|
||||||
ToType = Type["Model"]
|
ToType = Type["T"]
|
||||||
else:
|
else:
|
||||||
ToType = Union[Type["Model"], "ForwardRef"]
|
ToType = Union[Type["T"], "ForwardRef"]
|
||||||
|
|
||||||
REF_PREFIX = "#/components/schemas/"
|
REF_PREFIX = "#/components/schemas/"
|
||||||
|
|
||||||
@ -58,8 +68,18 @@ def populate_m2m_params_based_on_to_model(
|
|||||||
return __type__, column_type
|
return __type__, column_type
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def ManyToMany(to: Type["T"], **kwargs: Any) -> "RelationProxy[T]":
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def ManyToMany(to: ForwardRef, **kwargs: Any) -> "RelationProxy":
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
def ManyToMany(
|
def ManyToMany(
|
||||||
to: Type["T"],
|
to: "ToType",
|
||||||
through: Optional["ToType"] = None,
|
through: Optional["ToType"] = None,
|
||||||
*,
|
*,
|
||||||
name: str = None,
|
name: str = None,
|
||||||
|
|||||||
Reference in New Issue
Block a user