133
133
bound = "HookFactory[StructureHook] | ExtendedStructureHookFactory[Converter]" ,
134
134
)
135
135
136
+ UnstructureHookT = TypeVar ("UnstructureHookT" , bound = UnstructureHook )
137
+ StructureHookT = TypeVar ("StructureHookT" , bound = StructureHook )
138
+
136
139
137
140
class UnstructureStrategy (Enum ):
138
141
"""`attrs` classes unstructuring strategies."""
@@ -308,7 +311,7 @@ def unstruct_strat(self) -> UnstructureStrategy:
308
311
)
309
312
310
313
@overload
311
- def register_unstructure_hook (self ) -> Callable [[ UnstructureHook ], None ] : ...
314
+ def register_unstructure_hook (self , cls : UnstructureHookT ) -> UnstructureHookT : ...
312
315
313
316
@overload
314
317
def register_unstructure_hook (self , cls : Any , func : UnstructureHook ) -> None : ...
@@ -335,7 +338,7 @@ def register_unstructure_hook(
335
338
cls = next (iter (sig .parameters .values ())).annotation
336
339
self .register_unstructure_hook (cls , func )
337
340
338
- return None
341
+ return func
339
342
340
343
if attrs_has (cls ):
341
344
resolve_types (cls )
@@ -440,10 +443,10 @@ def get_unstructure_hook(
440
443
)
441
444
442
445
@overload
443
- def register_structure_hook (self ) -> Callable [[ StructureHook ], None ] : ...
446
+ def register_structure_hook (self , cl : StructureHookT ) -> StructureHookT : ...
444
447
445
448
@overload
446
- def register_structure_hook (self , cl : Any , func : StructuredValue ) -> None : ...
449
+ def register_structure_hook (self , cl : Any , func : StructureHook ) -> None : ...
447
450
448
451
def register_structure_hook (
449
452
self , cl : Any , func : StructureHook | None = None
@@ -469,7 +472,7 @@ def register_structure_hook(
469
472
func = cl
470
473
sig = signature (func )
471
474
self .register_structure_hook (sig .return_annotation , func )
472
- return
475
+ return func
473
476
474
477
if attrs_has (cl ):
475
478
resolve_types (cl )
@@ -481,6 +484,7 @@ def register_structure_hook(
481
484
self ._structure_func .register_func_list ([(lambda t : t is cl , func )])
482
485
else :
483
486
self ._structure_func .register_cls_list ([(cl , func )])
487
+ return None
484
488
485
489
def register_structure_hook_func (
486
490
self , check_func : Predicate , func : StructureHook
0 commit comments