12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # -*- coding: utf-8 -*-
- """
- celery.contrib.sphinx
- =====================
- Sphinx documentation plugin
- **Usage**
- Add the extension to your :file:`docs/conf.py` configuration module:
- .. code-block:: python
- extensions = (...,
- 'celery.contrib.sphinx')
- If you would 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
- try:
- from inspect import formatargspec, getfullargspec as getargspec
- except ImportError: # Py2
- from inspect import formatargspec, getargspec # noqa
- from sphinx.domains.python import PyModulelevel
- from sphinx.ext.autodoc import FunctionDocumenter
- from celery.app.task import BaseTask
- class TaskDocumenter(FunctionDocumenter):
- 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__')
- if wrapped is not None:
- argspec = getargspec(wrapped)
- fmt = formatargspec(*argspec)
- fmt = fmt.replace('\\', '\\\\')
- return fmt
- return ''
- def document_members(self, all_members=False):
- pass
- class TaskDirective(PyModulelevel):
- def get_signature_prefix(self, sig):
- return self.env.config.celery_task_prefix
- def setup(app):
- app.add_autodocumenter(TaskDocumenter)
- app.domains['py'].directives['task'] = TaskDirective
- app.add_config_value('celery_task_prefix', '(task)', True)
|