133133 bound = "HookFactory[StructureHook] | ExtendedStructureHookFactory[Converter]" ,
134134)
135135
136+ UnstructureHookT = TypeVar ("UnstructureHookT" , bound = UnstructureHook )
137+ StructureHookT = TypeVar ("StructureHookT" , bound = StructureHook )
138+
136139
137140class UnstructureStrategy (Enum ):
138141 """`attrs` classes unstructuring strategies."""
@@ -308,7 +311,7 @@ def unstruct_strat(self) -> UnstructureStrategy:
308311 )
309312
310313 @overload
311- def register_unstructure_hook (self ) -> Callable [[ UnstructureHook ], None ] : ...
314+ def register_unstructure_hook (self , cls : UnstructureHookT ) -> UnstructureHookT : ...
312315
313316 @overload
314317 def register_unstructure_hook (self , cls : Any , func : UnstructureHook ) -> None : ...
@@ -335,7 +338,7 @@ def register_unstructure_hook(
335338 cls = next (iter (sig .parameters .values ())).annotation
336339 self .register_unstructure_hook (cls , func )
337340
338- return None
341+ return func
339342
340343 if attrs_has (cls ):
341344 resolve_types (cls )
@@ -440,10 +443,10 @@ def get_unstructure_hook(
440443 )
441444
442445 @overload
443- def register_structure_hook (self ) -> Callable [[ StructureHook ], None ] : ...
446+ def register_structure_hook (self , cl : StructureHookT ) -> StructureHookT : ...
444447
445448 @overload
446- def register_structure_hook (self , cl : Any , func : StructuredValue ) -> None : ...
449+ def register_structure_hook (self , cl : Any , func : StructureHook ) -> None : ...
447450
448451 def register_structure_hook (
449452 self , cl : Any , func : StructureHook | None = None
@@ -469,7 +472,7 @@ def register_structure_hook(
469472 func = cl
470473 sig = signature (func )
471474 self .register_structure_hook (sig .return_annotation , func )
472- return
475+ return func
473476
474477 if attrs_has (cl ):
475478 resolve_types (cl )
@@ -481,6 +484,7 @@ def register_structure_hook(
481484 self ._structure_func .register_func_list ([(lambda t : t is cl , func )])
482485 else :
483486 self ._structure_func .register_cls_list ([(cl , func )])
487+ return None
484488
485489 def register_structure_hook_func (
486490 self , check_func : Predicate , func : StructureHook
0 commit comments