A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2006-April/064627.html below:

[Python-Dev] Adding functools.decorator

[Python-Dev] Adding functools.decoratorGeorg Brandl g.brandl at gmx.net
Sun Apr 30 17:23:53 CEST 2006
Nick Coghlan wrote:
> Collin Winters has done the work necessary to rename PEP 309's functional 
> module to functools and posted the details to SF [1].
> 
> I'd like to take that patch, tweak it so the C module is built as _functools 
> rather than functools, and then add a functools.py consisting of:

I'm all for it. (You could integrate the C version of "decorator" from my SF
patch, but I think Python-only is enough).

> from _functools import * # Pick up functools.partial
> 
> def _update_wrapper(decorated, func, deco_func):
>      # Support naive introspection
>      decorated.__module__ = func.__module__
>      decorated.__name__ = func.__name__
>      decorated.__doc__ = func.__doc__
>      decorated.__dict__.update(func.__dict__)
>      # Provide access to decorator and original function
>      decorated.__decorator__ = deco_func
>      decorated.__decorates__ = func
> 
> def decorator(deco_func):
>      """Wrap a function as an introspection friendly decorator function"""
>      def wrapper(func):
>          decorated = deco_func(func)
>          if decorated is func:
>              return func
>          _update_wrapper(decorated, func, deco_func)
>          return decorated
>      # Manually make this decorator introspection friendly
>      _update_wrapper(wrapper, deco_func, decorator)
>      return wrapper
> 
> After typing those four lines of boilerplate to support naive introspection 
> out in full several times for contextlib related decorators, I can testify 
> that doing it by hand gets old really fast :)

Agreed.

Georg

More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4