summaryrefslogtreecommitdiff
path: root/decorators.py
diff options
context:
space:
mode:
authorAurelien Campeas <aurelien.campeas@logilab.fr>2010-11-26 18:03:21 +0100
committerAurelien Campeas <aurelien.campeas@logilab.fr>2010-11-26 18:03:21 +0100
commitd76f9681147d4b4f676ed044bd5165aec180642b (patch)
tree8a2ab92fc640445d90ba9fcf5de206223a4ac622 /decorators.py
parent312f32abac70c8fd3e1fe13b75dcb61121dd8808 (diff)
downloadlogilab-common-d76f9681147d4b4f676ed044bd5165aec180642b.tar.gz
[decorators] cached try to keep the original function name
Diffstat (limited to 'decorators.py')
-rw-r--r--decorators.py25
1 files changed, 16 insertions, 9 deletions
diff --git a/decorators.py b/decorators.py
index de488d9..2218087 100644
--- a/decorators.py
+++ b/decorators.py
@@ -15,12 +15,7 @@
#
# You should have received a copy of the GNU Lesser General Public License along
# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
-"""A few useful function/method decorators.
-
-
-
-
-"""
+""" A few useful function/method decorators. """
__docformat__ = "restructuredtext en"
from types import MethodType
@@ -43,7 +38,11 @@ def cached(callableobj, keyarg=None):
value = callableobj(self, *args)
setattr(self, cache, value)
return value
- cache_wrapper1.__doc__ = callableobj.__doc__
+ try:
+ cache_wrapper1.__doc__ = callableobj.__doc__
+ cache_wrapper1.func_name = callableobj.func_name
+ except:
+ pass
return cache_wrapper1
elif keyarg:
@@ -64,7 +63,11 @@ def cached(callableobj, keyarg=None):
#print 'miss', self, cache, key
_cache[key] = callableobj(self, *args, **kwargs)
return _cache[key]
- cache_wrapper2.__doc__ = callableobj.__doc__
+ try:
+ cache_wrapper2.__doc__ = callableobj.__doc__
+ cache_wrapper2.func_name = callableobj.func_name
+ except:
+ pass
return cache_wrapper2
def cache_wrapper3(self, *args):
@@ -82,7 +85,11 @@ def cached(callableobj, keyarg=None):
#print 'miss'
_cache[args] = callableobj(self, *args)
return _cache[args]
- cache_wrapper3.__doc__ = callableobj.__doc__
+ try:
+ cache_wrapper3.__doc__ = callableobj.__doc__
+ cache_wrapper3.func_name = callableobj.func_name
+ except:
+ pass
return cache_wrapper3
def clear_cache(obj, funcname):