[Python-checkins] r61887 - in doctools/trunk: CHANGES sphinx/builder.py

georg.brandl python-checkins at python.org
Tue Mar 25 11:36:39 CET 2008


Author: georg.brandl
Date: Tue Mar 25 11:36:39 2008
New Revision: 61887

Modified:
   doctools/trunk/CHANGES
   doctools/trunk/sphinx/builder.py
Log:
* sphinx.builder: Handle unavailability of TOC relations (previous/
  next chapter) more gracefully in the HTML builder.



Modified: doctools/trunk/CHANGES
==============================================================================
--- doctools/trunk/CHANGES	(original)
+++ doctools/trunk/CHANGES	Tue Mar 25 11:36:39 2008
@@ -10,6 +10,9 @@
 * sphinx.ext.autodoc: Record files from which docstrings are included
   as dependencies.
 
+* sphinx.builder: Handle unavailability of TOC relations (previous/
+  next chapter) more gracefully in the HTML builder.
+
 
 Release 0.1.61843 (Mar 24, 2008)
 ================================

Modified: doctools/trunk/sphinx/builder.py
==============================================================================
--- doctools/trunk/sphinx/builder.py	(original)
+++ doctools/trunk/sphinx/builder.py	Tue Mar 25 11:36:39 2008
@@ -347,22 +347,33 @@
         prev = next = None
         parents = []
         related = self.env.toctree_relations.get(docname)
+        titles = self.env.titles
         if related:
-            prev = {'link': self.get_relative_uri(docname, related[1]),
-                    'title': self.render_partial(self.env.titles[related[1]])['title']}
-            next = {'link': self.get_relative_uri(docname, related[2]),
-                    'title': self.render_partial(self.env.titles[related[2]])['title']}
+            try:
+                prev = {'link': self.get_relative_uri(docname, related[1]),
+                        'title': self.render_partial(titles[related[1]])['title']}
+            except KeyError:
+                # the relation is (somehow) not in the TOC tree, handle that gracefully
+                prev = None
+            try:
+                next = {'link': self.get_relative_uri(docname, related[2]),
+                        'title': self.render_partial(titles[related[2]])['title']}
+            except KeyError:
+                next = None
         while related:
-            parents.append(
-                {'link': self.get_relative_uri(docname, related[0]),
-                 'title': self.render_partial(self.env.titles[related[0]])['title']})
+            try:
+                parents.append(
+                    {'link': self.get_relative_uri(docname, related[0]),
+                     'title': self.render_partial(titles[related[0]])['title']})
+            except KeyError:
+                pass
             related = self.env.toctree_relations.get(related[0])
         if parents:
             parents.pop() # remove link to the master file; we have a generic
                           # "back to index" link already
         parents.reverse()
 
-        title = self.env.titles.get(docname)
+        title = titles.get(docname)
         if title:
             title = self.render_partial(title)['title']
         else:


More information about the Python-checkins mailing list