Browse Source

Sphinx documentation + reference.

Ask Solem 16 years ago
parent
commit
d53bcecf8b

+ 75 - 0
docs/Makefile

@@ -0,0 +1,75 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d .build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html web pickle htmlhelp latex changes linkcheck
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html      to make standalone HTML files"
+	@echo "  pickle    to make pickle files"
+	@echo "  json      to make JSON files"
+	@echo "  htmlhelp  to make HTML files and a HTML help project"
+	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  changes   to make an overview over all changed/added/deprecated items"
+	@echo "  linkcheck to check all external links for integrity"
+
+clean:
+	-rm -rf .build/*
+
+html:
+	mkdir -p .build/html .build/doctrees
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) .build/html
+	@echo
+	@echo "Build finished. The HTML pages are in .build/html."
+
+pickle:
+	mkdir -p .build/pickle .build/doctrees
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) .build/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+web: pickle
+
+json:
+	mkdir -p .build/json .build/doctrees
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) .build/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	mkdir -p .build/htmlhelp .build/doctrees
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) .build/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in .build/htmlhelp."
+
+latex:
+	mkdir -p .build/latex .build/doctrees
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) .build/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in .build/latex."
+	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+	      "run these through (pdf)latex."
+
+changes:
+	mkdir -p .build/changes .build/doctrees
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) .build/changes
+	@echo
+	@echo "The overview file is in .build/changes."
+
+linkcheck:
+	mkdir -p .build/linkcheck .build/doctrees
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) .build/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in .build/linkcheck/output.txt."

+ 88 - 0
docs/_ext/applyxrefs.py

@@ -0,0 +1,88 @@
+"""Adds xref targets to the top of files."""
+
+import sys
+import os
+
+testing = False
+
+DONT_TOUCH = (
+        './index.txt',
+        )
+
+def target_name(fn):
+    if fn.endswith('.txt'):
+        fn = fn[:-4]
+    return '_' + fn.lstrip('./').replace('/', '-')
+
+def process_file(fn, lines):
+    lines.insert(0, '\n')
+    lines.insert(0, '.. %s:\n' % target_name(fn))
+    try:
+        f = open(fn, 'w')
+    except IOError:
+        print("Can't open %s for writing. Not touching it." % fn)
+        return
+    try:
+        f.writelines(lines)
+    except IOError:
+        print("Can't write to %s. Not touching it." % fn)
+    finally:
+        f.close()
+
+def has_target(fn):
+    try:
+        f = open(fn, 'r')
+    except IOError:
+        print("Can't open %s. Not touching it." % fn)
+        return (True, None)
+    readok = True
+    try:
+        lines = f.readlines()
+    except IOError:
+        print("Can't read %s. Not touching it." % fn)
+        readok = False
+    finally:
+        f.close()
+        if not readok:
+            return (True, None)
+
+    #print fn, len(lines)
+    if len(lines) < 1:
+        print("Not touching empty file %s." % fn)
+        return (True, None)
+    if lines[0].startswith('.. _'):
+        return (True, None)
+    return (False, lines)
+
+def main(argv=None):
+    if argv is None:
+        argv = sys.argv
+
+    if len(argv) == 1:
+        argv.extend('.')
+
+    files = []
+    for root in argv[1:]:
+        for (dirpath, dirnames, filenames) in os.walk(root):
+            files.extend([(dirpath, f) for f in filenames])
+    files.sort()
+    files = [os.path.join(p, fn) for p, fn in files if fn.endswith('.txt')]
+    #print files
+
+    for fn in files:
+        if fn in DONT_TOUCH:
+            print("Skipping blacklisted file %s." % fn)
+            continue
+
+        target_found, lines = has_target(fn)
+        if not target_found:
+            if testing:
+                print '%s: %s' % (fn, lines[0]),
+            else:
+                print "Adding xref to %s" % fn
+                process_file(fn, lines)
+        else:
+            print "Skipping %s: already has a xref" % fn
+
+if __name__ == '__main__':
+    sys.exit(main())

+ 105 - 0
docs/_ext/djangodocs.py

@@ -0,0 +1,105 @@
+"""
+Sphinx plugins for Django documentation.
+"""
+
+import docutils.nodes
+import docutils.transforms
+import sphinx
+import sphinx.addnodes
+import sphinx.directives
+import sphinx.environment
+import sphinx.roles
+from docutils import nodes
+
+def setup(app):
+    app.add_crossref_type(
+        directivename = "setting",
+        rolename      = "setting",
+        indextemplate = "pair: %s; setting",
+    )
+    app.add_crossref_type(
+        directivename = "templatetag",
+        rolename      = "ttag",
+        indextemplate = "pair: %s; template tag"
+    )
+    app.add_crossref_type(
+        directivename = "templatefilter",
+        rolename      = "tfilter",
+        indextemplate = "pair: %s; template filter"
+    )
+    app.add_crossref_type(
+        directivename = "fieldlookup",
+        rolename      = "lookup",
+        indextemplate = "pair: %s, field lookup type",
+    )
+    app.add_description_unit(
+        directivename = "django-admin",
+        rolename      = "djadmin",
+        indextemplate = "pair: %s; django-admin command",
+        parse_node    = parse_django_admin_node,
+    )
+    app.add_description_unit(
+        directivename = "django-admin-option",
+        rolename      = "djadminopt",
+        indextemplate = "pair: %s; django-admin command-line option",
+        parse_node    = lambda env, sig, signode: sphinx.directives.parse_option_desc(signode, sig),
+    )
+    app.add_config_value('django_next_version', '0.0', True)
+    app.add_directive('versionadded', parse_version_directive, 1, (1, 1, 1))
+    app.add_directive('versionchanged', parse_version_directive, 1, (1, 1, 1))
+    app.add_transform(SuppressBlockquotes)
+
+def parse_version_directive(name, arguments, options, content, lineno,
+                      content_offset, block_text, state, state_machine):
+    env = state.document.settings.env
+    is_nextversion = env.config.django_next_version == arguments[0]
+    ret = []
+    node = sphinx.addnodes.versionmodified()
+    ret.append(node)
+    if not is_nextversion:
+        if len(arguments) == 1:
+            linktext = 'Please, see the release notes <releases-%s>' % (arguments[0])
+            xrefs = sphinx.roles.xfileref_role('ref', linktext, linktext, lineno, state)
+            node.extend(xrefs[0])
+        node['version'] = arguments[0]
+    else:
+        node['version'] = "Development version"
+    node['type'] = name
+    if len(arguments) == 2:
+        inodes, messages = state.inline_text(arguments[1], lineno+1)
+        node.extend(inodes)
+        if content:
+            state.nested_parse(content, content_offset, node)
+        ret = ret + messages
+    env.note_versionchange(node['type'], node['version'], node, lineno)
+    return ret
+
+                
+class SuppressBlockquotes(docutils.transforms.Transform):
+    """
+    Remove the default blockquotes that encase indented list, tables, etc.
+    """
+    default_priority = 300
+    
+    suppress_blockquote_child_nodes = (
+        docutils.nodes.bullet_list, 
+        docutils.nodes.enumerated_list, 
+        docutils.nodes.definition_list,
+        docutils.nodes.literal_block, 
+        docutils.nodes.doctest_block, 
+        docutils.nodes.line_block, 
+        docutils.nodes.table
+    )
+    
+    def apply(self):
+        for node in self.document.traverse(docutils.nodes.block_quote):
+            if len(node.children) == 1 and isinstance(node.children[0], self.suppress_blockquote_child_nodes):
+                node.replace_self(node.children[0])
+
+
+def parse_django_admin_node(env, sig, signode):
+    command = sig.split(' ')[0]
+    env._django_curr_admin_command = command
+    title = "django-admin.py %s" % sig
+    signode += sphinx.addnodes.desc_name(title, title)
+    return sig

+ 171 - 0
docs/_ext/literals_to_xrefs.py

@@ -0,0 +1,171 @@
+"""
+Runs through a reST file looking for old-style literals, and helps replace them
+with new-style references.
+"""
+
+import re
+import sys
+import shelve
+
+refre = re.compile(r'``([^`\s]+?)``')
+
+ROLES = (
+    'attr',
+    'class',
+    "djadmin",
+    'data',
+    'exc',
+    'file',
+    'func',
+    'lookup',
+    'meth',
+    'mod' ,
+    "djadminopt",
+    "ref",
+    "setting",
+    "term",
+    "tfilter",
+    "ttag",
+    
+    # special
+    "skip"
+)
+
+ALWAYS_SKIP = [
+    "NULL",
+    "True",
+    "False",
+]
+
+def fixliterals(fname):
+    data = open(fname).read()
+    
+    last = 0
+    new = []
+    storage = shelve.open("/tmp/literals_to_xref.shelve")
+    lastvalues = storage.get("lastvalues", {})
+    
+    for m in refre.finditer(data):
+        
+        new.append(data[last:m.start()])
+        last = m.end()
+        
+        line_start = data.rfind("\n", 0, m.start())
+        line_end = data.find("\n", m.end())
+        prev_start = data.rfind("\n", 0, line_start)
+        next_end = data.find("\n", line_end + 1)
+        
+        # Skip always-skip stuff
+        if m.group(1) in ALWAYS_SKIP:
+            new.append(m.group(0))
+            continue
+            
+        # skip when the next line is a title
+        next_line = data[m.end():next_end].strip()
+        if next_line[0] in "!-/:-@[-`{-~" and all(c == next_line[0] for c in next_line):
+            new.append(m.group(0))
+            continue
+        
+        sys.stdout.write("\n"+"-"*80+"\n")
+        sys.stdout.write(data[prev_start+1:m.start()])
+        sys.stdout.write(colorize(m.group(0), fg="red"))
+        sys.stdout.write(data[m.end():next_end])
+        sys.stdout.write("\n\n")
+        
+        replace_type = None
+        while replace_type is None:
+            replace_type = raw_input(
+                colorize("Replace role: ", fg="yellow")
+            ).strip().lower()
+            if replace_type and replace_type not in ROLES:
+                replace_type = None
+        
+        if replace_type == "":
+            new.append(m.group(0))
+            continue
+            
+        if replace_type == "skip":
+            new.append(m.group(0))
+            ALWAYS_SKIP.append(m.group(1))
+            continue
+        
+        default = lastvalues.get(m.group(1), m.group(1))
+        if default.endswith("()") and replace_type in ("class", "func", "meth"):
+            default = default[:-2]        
+        replace_value = raw_input(
+            colorize("Text <target> [", fg="yellow") + default + colorize("]: ", fg="yellow")
+        ).strip()
+        if not replace_value: 
+            replace_value = default
+        new.append(":%s:`%s`" % (replace_type, replace_value))
+        lastvalues[m.group(1)] = replace_value
+    
+    new.append(data[last:])
+    open(fname, "w").write("".join(new))
+    
+    storage["lastvalues"] = lastvalues
+    storage.close()
+    
+#
+# The following is taken from django.utils.termcolors and is copied here to
+# avoid the dependancy.
+#
+
+
+def colorize(text='', opts=(), **kwargs):
+    """
+    Returns your text, enclosed in ANSI graphics codes.
+
+    Depends on the keyword arguments 'fg' and 'bg', and the contents of
+    the opts tuple/list.
+
+    Returns the RESET code if no parameters are given.
+
+    Valid colors:
+        'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'
+
+    Valid options:
+        'bold'
+        'underscore'
+        'blink'
+        'reverse'
+        'conceal'
+        'noreset' - string will not be auto-terminated with the RESET code
+
+    Examples:
+        colorize('hello', fg='red', bg='blue', opts=('blink',))
+        colorize()
+        colorize('goodbye', opts=('underscore',))
+        print colorize('first line', fg='red', opts=('noreset',))
+        print 'this should be red too'
+        print colorize('and so should this')
+        print 'this should not be red'
+    """
+    color_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')
+    foreground = dict([(color_names[x], '3%s' % x) for x in range(8)])
+    background = dict([(color_names[x], '4%s' % x) for x in range(8)])
+
+    RESET = '0'
+    opt_dict = {'bold': '1', 'underscore': '4', 'blink': '5', 'reverse': '7', 'conceal': '8'}
+
+    text = str(text)
+    code_list = []
+    if text == '' and len(opts) == 1 and opts[0] == 'reset':
+        return '\x1b[%sm' % RESET
+    for k, v in kwargs.iteritems():
+        if k == 'fg':
+            code_list.append(foreground[v])
+        elif k == 'bg':
+            code_list.append(background[v])
+    for o in opts:
+        if o in opt_dict:
+            code_list.append(opt_dict[o])
+    if 'noreset' not in opts:
+        text = text + '\x1b[%sm' % RESET
+    return ('\x1b[%sm' % ';'.join(code_list)) + text
+
+if __name__ == '__main__':
+    try:
+        fixliterals(sys.argv[1])
+    except (KeyboardInterrupt, SystemExit):
+        print

+ 196 - 0
docs/conf.py

@@ -0,0 +1,196 @@
+# -*- coding: utf-8 -*-
+#
+# Celery documentation build configuration file, created by
+# sphinx-quickstart on Mon May 18 21:37:44 2009.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+sys.path.append("../celery")
+sys.path.append("../testproj")
+import settings
+from django.core.management import setup_environ
+setup_environ(settings)
+import celery
+sys.path.append(os.path.join(os.path.dirname(__file__), "_ext"))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'djangodocs']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Celery'
+copyright = u'2009, Ask Solem'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = ".".join(map(str, celery.VERSION[0:2]))
+# The full version, including alpha/beta/rc tags.
+release = celery.__version__
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['.build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'trac'
+
+#html_translator_class = "djangodocs.DjangoHTMLTranslator"
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['.static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_use_modindex = True
+
+# If false, no index is generated.
+html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Celerydoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'Celery.tex', ur'Celery Documentation',
+   ur'Ask Solem', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True

+ 40 - 0
docs/index.rst

@@ -0,0 +1,40 @@
+.. Celery documentation master file, created by sphinx-quickstart on Mon May 18 21:37:44 2009.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to Celery's documentation!
+==================================
+
+Contents:
+
+.. toctree::
+    :maxdepth: 2
+   
+    reference/celery.task
+    reference/celery.result
+    reference/celery.registry
+    reference/celery.discovery
+    reference/celery.worker
+    reference/celery.backends
+    reference/celery.backends.base
+    reference/celery.backends.database
+    reference/celery.backends.cache
+    reference/celery.backends.tyrant
+    reference/celery.conf
+    reference/celery.datastructures
+    reference/celery.log
+    reference/celery.managers
+    reference/celery.models
+    reference/celery.messaging
+    reference/celery.platform
+    reference/celery.timer
+    reference/celery.bin.celeryd
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

+ 10 - 0
docs/reference/celery.backends.base.rst

@@ -0,0 +1,10 @@
+===================================
+Backend: Base - celery.backends.base
+===================================
+
+.. currentmodule:: celery.backends.base
+
+.. automodule:: celery.backends.base
+    :members:
+
+

+ 8 - 0
docs/reference/celery.backends.cache.rst

@@ -0,0 +1,8 @@
+===================================
+Backend: Cache - celery.backends.cache
+===================================
+
+.. currentmodule:: celery.backends.cache
+
+.. automodule:: celery.backends.cache
+    :members:

+ 8 - 0
docs/reference/celery.backends.database.rst

@@ -0,0 +1,8 @@
+=============================================
+Backend: Database - celery.backends.database
+=============================================
+
+.. currentmodule:: celery.backends.database
+
+.. automodule:: celery.backends.database
+    :members:

+ 21 - 0
docs/reference/celery.backends.rst

@@ -0,0 +1,21 @@
+===========================
+Backends - celery.backends
+===========================
+
+.. currentmodule:: celery.backends
+
+.. automodule:: celery.backends
+    :members:
+
+.. function:: get_default_backend_cls()
+
+    Get the backend class specified in ``settings.CELERY_BACKEND``.
+
+.. class:: DefaultBackend
+
+    The backend class specified in ``settings.CELERY_BACKEND``.
+
+.. data:: default_backend
+
+    An instance of :class:`DefaultBackend`.
+    

+ 14 - 0
docs/reference/celery.backends.tyrant.rst

@@ -0,0 +1,14 @@
+===============================================
+Backend: Tokyo Tyrant - celery.backends.tyrant
+===============================================
+
+.. currentmodule:: celery.backends.tyrant
+
+.. data:: TT_HOST
+    The hostname for the Tokyo Tyrant server. Taken from Django settings.
+
+.. data:: TT_PORT
+    The port for the Tokyo Tyrant server. Taken from Django settings.
+
+.. automodule:: celery.backends.tyrant
+    :members:

+ 8 - 0
docs/reference/celery.bin.celeryd.rst

@@ -0,0 +1,8 @@
+==========================================
+Celery Worker Daemon - celery.bin.celeryd
+==========================================
+
+.. currentmodule:: celery.bin.celeryd
+
+.. automodule:: celery.bin.celeryd
+    :members:

+ 5 - 0
docs/reference/celery.conf.py

@@ -0,0 +1,5 @@
+===============================
+Configuration
+===============================
+
+

+ 47 - 0
docs/reference/celery.conf.rst

@@ -0,0 +1,47 @@
+============================
+Configuration - celery.conf
+============================
+
+.. currentmodule:: celery.conf
+
+.. automodule:: celery.conf
+    :members:
+
+.. data:: AMQP_EXCHANGE
+    The AMQP exchange.
+
+.. data:: AMQP_ROUTING_KEY
+    The AMQP routing key.
+
+.. data:: AMQP_CONSUMER_QUEUE
+    The name of the AMQP queue.
+
+.. data:: DAEMON_CONCURRENCY
+    The number of worker processes, that should work simultaenously.
+
+.. data:: DAEMON_PID_FILE
+    Full path to the daemon pid file.
+
+.. data:: EMPTY_MSG_EMIT_EVERY
+    How often the celery daemon should write a log message saying there are no
+    messages in the queue. If this is ``None`` or ``0``, it will never print
+    this message.
+
+.. data:: QUEUE_WAKEUP_AFTER
+    The time (in seconds) the celery daemon should sleep when there are no messages
+    left on the queue. After the time is slept, the worker wakes up and
+    checks the queue again.
+
+.. data:: DAEMON_LOG_LEVEL
+    Celery daemon log level, could be any of ``DEBUG``, ``INFO``, ``WARNING``,
+    ``ERROR``, ``CRITICAL``, or ``FATAL``.
+
+.. data:: DAEMON_LOG_FILE
+    The path to the deamon log file (if not set, ``stderr`` is used).
+
+.. data:: LOG_FORMAT
+    The format to use for log messages.
+    Default is ``[%(asctime)s: %(levelname)s/%(processName)s] %(message)s``
+
+.. data:: LOG_LEVELS
+    Mapping of log level names to ``logging`` module constants.

+ 8 - 0
docs/reference/celery.datastructures.rst

@@ -0,0 +1,8 @@
+=======================================
+Datastructures - celery.datastructures
+=======================================
+
+.. currentmodule:: celery.datastructures
+
+.. automodule:: celery.datastructures
+    ::members::

+ 8 - 0
docs/reference/celery.discovery.rst

@@ -0,0 +1,8 @@
+==================================
+Task Discovery - celery.discovery
+==================================
+
+.. currentmodule:: celery.discovery
+
+.. automodule:: celery.discovery
+    :members:

+ 8 - 0
docs/reference/celery.log.rst

@@ -0,0 +1,8 @@
+==========================
+Logging - celery.log
+==========================
+
+.. currentmodule:: celery.log
+
+.. automodule:: celery.log
+    :members:

+ 8 - 0
docs/reference/celery.managers.rst

@@ -0,0 +1,8 @@
+========================================
+Django Model Managers - celery.managers
+========================================
+
+.. currentmodule:: celery.managers
+
+.. automodule:: celery.managers
+    :members:

+ 8 - 0
docs/reference/celery.messaging.rst

@@ -0,0 +1,8 @@
+==============================
+Messaging - celery.messaging
+==============================
+
+.. currentmodule:: celery.messaging
+
+.. automodule:: celery.messaging
+    :members:

+ 60 - 0
docs/reference/celery.models.rst

@@ -0,0 +1,60 @@
+===============================
+Django Models - celery.models
+===============================
+
+.. data:: TASK_STATUS_PENDING
+    The string status of a pending task.
+
+.. data:: TASK_STATUS_RETRY
+    The string status of a task which is to be retried.
+
+.. data:: TASK_STATUS_FAILURE
+    The string status of a failed task.
+
+.. data:: TASK_STATUS_DONE
+    The string status of a task that was successfully executed.
+
+.. data:: TASK_STATUSES
+    List of possible task statuses.
+
+.. data:: TASK_STATUSES_CHOICES
+    Django choice tuple of possible task statuses, for usage in model/form
+    fields ``choices`` argument.
+
+.. class:: TaskMeta
+    Model for storing the result and status of a task.
+    
+    *Note* Only used if you're running the ``database`` backend.
+
+    .. attribute:: task_id
+        The unique task id.
+
+    .. attribute:: status
+        The current status for this task.
+
+    .. attribute:: result
+        The result after successful/failed execution. If the task failed,
+        this contains the execption it raised.
+
+    .. attribute:: date_done
+        The date this task changed status.
+
+.. class:: PeriodicTaskMeta
+    Metadata model for periodic tasks.
+
+    .. attribute:: name
+        The name of this task, as registered in the task registry.
+
+    .. attribute:: last_run_at
+        The date this periodic task was last run. Used to find out
+        when it should be run next.
+
+    .. attribute:: total_run_count
+        The number of times this periodic task has been run.
+
+    .. attribute:: task
+        The class/function for this task.
+
+    .. method:: delay()
+        Delay the execution of a periodic task, and increment its total
+        run count.

+ 10 - 0
docs/reference/celery.platform.rst

@@ -0,0 +1,10 @@
+====================================
+Platform Specific - celery.platform
+====================================
+
+.. currentmodule:: celery.platform
+
+.. automodule:: celery.platform
+    :members:
+
+

+ 11 - 0
docs/reference/celery.registry.rst

@@ -0,0 +1,11 @@
+================================
+Task Registry - celery.registry
+================================
+
+.. currentmodule:: celery.registry
+
+.. automodule:: celery.registry
+    :members:
+
+.. data:: tasks
+    The global task registry.

+ 8 - 0
docs/reference/celery.result.rst

@@ -0,0 +1,8 @@
+=============================
+Task Result - celery.result
+=============================
+
+.. currentmodule:: celery.result
+
+.. automodule:: celery.result
+    :members:

+ 8 - 0
docs/reference/celery.task.rst

@@ -0,0 +1,8 @@
+=================================
+Tasks - celery.task
+=================================
+
+.. currentmodule:: celery.task
+
+.. automodule:: celery.task
+    :members:

+ 8 - 0
docs/reference/celery.timer.rst

@@ -0,0 +1,8 @@
+======================
+Timers - celery.timer
+======================
+
+.. currentmodule:: celery.timer
+
+.. automodule:: celery.timer
+    :members:

+ 8 - 0
docs/reference/celery.worker.rst

@@ -0,0 +1,8 @@
+========================================
+Multiprocessing Worker - celery.worker
+========================================
+
+.. currentmodule:: celery.worker
+
+.. automodule:: celery.worker
+    :members: