This document describes the current stable version of Celery (4.0). For development docs, go here.

Source code for celery.contrib.sphinx

# -*- coding: utf-8 -*-
"""Sphinx documentation plugin used to document tasks.



Add the extension to your :file:`docs/` configuration module:

.. code-block:: python

    extensions = (...,

If you'd like to change the prefix for tasks in reference documentation
then you can change the ``celery_task_prefix`` configuration value:

.. code-block:: python

    celery_task_prefix = '(task)'  # < default

With the extension installed `autodoc` will automatically find
task decorated objects and generate the correct (as well as
add a ``(task)`` prefix), and you can also refer to the tasks
using `:task:proj.tasks.add` syntax.

Use ``.. autotask::`` to manually document a task.
from __future__ import absolute_import, unicode_literals
from inspect import formatargspec
from import PyModulelevel
from sphinx.ext.autodoc import FunctionDocumenter
from import BaseTask
from celery.five import getfullargspec

[docs]class TaskDocumenter(FunctionDocumenter): """Document task definitions.""" objtype = 'task' member_order = 11 @classmethod def can_document_member(cls, member, membername, isattr, parent): return isinstance(member, BaseTask) and getattr(member, '__wrapped__') def format_args(self): wrapped = getattr(self.object, '__wrapped__', None) if wrapped is not None: argspec = getfullargspec(wrapped) fmt = formatargspec(*argspec) fmt = fmt.replace('\\', '\\\\') return fmt return '' def document_members(self, all_members=False): pass
[docs]class TaskDirective(PyModulelevel): """Sphinx task directive.""" def get_signature_prefix(self, sig): return self.env.config.celery_task_prefix
[docs]def setup(app): """Setup Sphinx extension.""" app.add_autodocumenter(TaskDocumenter)['py'].directives['task'] = TaskDirective app.add_config_value('celery_task_prefix', '(task)', True)