def decorate(decorator):
    """Simple decorator to turn functions into well-behaved decorators.

    This is used to emulate ``functools.wraps``, which is only available
    since Python 2.5.

    Borrowed from Python's wiki:
    http://wiki.python.org/moin/PythonDecoratorLibrary
    """
    def new_decorator(f):
        g = decorator(f)
        g.__name__ = f.__name__
        g.__doc__ = f.__doc__
        g.__dict__.update(f.__dict__)

        return g

    new_decorator.__name__ = decorator.__name__
    new_decorator.__doc__ = decorator.__doc__
    new_decorator.__dict__.update(decorator.__dict__)

    return new_decorator