I could turn:
def make_money():
blockchain_pyramid_scheme()
into: @with_jazz_hands
def make_money():
blockchain_pyramid_scheme()
or equivalently: def make_money(*args, **kwargs):
with_jazz_hands(make_money_impl, *args, **kwargs)
def make_money_impl():
blockchain_pyramid_scheme()
Both ways wrap with_jazz_hands around make_money without altering the call sites of make_money.