tags 527492 + patch thanks James Bennett wrote:
> This is a compatibility issue across different versions of Sphinx, and > is already open upstream with us as #10539: > > http://code.djangoproject.com/ticket/10539 I've backported 10539-sphinx06-compatibility.diff to 1.0.2 (stable, testing, unstable) which now builds fine against the latest python-sphinx. The non- backported patch works fine against the current version in experimental. Regards, -- ,''`. : :' : Chris Lamb `. `'` la...@debian.org `-
diff -urNad a/docs/_ext/djangodocs.py b/docs/_ext/djangodocs.py --- Django-1.0.2-final.orig/docs/_ext/djangodocs.py 2009-05-07 22:14:38.000000000 +0100 +++ Django-1.0.2-final/docs/_ext/djangodocs.py 2009-05-07 22:16:39.000000000 +0100 @@ -6,10 +6,16 @@ import docutils.transforms import sphinx import sphinx.addnodes -import sphinx.builder +try: + from sphinx import builders +except ImportError: + import sphinx.builder as builders import sphinx.directives import sphinx.environment -import sphinx.htmlwriter +try: + import sphinx.writers.html as sphinx_htmlwriter +except ImportError: + import sphinx.htmlwriter as sphinx_htmlwriter def setup(app): app.add_crossref_type( @@ -42,7 +48,7 @@ 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), + parse_node = parse_django_adminopt_node, ) app.add_transform(SuppressBlockquotes) @@ -71,7 +77,7 @@ if len(node.children) == 1 and isinstance(node.children[0], self.suppress_blockquote_child_nodes): node.replace_self(node.children[0]) -class DjangoHTMLTranslator(sphinx.htmlwriter.SmartyPantsHTMLTranslator): +class DjangoHTMLTranslator(sphinx_htmlwriter.SmartyPantsHTMLTranslator): """ Django-specific reST to HTML tweaks. """ @@ -94,10 +100,10 @@ # def visit_literal_block(self, node): self.no_smarty += 1 - sphinx.htmlwriter.SmartyPantsHTMLTranslator.visit_literal_block(self, node) + sphinx_htmlwriter.SmartyPantsHTMLTranslator.visit_literal_block(self, node) def depart_literal_block(self, node): - sphinx.htmlwriter.SmartyPantsHTMLTranslator.depart_literal_block(self, node) + sphinx_htmlwriter.SmartyPantsHTMLTranslator.depart_literal_block(self, node) self.no_smarty -= 1 # @@ -132,7 +138,7 @@ # This is different on docutils 0.5 vs. 0.4... # The docutils 0.4 override. - if hasattr(sphinx.htmlwriter.SmartyPantsHTMLTranslator, 'start_tag_with_title'): + if hasattr(sphinx_htmlwriter.SmartyPantsHTMLTranslator, 'start_tag_with_title'): def start_tag_with_title(self, node, tagname, **atts): node = { 'classes': node.get('classes', []), @@ -145,7 +151,7 @@ def visit_section(self, node): old_ids = node.get('ids', []) node['ids'] = ['s-' + i for i in old_ids] - sphinx.htmlwriter.SmartyPantsHTMLTranslator.visit_section(self, node) + sphinx_htmlwriter.SmartyPantsHTMLTranslator.visit_section(self, node) node['ids'] = old_ids def parse_django_admin_node(env, sig, signode): @@ -155,6 +161,25 @@ signode += sphinx.addnodes.desc_name(title, title) return sig +def parse_django_adminopt_node(env, sig, signode): + """A copy of sphinx.directives.CmdoptionDesc.parse_signature()""" + from sphinx import addnodes + from sphinx.directives.desc import option_desc_re + count = 0 + firstname = '' + for m in option_desc_re.finditer(sig): + optname, args = m.groups() + if count: + signode += addnodes.desc_addname(', ', ', ') + signode += addnodes.desc_name(optname, optname) + signode += addnodes.desc_addname(args, args) + if not count: + firstname = optname + count += 1 + if not firstname: + raise ValueError + return firstname + def monkeypatch_pickle_builder(): import shutil from os import path @@ -183,12 +208,12 @@ # copy the environment file from the doctree dir to the output dir # as needed by the web app - shutil.copyfile(path.join(self.doctreedir, sphinx.builder.ENV_PICKLE_FILENAME), - path.join(self.outdir, sphinx.builder.ENV_PICKLE_FILENAME)) + shutil.copyfile(path.join(self.doctreedir, builders.ENV_PICKLE_FILENAME), + path.join(self.outdir, builders.ENV_PICKLE_FILENAME)) # touch 'last build' file, used by the web application to determine # when to reload its environment and clear the cache - open(path.join(self.outdir, sphinx.builder.LAST_BUILD_FILENAME), 'w').close() + open(path.join(self.outdir, builders.LAST_BUILD_FILENAME), 'w').close() - sphinx.builder.PickleHTMLBuilder.handle_finish = handle_finish + builders.PickleHTMLBuilder.handle_finish = handle_finish diff -urNad a/docs/_templates/layout.html b/docs/_templates/layout.html --- a/docs/_templates/layout.html 2009-05-07 22:14:38.000000000 +0100 +++ b/docs/_templates/layout.html 2009-05-07 22:17:03.000000000 +0100 @@ -1,6 +1,6 @@ {% extends "!layout.html" %} -{%- macro secondnav %} +{%- macro secondnav() %} {%- if prev %} « <a href="{{ prev.link|e }}" title="{{ prev.title|e }}">previous</a> {{ reldelim2 }}
signature.asc
Description: PGP signature