"""Decorator exercises"""


def call_logger(func):
    """Return a new function that calls func and prints when it was called."""


def jsonify(func):
    """Decorate function to JSON-encode return value."""


def groot(func):
    """Return function which prints 'Groot' (ignore decoratee)."""


def four(func):
    """Return 4 (ignore decorated function)."""


def hide_errors(func):
    """Trap and ignore non-exiting errors."""


def catch_all(func):
    """Trap non-exiting errors and ask user if we should ignore."""


def count_calls(func):
    """Pass call counts into first argument to the function."""


def make_partial(func):
    """Returns a new partially-evaluated function."""
