Atualizando para 0.18.0#

Changelog: 0.18.0

  • Nessa versão mudamos a forma como decorators de handlers HTTP são escritos. Essa forma é incompatível com a forma anterior. A migração é simples e resolve também um conflito grave no uso de múltiplos decorators em um mesmo handler.

Se antes você tinha um handler escrito dessa forma:

def my_handler_decorator(handler):
    async def _wrapper(wrapper: RequestWrapper):
        # Código principal do decorator vem aqui
        return await call_http_handler(wrapper.http_request, handler)

    return _wrapper

Agora ele deve ser escrito dess forma:

from asyncowker.decorators import wraps

def my_handler_decorator(handler):
    @wraps(handler)
    async def _wrapper(wrapper: RequestWrapper):
        # Código principal do decorator vem aqui
        return await call_http_handler(wrapper.http_request, handler)

    return _wrapper

Repare que a migração envolve apenas adicionar um decorator asyncworker.decorators.wraps() em volta da inner function retornada pelo seu decorator.

Com essa modificação, agora é possivel ter múltiplos decorators que dependem da assinatura original (como é o casdo do asyncworker.http.decorators.parse_path()) aplicados ao handler mesmo tempo.