Skip to content

Commit

Permalink
Add broken transformer.
Browse files Browse the repository at this point in the history
  • Loading branch information
jaraco committed Aug 1, 2024
1 parent 5f223a1 commit f90b297
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions jaraco/functools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -639,3 +639,27 @@ def splat(func):
{'msg': 'unknown', 'code': 0}
"""
return functools.wraps(func)(functools.partial(_splat_inner, func=func))


def transform_params(**replacements):
"""
Decorate a function with replacement functions for parameters.
>>> none_as_colon = lambda val: val or ':'
>>> transform_params(sep=none_as_colon)(print)('foo', 'bar', sep=None)
foo:bar
"""

def wrap(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
sig = inspect.signature(func)
bsig = sig.bind(*args, **kwargs)
args = bsig.arguments
for arg in replacements:
args[arg] = replacements[arg](args[arg])
return func(**args)

return wrapper

return wrap

0 comments on commit f90b297

Please sign in to comment.