From fc23e73c8e4163fe34623a71054cfe53d39c31e6 Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Thu, 12 Nov 2020 10:17:13 +0100 Subject: [PATCH] Proper syntax for decorators with arguments --- src/sage/misc/cachefunc.pyx | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/sage/misc/cachefunc.pyx b/src/sage/misc/cachefunc.pyx index 3454c0bd54d..828b28f41e5 100644 --- a/src/sage/misc/cachefunc.pyx +++ b/src/sage/misc/cachefunc.pyx @@ -1243,8 +1243,11 @@ cdef class CachedFunction(object): for ((args,kwargs), val) in P(arglist2): self.set_cache(val, *args, **kwargs) -def cached_function(func, classmethod=False, name=None, key=None, do_pickle=None): - return decorate(func, CachedFunction(func, classmethod=classmethod, name=name, key=key, do_pickle=do_pickle)) + +def cached_function(classmethod=False, name=None, key=None, do_pickle=None): + def deco(func): + return decorate(func, CachedFunction(func, classmethod=classmethod, name=name, key=key, do_pickle=do_pickle)) + return deco cdef class WeakCachedFunction(CachedFunction): @@ -1433,8 +1436,11 @@ cdef class WeakCachedFunction(CachedFunction): self.cache = CachedWeakValueDictionary(**kwds) -def weak_cached_function(func, classmethod=False, name=None, key=None, **kwds): - return decorate(func, WeakCachedFunction(func, classmethod=classmethod, name=name, key=key, **kwds)) +def weak_cached_function(classmethod=False, name=None, key=None, **kwds): + def deco(func) + return decorate(func, WeakCachedFunction(func, classmethod=classmethod, name=name, key=key, **kwds)) + return deco + class CachedMethodPickle(object): """ @@ -3304,8 +3310,11 @@ cdef class CachedInParentMethod(CachedMethod): pass return Caller -def cached_in_parent_method(func, name=None, key=None, do_pickle=None): - return decorate(func, CachedInParentMethod(func, name, key, do_pickle)) + +def cached_in_parent_method(name=None, key=None, do_pickle=None): + def deco(func): + return decorate(func, CachedInParentMethod(func, name, key, do_pickle)) + return deco class FileCache(object):