@@ -269,11 +269,22 @@ def rec_map_array_container(
269
269
270
270
271
271
def mapped_over_array_containers (
272
- f : Callable [[Any ], Any ]) -> Callable [[ArrayOrContainerT ], ArrayOrContainerT ]:
272
+ f : Optional [Callable [[Any ], Any ]] = None ,
273
+ leaf_class : Optional [type ] = None ) -> Union [
274
+ Callable [[ArrayOrContainerT ], ArrayOrContainerT ],
275
+ Callable [
276
+ [Callable [[Any ], Any ]],
277
+ Callable [[ArrayOrContainerT ], ArrayOrContainerT ]]]:
273
278
"""Decorator around :func:`rec_map_array_container`."""
274
- wrapper = partial (rec_map_array_container , f )
275
- update_wrapper (wrapper , f )
276
- return wrapper
279
+ def decorator (g : Callable [[Any ], Any ]) -> Callable [
280
+ [ArrayOrContainerT ], ArrayOrContainerT ]:
281
+ wrapper = partial (rec_map_array_container , g , leaf_class = leaf_class )
282
+ update_wrapper (wrapper , g )
283
+ return wrapper
284
+ if f is not None :
285
+ return decorator (f )
286
+ else :
287
+ return decorator
277
288
278
289
279
290
def rec_multimap_array_container (
@@ -292,15 +303,23 @@ def rec_multimap_array_container(
292
303
293
304
294
305
def multimapped_over_array_containers (
295
- f : Callable [..., Any ]) -> Callable [..., Any ]:
306
+ f : Optional [Callable [..., Any ]] = None ,
307
+ leaf_class : Optional [type ] = None ) -> Union [
308
+ Callable [..., Any ],
309
+ Callable [[Callable [..., Any ]], Callable [..., Any ]]]:
296
310
"""Decorator around :func:`rec_multimap_array_container`."""
297
- # can't use functools.partial, because its result is insufficiently
298
- # function-y to be used as a method definition.
299
- def wrapper (* args : Any ) -> Any :
300
- return rec_multimap_array_container (f , * args )
311
+ def decorator (g : Callable [..., Any ]) -> Callable [..., Any ]:
312
+ # can't use functools.partial, because its result is insufficiently
313
+ # function-y to be used as a method definition.
314
+ def wrapper (* args : Any ) -> Any :
315
+ return rec_multimap_array_container (g , * args , leaf_class = leaf_class )
316
+ update_wrapper (wrapper , g )
317
+ return wrapper
318
+ if f is not None :
319
+ return decorator (f )
320
+ else :
321
+ return decorator
301
322
302
- update_wrapper (wrapper , f )
303
- return wrapper
304
323
305
324
# }}}
306
325
0 commit comments