|
3 | 3 | import builtins |
4 | 4 | import ipaddress |
5 | 5 | import uuid |
| 6 | +import warnings |
6 | 7 | import weakref |
7 | 8 | from collections.abc import Mapping, Sequence, Set |
8 | 9 | from datetime import date, datetime, time, timedelta |
|
11 | 12 | from pathlib import Path |
12 | 13 | from typing import ( |
13 | 14 | TYPE_CHECKING, |
| 15 | + Annotated, |
14 | 16 | Any, |
15 | 17 | Callable, |
16 | 18 | ClassVar, |
|
89 | 91 | ] |
90 | 92 | OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"] |
91 | 93 |
|
| 94 | +INCLUDE_DEPRECATION_MSG = "`include` is deprecated and does nothing. It will be removed, use `exclude` instead" |
| 95 | + |
92 | 96 |
|
93 | 97 | def __dataclass_transform__( |
94 | 98 | *, |
@@ -212,7 +216,10 @@ def Field( |
212 | 216 | title: Optional[str] = None, |
213 | 217 | description: Optional[str] = None, |
214 | 218 | exclude: Union[bool, None] = None, |
215 | | - include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, |
| 219 | + include: Annotated[ |
| 220 | + Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any], |
| 221 | + deprecated(INCLUDE_DEPRECATION_MSG), |
| 222 | + ] = None, |
216 | 223 | const: Optional[bool] = None, |
217 | 224 | gt: Optional[float] = None, |
218 | 225 | ge: Optional[float] = None, |
@@ -255,7 +262,10 @@ def Field( |
255 | 262 | title: Optional[str] = None, |
256 | 263 | description: Optional[str] = None, |
257 | 264 | exclude: Union[bool, None] = None, |
258 | | - include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, |
| 265 | + include: Annotated[ |
| 266 | + Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any], |
| 267 | + deprecated(INCLUDE_DEPRECATION_MSG), |
| 268 | + ] = None, |
259 | 269 | const: Optional[bool] = None, |
260 | 270 | gt: Optional[float] = None, |
261 | 271 | ge: Optional[float] = None, |
@@ -307,7 +317,10 @@ def Field( |
307 | 317 | title: Optional[str] = None, |
308 | 318 | description: Optional[str] = None, |
309 | 319 | exclude: Union[bool, None] = None, |
310 | | - include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, |
| 320 | + include: Annotated[ |
| 321 | + Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any], |
| 322 | + deprecated(INCLUDE_DEPRECATION_MSG), |
| 323 | + ] = None, |
311 | 324 | const: Optional[bool] = None, |
312 | 325 | gt: Optional[float] = None, |
313 | 326 | ge: Optional[float] = None, |
@@ -340,7 +353,10 @@ def Field( |
340 | 353 | title: Optional[str] = None, |
341 | 354 | description: Optional[str] = None, |
342 | 355 | exclude: Union[bool, None] = None, |
343 | | - include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, |
| 356 | + include: Annotated[ |
| 357 | + Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any], |
| 358 | + deprecated(INCLUDE_DEPRECATION_MSG), |
| 359 | + ] = None, |
344 | 360 | const: Optional[bool] = None, |
345 | 361 | gt: Optional[float] = None, |
346 | 362 | ge: Optional[float] = None, |
@@ -371,6 +387,10 @@ def Field( |
371 | 387 | schema_extra: Optional[dict[str, Any]] = None, |
372 | 388 | ) -> Any: |
373 | 389 | current_schema_extra = schema_extra or {} |
| 390 | + |
| 391 | + if include is not None: |
| 392 | + warnings.warn(INCLUDE_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) |
| 393 | + |
374 | 394 | # Extract possible alias settings from schema_extra so we can control precedence |
375 | 395 | schema_validation_alias = current_schema_extra.pop("validation_alias", None) |
376 | 396 | schema_serialization_alias = current_schema_extra.pop("serialization_alias", None) |
|
0 commit comments