Python · Intermediário · Inglês · Técnico
wraps
Decorator do functools, usado dentro de outros decorators, que copia o nome, a docstring e demais metadados da função original para a função que a envolve.
Onde usar
Sem ele, uma função decorada passa a se chamar 'wrapper' em logs, tracebacks e na ajuda, o que atrapalha a depuração. Num review, decorators sem wraps costumam ser apontados.
Em código
from functools import wraps
def log(f):
@wraps(f)
def novo(*a, **k):
return f(*a, **k)
return novoExemplos
Add functools.wraps so the name isn't lost.
Adicione functools.wraps para o nome não se perder.
Without wraps, every function shows up as wrapper in the logs.
Sem wraps, toda função aparece como wrapper nos logs.
Cuidado
O wraps não muda o comportamento da função, só os metadados; ele deve ficar na função interna, recebendo a original como argumento.
Sinônimos
functools.wraps