@@ -100,7 +100,13 @@ impl FunctionBeforeValidator {
100100 state : & ' s mut ValidationState < ' _ , ' py > ,
101101 ) -> ValResult < PyObject > {
102102 let r = if self . info_arg {
103- let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , self . field_name . clone ( ) ) ;
103+ let field_name = state
104+ . extra ( )
105+ . field_name
106+ . clone ( )
107+ . map ( Bound :: unbind)
108+ . or ( self . field_name . clone ( ) ) ;
109+ let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , field_name) ;
104110 self . func . call1 ( py, ( input. to_object ( py) ?, info) )
105111 } else {
106112 self . func . call1 ( py, ( input. to_object ( py) ?, ) )
@@ -169,7 +175,13 @@ impl FunctionAfterValidator {
169175 ) -> ValResult < PyObject > {
170176 let v = call ( input, state) ?;
171177 let r = if self . info_arg {
172- let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , self . field_name . clone ( ) ) ;
178+ let field_name = state
179+ . extra ( )
180+ . field_name
181+ . clone ( )
182+ . map ( Bound :: unbind)
183+ . or ( self . field_name . clone ( ) ) ;
184+ let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , field_name) ;
173185 self . func . call1 ( py, ( v, info) )
174186 } else {
175187 self . func . call1 ( py, ( v, ) )
@@ -258,7 +270,13 @@ impl Validator for FunctionPlainValidator {
258270 state : & mut ValidationState < ' _ , ' py > ,
259271 ) -> ValResult < PyObject > {
260272 let r = if self . info_arg {
261- let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , self . field_name . clone ( ) ) ;
273+ let field_name = state
274+ . extra ( )
275+ . field_name
276+ . clone ( )
277+ . map ( Bound :: unbind)
278+ . or ( self . field_name . clone ( ) ) ;
279+ let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , field_name) ;
262280 self . func . call1 ( py, ( input. to_object ( py) ?, info) )
263281 } else {
264282 self . func . call1 ( py, ( input. to_object ( py) ?, ) )
@@ -322,7 +340,13 @@ impl FunctionWrapValidator {
322340 state : & mut ValidationState < ' _ , ' py > ,
323341 ) -> ValResult < PyObject > {
324342 let r = if self . info_arg {
325- let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , self . field_name . clone ( ) ) ;
343+ let field_name = state
344+ . extra ( )
345+ . field_name
346+ . clone ( )
347+ . map ( Bound :: unbind)
348+ . or ( self . field_name . clone ( ) ) ;
349+ let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , field_name) ;
326350 self . func . call1 ( py, ( input. to_object ( py) ?, handler, info) )
327351 } else {
328352 self . func . call1 ( py, ( input. to_object ( py) ?, handler) )
0 commit comments