def wraps(original_handler):
    """
    Esse decorator faz com que a assinatura da função original
    "suba" até o último decorator, que deverá ser sempre um registrador do
    próprio amqpworker. ex:
    @app.http.get(...)
    @deco1
    @deco2
    async def handler(...)
        pass

    Nesse caso, os decorators `@deco1` e `@deco2` devem, *necessariamente*
    fazer uso desse `@wraps()`
    """

    def _wrap(deco):
        deco.amqpworker_original_annotations = getattr(
            original_handler,
            "amqpworker_original_annotations",
            original_handler.__annotations__,
        )
        deco.amqpworker_original_qualname = getattr(
            original_handler,
            "amqpworker_original_qualname",
            original_handler.__qualname__,
        )
        return deco

    return _wrap
