33import builtins
44import ipaddress
55import uuid
6+ import warnings
67import weakref
78from collections .abc import Mapping , Sequence , Set
89from datetime import date , datetime , time , timedelta
1112from pathlib import Path
1213from typing import (
1314 TYPE_CHECKING ,
15+ Annotated ,
1416 Any ,
1517 Callable ,
1618 ClassVar ,
8991]
9092OnDeleteType = Literal ["CASCADE" , "SET NULL" , "RESTRICT" ]
9193
94+ REGEX_PARAM_DEPRECATION_MSG = (
95+ "The `regex` parameter is deprecated. \n Use `pattern` parameter instead."
96+ )
97+
9298
9399def __dataclass_transform__ (
94100 * ,
@@ -227,7 +233,10 @@ def Field(
227233 min_length : Optional [int ] = None ,
228234 max_length : Optional [int ] = None ,
229235 allow_mutation : bool = True ,
230- regex : Optional [str ] = None ,
236+ regex : Annotated [
237+ Optional [str ],
238+ deprecated (REGEX_PARAM_DEPRECATION_MSG ),
239+ ] = None ,
231240 pattern : Optional [str ] = None ,
232241 discriminator : Optional [str ] = None ,
233242 repr : bool = True ,
@@ -271,7 +280,10 @@ def Field(
271280 min_length : Optional [int ] = None ,
272281 max_length : Optional [int ] = None ,
273282 allow_mutation : bool = True ,
274- regex : Optional [str ] = None ,
283+ regex : Annotated [
284+ Optional [str ],
285+ deprecated (REGEX_PARAM_DEPRECATION_MSG ),
286+ ] = None ,
275287 pattern : Optional [str ] = None ,
276288 discriminator : Optional [str ] = None ,
277289 repr : bool = True ,
@@ -324,7 +336,10 @@ def Field(
324336 min_length : Optional [int ] = None ,
325337 max_length : Optional [int ] = None ,
326338 allow_mutation : bool = True ,
327- regex : Optional [str ] = None ,
339+ regex : Annotated [
340+ Optional [str ],
341+ deprecated (REGEX_PARAM_DEPRECATION_MSG ),
342+ ] = None ,
328343 pattern : Optional [str ] = None ,
329344 discriminator : Optional [str ] = None ,
330345 repr : bool = True ,
@@ -358,7 +373,10 @@ def Field(
358373 min_length : Optional [int ] = None ,
359374 max_length : Optional [int ] = None ,
360375 allow_mutation : bool = True ,
361- regex : Optional [str ] = None ,
376+ regex : Annotated [
377+ Optional [str ],
378+ deprecated (REGEX_PARAM_DEPRECATION_MSG ),
379+ ] = None ,
362380 pattern : Optional [str ] = None ,
363381 discriminator : Optional [str ] = None ,
364382 repr : bool = True ,
@@ -375,6 +393,14 @@ def Field(
375393 schema_extra : Optional [dict [str , Any ]] = None ,
376394) -> Any :
377395 current_schema_extra = schema_extra or {}
396+
397+ if regex :
398+ warnings .warn (
399+ REGEX_PARAM_DEPRECATION_MSG ,
400+ DeprecationWarning ,
401+ stacklevel = 2 ,
402+ )
403+
378404 # Extract possible alias settings from schema_extra so we can control precedence
379405 schema_validation_alias = current_schema_extra .pop ("validation_alias" , None )
380406 schema_serialization_alias = current_schema_extra .pop ("serialization_alias" , None )
0 commit comments