|
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 |
@@ -207,6 +208,7 @@ def Field( |
207 | 208 | *, |
208 | 209 | default_factory: Optional[NoArgAnyCallable] = None, |
209 | 210 | alias: Optional[str] = None, |
| 211 | + alias_priority: Optional[int] = None, |
210 | 212 | validation_alias: Optional[str] = None, |
211 | 213 | serialization_alias: Optional[str] = None, |
212 | 214 | title: Optional[str] = None, |
@@ -250,6 +252,7 @@ def Field( |
250 | 252 | *, |
251 | 253 | default_factory: Optional[NoArgAnyCallable] = None, |
252 | 254 | alias: Optional[str] = None, |
| 255 | + alias_priority: Optional[int] = None, |
253 | 256 | validation_alias: Optional[str] = None, |
254 | 257 | serialization_alias: Optional[str] = None, |
255 | 258 | title: Optional[str] = None, |
@@ -302,6 +305,7 @@ def Field( |
302 | 305 | *, |
303 | 306 | default_factory: Optional[NoArgAnyCallable] = None, |
304 | 307 | alias: Optional[str] = None, |
| 308 | + alias_priority: Optional[int] = None, |
305 | 309 | validation_alias: Optional[str] = None, |
306 | 310 | serialization_alias: Optional[str] = None, |
307 | 311 | title: Optional[str] = None, |
@@ -335,6 +339,7 @@ def Field( |
335 | 339 | *, |
336 | 340 | default_factory: Optional[NoArgAnyCallable] = None, |
337 | 341 | alias: Optional[str] = None, |
| 342 | + alias_priority: Optional[int] = None, |
338 | 343 | validation_alias: Optional[str] = None, |
339 | 344 | serialization_alias: Optional[str] = None, |
340 | 345 | title: Optional[str] = None, |
@@ -371,11 +376,21 @@ def Field( |
371 | 376 | schema_extra: Optional[dict[str, Any]] = None, |
372 | 377 | ) -> Any: |
373 | 378 | current_schema_extra = schema_extra or {} |
| 379 | + |
| 380 | + for param_name in ( |
| 381 | + "alias_priority", |
| 382 | + ): |
| 383 | + if param_name in current_schema_extra: |
| 384 | + msg = f"Pass `{param_name}` parameter directly to Field instead of passing it via `schema_extra`" |
| 385 | + warnings.warn(msg, DeprecationWarning, stacklevel=2) |
| 386 | + |
374 | 387 | # Extract possible alias settings from schema_extra so we can control precedence |
375 | 388 | schema_validation_alias = current_schema_extra.pop("validation_alias", None) |
376 | 389 | schema_serialization_alias = current_schema_extra.pop("serialization_alias", None) |
| 390 | + current_alias_priority = alias_priority or current_schema_extra.pop("alias_priority", None) |
377 | 391 | field_info_kwargs = { |
378 | 392 | "alias": alias, |
| 393 | + "alias_priority": current_alias_priority, |
379 | 394 | "title": title, |
380 | 395 | "description": description, |
381 | 396 | "exclude": exclude, |
|
0 commit comments