summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2014-01-19 19:13:17 +0100
committerGeorg Brandl <georg@python.org>2014-01-19 19:13:17 +0100
commitcd7658dde7f32714f4e6013cd221a9ea6e88bb82 (patch)
tree329d1f0abf16c75666013bc877f7532a21663398
parent2a8cf7c7781a4554adbcb4bae6bec2a40bfc156d (diff)
parent468198f91b0a41056c46c25f8cedf5c528c97564 (diff)
downloadsphinx-cd7658dde7f32714f4e6013cd221a9ea6e88bb82.tar.gz
merge with stable
-rw-r--r--CHANGES47
-rw-r--r--doc/Makefile2
-rw-r--r--doc/markup/toctree.rst9
-rw-r--r--sphinx/builders/__init__.py2
-rw-r--r--sphinx/cmdline.py7
-rw-r--r--sphinx/environment.py7
-rw-r--r--sphinx/themes/basic/searchbox.html2
-rw-r--r--sphinx/util/__init__.py23
-rw-r--r--sphinx/writers/html.py6
9 files changed, 41 insertions, 64 deletions
diff --git a/CHANGES b/CHANGES
index 402487b2..45bf6a4b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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)