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
@@ -228,6 +229,7 @@ def Field(
228229 max_length : Optional [int ] = None ,
229230 allow_mutation : bool = True ,
230231 regex : Optional [str ] = None ,
232+ strict : Optional [bool ] = None ,
231233 discriminator : Optional [str ] = None ,
232234 repr : bool = True ,
233235 primary_key : Union [bool , UndefinedType ] = Undefined ,
@@ -271,6 +273,7 @@ def Field(
271273 max_length : Optional [int ] = None ,
272274 allow_mutation : bool = True ,
273275 regex : Optional [str ] = None ,
276+ strict : Optional [bool ] = None ,
274277 discriminator : Optional [str ] = None ,
275278 repr : bool = True ,
276279 primary_key : Union [bool , UndefinedType ] = Undefined ,
@@ -323,6 +326,7 @@ def Field(
323326 max_length : Optional [int ] = None ,
324327 allow_mutation : bool = True ,
325328 regex : Optional [str ] = None ,
329+ strict : Optional [bool ] = None ,
326330 discriminator : Optional [str ] = None ,
327331 repr : bool = True ,
328332 sa_column : Union [Column [Any ], UndefinedType ] = Undefined ,
@@ -356,6 +360,7 @@ def Field(
356360 max_length : Optional [int ] = None ,
357361 allow_mutation : bool = True ,
358362 regex : Optional [str ] = None ,
363+ strict : Optional [bool ] = None ,
359364 discriminator : Optional [str ] = None ,
360365 repr : bool = True ,
361366 primary_key : Union [bool , UndefinedType ] = Undefined ,
@@ -371,9 +376,16 @@ def Field(
371376 schema_extra : Optional [dict [str , Any ]] = None ,
372377) -> Any :
373378 current_schema_extra = schema_extra or {}
379+
380+ for param_name in ("strict" ,):
381+ if param_name in current_schema_extra :
382+ msg = f"Pass `{ param_name } ` parameter directly to Field instead of passing it via `schema_extra`"
383+ warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
384+
374385 # Extract possible alias settings from schema_extra so we can control precedence
375386 schema_validation_alias = current_schema_extra .pop ("validation_alias" , None )
376387 schema_serialization_alias = current_schema_extra .pop ("serialization_alias" , None )
388+ current_strict = strict or current_schema_extra .pop ("strict" , None )
377389 field_info_kwargs = {
378390 "alias" : alias ,
379391 "title" : title ,
@@ -395,6 +407,7 @@ def Field(
395407 "max_length" : max_length ,
396408 "allow_mutation" : allow_mutation ,
397409 "regex" : regex ,
410+ "strict" : current_strict ,
398411 "discriminator" : discriminator ,
399412 "repr" : repr ,
400413 "primary_key" : primary_key ,
0 commit comments