ExpertiDict

Python · Intermediário · Inglês · Técnico

wraps

/ɹæps/substantivo

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 novo

Exemplos

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

Veja também

Todos os termos de Python