Prechádzať zdrojové kódy

Task decorator now preserves docstring, even if lazy. Closes #1636

Ask Solem 11 rokov pred
rodič
commit
7ea24d392e
2 zmenil súbory, kde vykonal 7 pridanie a 2 odobranie
  1. 2 1
      celery/app/base.py
  2. 5 1
      celery/local.py

+ 2 - 1
celery/app/base.py

@@ -202,7 +202,8 @@ class Celery(object):
                     ret = self._task_from_fun(fun, **opts)
                 else:
                     # return a proxy object that evaluates on first use
-                    ret = PromiseProxy(self._task_from_fun, (fun, ), opts)
+                    ret = PromiseProxy(self._task_from_fun, (fun, ), opts,
+                                       __doc__=fun.__doc__)
                     self._pending.append(ret)
                 if _filt:
                     return _filt(ret)

+ 5 - 1
celery/local.py

@@ -56,12 +56,16 @@ class Proxy(object):
     # Code stolen from werkzeug.local.Proxy.
     __slots__ = ('__local', '__args', '__kwargs', '__dict__')
 
-    def __init__(self, local, args=None, kwargs=None, name=None):
+    def __init__(self, local,
+                 args=None, kwargs=None, name=None, __doc__=None):
         object.__setattr__(self, '_Proxy__local', local)
         object.__setattr__(self, '_Proxy__args', args or ())
         object.__setattr__(self, '_Proxy__kwargs', kwargs or {})
         if name is not None:
             object.__setattr__(self, '__custom_name__', name)
+        if __doc__ is not None:
+            object.__setattr__(self, '__doc__', __doc__)
+
 
     @_default_cls_attr('name', str, __name__)
     def __name__(self):