Skip to main content

Sphinx/Paver integration

Project description

This module provides an alternative integration of Sphinx and Paver. It supports calling Sphinx from within Paver using multiple configurations, and does not assume you only want to build HTML output.

Basic Usage

To use this module, import it in your pavement.py file as from sphinxcontrib import paverutils, then define option Bundles for “html” and/or “pdf” output using the options described in the task help.

For example:

import paver
import paver.misctasks
from paver.path import path
from paver.easy import *
import paver.setuputils
paver.setuputils.install_distutils_tasks()
try:
    from sphinxcontrib import paverutils
except:
    import warnings
    warnings.warn('sphinxcontrib.paverutils was not found, you will not be able to produce documentation')

options(
    setup=Bunch(
        name = 'MyProject',
        version = '1.0',

        # ... more options here ...
        ),

    # Defaults for sphinxcontrib.paverutils
    sphinx = Bunch(
        docroot='.',
        sourcedir='docsource',
        builder='html',
    ),

    # One configuration to build HTML for the package
    html=Bunch(
        builddir='docs',
        confdir='sphinx/pkg',
    ),

    # Another configuration with different templates
    # to build HTML to upload to the website
    website=Bunch(
        builddir = 'web',
        confdir='sphinx/web',
    ),

    # We also want a PDF file for the website,
    # so the instructions are included in the web
    # configuration directory.
    pdf=Bunch(
        builddir='web',
        builder='latex',
        confdir='sphinx/web',
    ),

)

Tasks

After you have imported sphinxcontrib.paverutils in your pavement.py file, Paver will show two additional tasks. html takes the place of the task defined in paver.doctools and can be used to build HTML output. pdf uses the LaTeX builder and an external toolset such as TeXLive to create a PDF manual.

Configuration Parameters

docroot

the root under which Sphinx will be working.

default: docs

builddir

directory under the docroot where the resulting files are put.

default: build

sourcedir

directory under the docroot for the source files

default: (empty string)

doctrees

the location of the cached doctrees

default: $builddir/doctrees

confdir

the location of the sphinx conf.py

default: $sourcedir

outdir

the location of the generated output files

default: $builddir/$builder

builder

the name of the sphinx builder to use

default: html

template_args

dictionary of values to be passed as name-value pairs to the HTML builder

default: {}

Advanced Usage

You can also develop your own tasks by calling run_sphinx() directly:

@task
@needs(['cog'])
@cmdopts([
    ('in-file=', 'b', 'Blog input filename'),
    ('out-file=', 'B', 'Blog output filename'),
])
def blog(options):
    """Generate the blog post version of the HTML for the current module.
    """
    # Generate html from sphinx
    paverutils.run_sphinx(options, 'blog')

    blog_file = path(options.blog.outdir) / options.blog.out_file
    dry("Write blog post body to %s" % blog_file,
        gen_blog_post,
        outdir=options.blog.outdir,
        input_base=options.blog.in_file,
        blog_base=options.blog.out_file,
        )

    if 'EDITOR' in os.environ:
        sh('$EDITOR %s' % blog_file)
    return

Users

PyMOTW

The Python Module of the Week package is built using Paver and Sphinx, including three forms of HTML and a PDF.

virtualenvwrapper

The documentation for virtualenvwrapper includes the packaged HTML and a website using alternate templates.

Project details


Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page