mirror of
https://github.com/fastapi/sqlmodel.git
synced 2026-03-13 09:29:54 +08:00
Deprecate includeparameter of Field
This commit is contained in:
@@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
import builtins
|
||||
import ipaddress
|
||||
import uuid
|
||||
import warnings
|
||||
import weakref
|
||||
from collections.abc import Mapping, Sequence, Set
|
||||
from datetime import date, datetime, time, timedelta
|
||||
@@ -11,6 +12,7 @@ from enum import Enum
|
||||
from pathlib import Path
|
||||
from typing import (
|
||||
TYPE_CHECKING,
|
||||
Annotated,
|
||||
Any,
|
||||
Callable,
|
||||
ClassVar,
|
||||
@@ -89,6 +91,8 @@ IncEx: TypeAlias = Union[
|
||||
]
|
||||
OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"]
|
||||
|
||||
INCLUDE_DEPRECATION_MSG = "`include` is deprecated and does nothing. It will be removed, use `exclude` instead"
|
||||
|
||||
|
||||
def __dataclass_transform__(
|
||||
*,
|
||||
@@ -212,7 +216,10 @@ def Field(
|
||||
title: Optional[str] = None,
|
||||
description: Optional[str] = None,
|
||||
exclude: Union[bool, None] = None,
|
||||
include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
|
||||
include: Annotated[
|
||||
Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
|
||||
deprecated(INCLUDE_DEPRECATION_MSG),
|
||||
] = None,
|
||||
const: Optional[bool] = None,
|
||||
gt: Optional[float] = None,
|
||||
ge: Optional[float] = None,
|
||||
@@ -255,7 +262,10 @@ def Field(
|
||||
title: Optional[str] = None,
|
||||
description: Optional[str] = None,
|
||||
exclude: Union[bool, None] = None,
|
||||
include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
|
||||
include: Annotated[
|
||||
Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
|
||||
deprecated(INCLUDE_DEPRECATION_MSG),
|
||||
] = None,
|
||||
const: Optional[bool] = None,
|
||||
gt: Optional[float] = None,
|
||||
ge: Optional[float] = None,
|
||||
@@ -307,7 +317,10 @@ def Field(
|
||||
title: Optional[str] = None,
|
||||
description: Optional[str] = None,
|
||||
exclude: Union[bool, None] = None,
|
||||
include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
|
||||
include: Annotated[
|
||||
Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
|
||||
deprecated(INCLUDE_DEPRECATION_MSG),
|
||||
] = None,
|
||||
const: Optional[bool] = None,
|
||||
gt: Optional[float] = None,
|
||||
ge: Optional[float] = None,
|
||||
@@ -340,7 +353,10 @@ def Field(
|
||||
title: Optional[str] = None,
|
||||
description: Optional[str] = None,
|
||||
exclude: Union[bool, None] = None,
|
||||
include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
|
||||
include: Annotated[
|
||||
Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
|
||||
deprecated(INCLUDE_DEPRECATION_MSG),
|
||||
] = None,
|
||||
const: Optional[bool] = None,
|
||||
gt: Optional[float] = None,
|
||||
ge: Optional[float] = None,
|
||||
@@ -371,6 +387,10 @@ def Field(
|
||||
schema_extra: Optional[dict[str, Any]] = None,
|
||||
) -> Any:
|
||||
current_schema_extra = schema_extra or {}
|
||||
|
||||
if include is not None:
|
||||
warnings.warn(INCLUDE_DEPRECATION_MSG, DeprecationWarning, stacklevel=2)
|
||||
|
||||
# Extract possible alias settings from schema_extra so we can control precedence
|
||||
schema_validation_alias = current_schema_extra.pop("validation_alias", None)
|
||||
schema_serialization_alias = current_schema_extra.pop("serialization_alias", None)
|
||||
|
||||
@@ -67,3 +67,13 @@ def test_exclude():
|
||||
assert "id" in dict_representation
|
||||
assert "name" in dict_representation
|
||||
assert "value" not in dict_representation
|
||||
|
||||
|
||||
def test_include_is_deprecated():
|
||||
with pytest.warns(
|
||||
DeprecationWarning,
|
||||
match="`include` is deprecated and does nothing. It will be removed, use `exclude` instead",
|
||||
):
|
||||
|
||||
class Model(SQLModel):
|
||||
values: list[int] = Field(include=True)
|
||||
Reference in New Issue
Block a user