diff options
author | Georg Brandl <georg@python.org> | 2014-01-19 19:13:17 +0100 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2014-01-19 19:13:17 +0100 |
commit | cd7658dde7f32714f4e6013cd221a9ea6e88bb82 (patch) | |
tree | 329d1f0abf16c75666013bc877f7532a21663398 | |
parent | 2a8cf7c7781a4554adbcb4bae6bec2a40bfc156d (diff) | |
parent | 468198f91b0a41056c46c25f8cedf5c528c97564 (diff) | |
download | sphinx-cd7658dde7f32714f4e6013cd221a9ea6e88bb82.tar.gz |
merge with stable
-rw-r--r-- | CHANGES | 47 | ||||
-rw-r--r-- | doc/Makefile | 2 | ||||
-rw-r--r-- | doc/markup/toctree.rst | 9 | ||||
-rw-r--r-- | sphinx/builders/__init__.py | 2 | ||||
-rw-r--r-- | sphinx/cmdline.py | 7 | ||||
-rw-r--r-- | sphinx/environment.py | 7 | ||||
-rw-r--r-- | sphinx/themes/basic/searchbox.html | 2 | ||||
-rw-r--r-- | sphinx/util/__init__.py | 23 | ||||
-rw-r--r-- | sphinx/writers/html.py | 6 |
9 files changed, 41 insertions, 64 deletions
@@ -41,118 +41,83 @@ Bugs fixed * #1174: Fix smart quotes being applied inside roles like :rst:role:`program` or :rst:role:`makevar`. - * #1335: Fix autosummary template overloading with exclamation prefix like ``{% extends "!autosummary/class.rst" %}`` cause infinite recursive function - call. This caused by PR#181. - + call. This was caused by PR#181. * #1337: Fix autodoc with ``autoclass_content="both"`` uses useless ``object.__init__`` docstring when class does not have ``__init__``. This was caused by a change for #1138. - * #1340: Can't search alphabetical words on the HTML quick search generated with language='ja'. - * #1319: Do not crash if the :confval:`html_logo` file does not exist. - * #603: Do not use the HTML-ized title for building the search index (that resulted in "literal" being found on every page with a literal in the title). - * #751: Allow production lists longer than a page in LaTeX by using longtable. - * #764: Always look for stopwords lowercased in JS search. - * #814: autodoc: Guard against strange type objects that don't have ``__bases__``. - * #932: autodoc: Do not crash if ``__doc__`` is not a string. - * #933: Do not crash if an :rst:role:`option` value is malformed (contains spaces but no option name). - * #908: On Python 3, handle error messages from LaTeX correctly in the pngmath extension. - * #943: In autosummary, recognize "first sentences" to pull from the docstring if they contain uppercase letters. - * #923: Take the entire LaTeX document into account when caching pngmath-generated images. This rebuilds them correctly when :confval:`pngmath_latex_preamble` changes. - * #901: Emit a warning when using docutils' new "math" markup without a Sphinx math extension active. - * #845: In code blocks, when the selected lexer fails, display line numbers nevertheless if configured. - * #929: Support parsed-literal blocks in LaTeX output correctly. - * #949: Update the tabulary.sty packed with Sphinx. - * #1050: Add anonymous labels into ``objects.inv`` to be referenced via :mod:`~sphinx.ext.intersphinx`. - * #1095: Fix print-media stylesheet being included always in the "scrolls" theme. - * #1085: Fix current classname not getting set if class description has ``:noindex:`` set. - * #1181: Report option errors in autodoc directives more gracefully. - * #1155: Fix autodocumenting C-defined methods as attributes in Python 3. - * #1233: Allow finding both Python classes and exceptions with the "class" and "exc" roles in intersphinx. - * #1198: Allow "image" for the "figwidth" option of the :rst:dir:`figure` directive as documented by docutils. - * #1152: Fix pycode parsing errors of Python 3 code by including two grammar versions for Python 2 and 3, and loading the appropriate version for the running Python version. - * #1017: Be helpful and tell the user when the argument to :rst:dir:`option` does not match the required format. - * #1345: Fix two bugs with :confval:`nitpick_ignore`; now you don't have to remove the store environment for changes to have effect. - * #1072: In the JS search, fix issues searching for upper-cased words by lowercasing words before stemming. - * #1299: Make behavior of the :rst:dir:`math` directive more consistent and avoid producing empty environments in LaTeX output. - * #1308: Strip HTML tags from the content of "raw" nodes before feeding it to the search indexer. - * #1249: Fix duplicate LaTeX page numbering for manual documents. - * #1292: In the linkchecker, retry HEAD requests when denied by HTTP 405. Also make the redirect code apparent and tweak the output a bit to be more obvious. - * #1285: Avoid name clashes between C domain objects and section titles. - * #848: Always take the newest code in incremental rebuilds with the :mod:`sphinx.ext.viewcode` extension. - * #979, #1266: Fix exclude handling in ``sphinx-apidoc``. - * #1302: Fix regression in :mod:`sphinx.ext.inheritance_diagram` when documenting classes that can't be pickled. - * #1316: Remove hard-coded ``font-face`` resources from epub theme. - * #1329: Fix traceback with empty translation msgstr in .po files. - * #1300: Fix references not working in translated documents in some instances. - * #1283: Fix a bug in the detection of changed files that would try to access doctrees of deleted documents. +* #1330: Fix :confval:`exclude_patterns` behavior with subdirectories in the + :confval:`html_static_path`. +* #1323: Fix emitting empty ``<ul>`` tags in the HTML writer, which is not + valid HTML. +* #1147: Don't emit a sidebar search box in the "singlehtml" builder. Documentation ------------- diff --git a/doc/Makefile b/doc/Makefile index 8bc59724..55909649 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -15,4 +15,4 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: - $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/doc/markup/toctree.rst b/doc/markup/toctree.rst index fdecc37d..1d5d667a 100644 --- a/doc/markup/toctree.rst +++ b/doc/markup/toctree.rst @@ -141,9 +141,12 @@ tables of contents. The ``toctree`` directive is the central element. In the end, all documents in the :term:`source directory` (or subdirectories) must occur in some ``toctree`` directive; Sphinx will emit a warning if it finds a file that is not included, because that means that this file will not - be reachable through standard navigation. Use :ref:`metadata` to remove the - warning, and :confval:`exclude_patterns` to explicitly exclude documents or - directories from building. + be reachable through standard navigation. + + Use :confval:`exclude_patterns` to explicitly exclude documents or + directories from building completely. Use :ref:`the "orphan" metadata + <metadata>` to let a document be built, but notify Sphinx that it is not + reachable via a toctree. The "master document" (selected by :confval:`master_doc`) is the "root" of the TOC tree hierarchy. It can be used as the documentation's main page, or diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index f1280a0b..17c9f51d 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -268,7 +268,7 @@ class Builder(object): # filter "docnames" (list of outdated files) by the updated # found_docs of the environment; this will remove docs that # have since been removed - if docnames != ['__all__']: + if docnames and docnames != ['__all__']: docnames = set(docnames) & self.env.found_docs # another indirection to support builders that don't build diff --git a/sphinx/cmdline.py b/sphinx/cmdline.py index fdb47dec..97f9718b 100644 --- a/sphinx/cmdline.py +++ b/sphinx/cmdline.py @@ -270,6 +270,13 @@ def main(argv): elif isinstance(err, SphinxError): print >>error, red('%s:' % err.category) print >>error, terminal_safe(unicode(err)) + elif isinstance(err, UnicodeError): + print >>error, red('Encoding error:') + print >>error, terminal_safe(unicode(err)) + tbpath = save_traceback(app) + print >>error, red('The full traceback has been saved ' + 'in %s, if you want to report the ' + 'issue to the developers.' % tbpath) else: print >>error, red('Exception occurred:') print >>error, format_exception_cut_frames().rstrip() diff --git a/sphinx/environment.py b/sphinx/environment.py index 09f76bf2..c5726e29 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -611,11 +611,8 @@ class BuildEnvironment: pub.process_programmatic_settings(None, self.settings, None) pub.set_source(None, src_path.encode(fs_encoding)) pub.set_destination(None, None) - try: - pub.publish() - doctree = pub.document - except UnicodeError, err: - raise SphinxError(str(err)) + pub.publish() + doctree = pub.document # post-processing self.filter_messages(doctree) diff --git a/sphinx/themes/basic/searchbox.html b/sphinx/themes/basic/searchbox.html index 0a573c32..420e0121 100644 --- a/sphinx/themes/basic/searchbox.html +++ b/sphinx/themes/basic/searchbox.html @@ -7,7 +7,7 @@ :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. #} -{%- if pagename != "search" %} +{%- if pagename != "search" and builder != "singlehtml" %} <div id="searchbox" style="display: none" role="search"> <h3>{{ _('Quick search') }}</h3> <form class="search" action="{{ pathto('search') }}" method="get"> diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py index 5cbbb61b..a20fc19b 100644 --- a/sphinx/util/__init__.py +++ b/sphinx/util/__init__.py @@ -158,18 +158,17 @@ def copy_static_entry(source, targetdir, builder, context={}, else: copyfile(source, target) elif path.isdir(source): - if level == 0: - for entry in os.listdir(source): - if entry.startswith('.'): - continue - copy_static_entry(path.join(source, entry), targetdir, - builder, context, level=1, - exclude_matchers=exclude_matchers) - else: - target = path.join(targetdir, path.basename(source)) - if path.exists(target): - shutil.rmtree(target) - shutil.copytree(source, target) + if not path.isdir(targetdir): + os.mkdir(targetdir) + for entry in os.listdir(source): + if entry.startswith('.'): + continue + newtarget = targetdir + if path.isdir(path.join(source, entry)): + newtarget = path.join(targetdir, entry) + copy_static_entry(path.join(source, entry), newtarget, + builder, context, level=level+1, + exclude_matchers=exclude_matchers) _DEBUG_HEADER = '''\ diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index 61b905f6..1e0c9f77 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -240,6 +240,12 @@ class HTMLTranslator(BaseTranslator): self.body.append('.'.join(map(str, numbers)) + self.secnumber_suffix) + # overwritten to avoid emitting empty <ul></ul> + def visit_bullet_list(self, node): + if len(node) == 1 and node[0].tagname == 'toctree': + raise nodes.SkipNode + BaseTranslator.visit_bullet_list(self, node) + # overwritten def visit_title(self, node): BaseTranslator.visit_title(self, node) |