diff options
| author | Georg Brandl <georg@python.org> | 2010-04-06 09:21:22 +0200 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2010-04-06 09:21:22 +0200 |
| commit | 7f269d3edc077c5e3c3448049eccd393d79a8bdf (patch) | |
| tree | 14c3db227b9b2d57914772939fb0a4af8766ad9d | |
| parent | e7b5cf7b3a97928b8bd877a7ca86289c0926fa05 (diff) | |
| parent | ed44e3220ff3dbaa8de07edc817269710fc6b7e6 (diff) | |
| download | sphinx-7f269d3edc077c5e3c3448049eccd393d79a8bdf.tar.gz | |
merge with 0.6
| -rw-r--r-- | CHANGES | 14 | ||||
| -rw-r--r-- | doc/builders.rst | 3 | ||||
| -rw-r--r-- | doc/ext/appapi.rst | 2 | ||||
| -rw-r--r-- | sphinx/builders/html.py | 2 | ||||
| -rw-r--r-- | sphinx/environment.py | 19 | ||||
| -rw-r--r-- | sphinx/ext/autodoc.py | 1 | ||||
| -rw-r--r-- | sphinx/highlighting.py | 15 | ||||
| -rw-r--r-- | sphinx/themes/basic/static/searchtools.js | 5 | ||||
| -rw-r--r-- | sphinx/writers/text.py | 27 |
9 files changed, 62 insertions, 26 deletions
@@ -89,6 +89,20 @@ Release 1.0 (in development) Release 0.6.6 (in development) ============================== +* Fix the handling of multiple toctrees when creating the global + TOC for the ``toctree()`` template function. + +* Fix the handling of hidden toctrees when creating the global TOC + for the ``toctree()`` template function. + +* Fix the handling of nested lists in the text writer. + +* #362: In autodoc, check for the existence of ``__self__`` on + function objects before accessing it. + +* #353: Strip leading and trailing whitespace when extracting + search words in the search function. + Release 0.6.5 (Mar 01, 2010) ============================ diff --git a/doc/builders.rst b/doc/builders.rst index 1c207574..1fcc9da1 100644 --- a/doc/builders.rst +++ b/doc/builders.rst @@ -112,7 +112,8 @@ The builder's "name" must be given to the **-b** command-line option of Note that a direct PDF builder using ReportLab is available in `rst2pdf <http://rst2pdf.googlecode.com>`_ version 0.12 or greater. You need to add ``'rst2pdf.pdfbuilder'`` to your :confval:`extensions` to enable it, its name is -``pdf``. +``pdf``. Refer to the `rst2pdf manual +<http://lateral.netmanagers.com.ar/static/manual.pdf>`_ for details. .. module:: sphinx.builders.text .. class:: TextBuilder diff --git a/doc/ext/appapi.rst b/doc/ext/appapi.rst index 7652f97c..3a8cdb9d 100644 --- a/doc/ext/appapi.rst +++ b/doc/ext/appapi.rst @@ -141,7 +141,7 @@ the following public API: * If you provide *parse_node*, it must be a function that takes a string and a docutils node, and it must populate the node with children parsed from the string. It must then return the name of the item to be used in - cross-referencing and index entries. See the :file:`ext.py` file in the + cross-referencing and index entries. See the :file:`conf.py` file in the source for this documentation for an example. For example, if you have this call in a custom Sphinx extension:: diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index ab3e5544..914d741f 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -196,6 +196,8 @@ class StandaloneHTMLBuilder(Builder): def render_partial(self, node): """Utility: Render a lone doctree node.""" + if node is None: + return {'fragment': ''} doc = new_document('<partial node>') doc.append(node) diff --git a/sphinx/environment.py b/sphinx/environment.py index 99cd47bb..86585ded 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -941,11 +941,18 @@ class BuildEnvironment: def get_toctree_for(self, docname, builder, collapse): """Return the global TOC nodetree.""" doctree = self.get_doctree(self.config.master_doc) + toctrees = [] for toctreenode in doctree.traverse(addnodes.toctree): - result = self.resolve_toctree(docname, builder, toctreenode, - prune=True, collapse=collapse) - if result is not None: - return result + toctree = self.resolve_toctree(docname, builder, toctreenode, + prune=True, collapse=collapse, + includehidden=True) + toctrees.append(toctree) + if not toctrees: + return None + result = toctrees[0] + for toctree in toctrees[1:]: + result.extend(toctree.children) + return result # ------- # these are called from docutils directives and therefore use self.docname @@ -1016,7 +1023,7 @@ class BuildEnvironment: return doctree def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, - titles_only=False, collapse=False): + titles_only=False, collapse=False, includehidden=False): """ Resolve a *toctree* node into individual bullet lists with titles as items, returning None (if no containing titles are found) or @@ -1029,7 +1036,7 @@ class BuildEnvironment: If *collapse* is True, all branches not containing docname will be collapsed. """ - if toctree.get('hidden', False): + if toctree.get('hidden', False) and not includehidden: return None def _walk_depth(node, depth, maxdepth): diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 57cba83a..ca96195e 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -1002,6 +1002,7 @@ class MethodDocumenter(ClassLevelDocumenter): self.member_order = self.member_order - 1 elif isinstance(self.object, FunctionType) or \ (isinstance(self.object, BuiltinFunctionType) and + hasattr(self.object, '__self__') and self.object.__self__ is not None): self.directivetype = 'staticmethod' # document class and static members before ordinary ones diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py index 8300bd32..f5ea859c 100644 --- a/sphinx/highlighting.py +++ b/sphinx/highlighting.py @@ -34,6 +34,7 @@ try: from pygments.styles import get_style_by_name from pygments.styles.friendly import FriendlyStyle from pygments.token import Generic, Comment, Number + from pygments.util import ClassNotFound except ImportError: pygments = None lexers = None @@ -173,7 +174,7 @@ class PygmentsBridge(object): else: return True - def highlight_block(self, source, lang, linenos=False): + def highlight_block(self, source, lang, linenos=False, warn=None): if isinstance(source, str): source = source.decode() if not pygments: @@ -202,8 +203,16 @@ class PygmentsBridge(object): if lang in lexers: lexer = lexers[lang] else: - lexer = lexers[lang] = get_lexer_by_name(lang) - lexer.add_filter('raiseonerror') + try: + lexer = lexers[lang] = get_lexer_by_name(lang) + except ClassNotFound: + if warn: + warn('Pygments lexer name %s is not known' % lang) + return self.unhighlighted(source) + else: + raise + else: + lexer.add_filter('raiseonerror') # trim doctest options if wanted if isinstance(lexer, PythonConsoleLexer) and self.trim_doctest_flags: diff --git a/sphinx/themes/basic/static/searchtools.js b/sphinx/themes/basic/static/searchtools.js index ba91e30c..bd916628 100644 --- a/sphinx/themes/basic/static/searchtools.js +++ b/sphinx/themes/basic/static/searchtools.js @@ -312,8 +312,9 @@ var Search = { var tmp = query.split(/\s+/); var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null; for (var i = 0; i < tmp.length; i++) { - if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/)) { - // skip this word + if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) || + tmp[i] == "") { + // skip this "word" continue; } // stem the word diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py index 84dc4b38..7923f68d 100644 --- a/sphinx/writers/text.py +++ b/sphinx/writers/text.py @@ -54,6 +54,7 @@ class TextTranslator(nodes.NodeVisitor): self.states = [[]] self.stateindent = [0] + self.list_counter = [] self.sectionlevel = 0 self.table = None @@ -436,38 +437,38 @@ class TextTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_bullet_list(self, node): - self._list_counter = -1 + self.list_counter.append(-1) def depart_bullet_list(self, node): - pass + self.list_counter.pop() def visit_enumerated_list(self, node): - self._list_counter = 0 + self.list_counter.append(0) def depart_enumerated_list(self, node): - pass + self.list_counter.pop() def visit_definition_list(self, node): - self._list_counter = -2 + self.list_counter.append(-2) def depart_definition_list(self, node): - pass + self.list_counter.pop() def visit_list_item(self, node): - if self._list_counter == -1: + if self.list_counter[-1] == -1: # bullet list self.new_state(2) - elif self._list_counter == -2: + elif self.list_counter[-1] == -2: # definition list pass else: # enumerated list - self._list_counter += 1 - self.new_state(len(str(self._list_counter)) + 2) + self.list_counter[-1] += 1 + self.new_state(len(str(self.list_counter[-1])) + 2) def depart_list_item(self, node): - if self._list_counter == -1: + if self.list_counter[-1] == -1: self.end_state(first='* ', end=None) - elif self._list_counter == -2: + elif self.list_counter[-1] == -2: pass else: - self.end_state(first='%s. ' % self._list_counter, end=None) + self.end_state(first='%s. ' % self.list_counter[-1], end=None) def visit_definition_list_item(self, node): self._li_has_classifier = len(node) >= 2 and \ |
