On Thu, Aug 12, 2010 at 12:12 AM, Simon Cross <hodgestar+python...@gmail.com> wrote: > Yes. But it's more common for the original function to have be > modified in some way. e.g.: > > def autodoc(f): > f.__doc__ += document_args(f) > return f > > @autodoc > def f(x, y): > """Add two numbers""" > return x + y > > And then f.__wrapped__ is not particularly useful because the original > function no longer exists and odd things will happen. For example, in > the code above autodoc(f.__wrapped__).__doc__ will not equal > f.__doc__.
There's no call to wraps or update_wrapper here, so f.__wrapped__ won't exist. > I guess my description of the problem wasn't clear. I meant: > > def _debug(*args, **kwargs) > print args, kwargs > > def mock(f): > return _debug > > @mock > def plus(a, b): > return a + b > > @mock > def prod(a, b): > return a * b Again, without any calls to wraps or update_wrapper, plus.__wrapped__ and prod.__wrapped__ won't exist. However, as I noted before, these kinds of scenario are the reason we decided that building this feature directly into the decorator machinery wasn't a good idea. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com