diff --git a/.travis.yml b/.travis.yml index b7110f065..5a49bf106 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,13 +13,14 @@ matrix: include: - python: '3.5' env: - - TOXENV=du13 + - TOXENV=du12 - python: '3.6' env: - - TOXENV=py36 - - PYTEST_ADDOPTS="--cov ./ --cov-append --cov-config setup.cfg" + - TOXENV=du13 - python: '3.7' - env: TOXENV=py37 + env: + - TOXENV=py37 + - PYTEST_ADDOPTS="--cov ./ --cov-append --cov-config setup.cfg" - python: 'nightly' env: TOXENV=py38 - python: '3.6' diff --git a/CHANGES b/CHANGES index e266c50da..28e99a44d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,9 +1,51 @@ -Release 2.0.0 (in development) +Release 2.1.0 (in development) ============================== Dependencies ------------ +Incompatible changes +-------------------- + +Deprecated +---------- + +Features added +-------------- + +Bugs fixed +---------- + +Testing +-------- + +Release 2.0.0 beta2 (in development) +==================================== + +Dependencies +------------ + +Incompatible changes +-------------------- + +Deprecated +---------- + +Features added +-------------- + +Bugs fixed +---------- + +Testing +-------- + +Release 2.0.0 beta1 (in development) +==================================== + +Dependencies +------------ + * LaTeX builder now depends on TeX Live 2015 or above. * LaTeX builder (with ``'pdflatex'`` :confval:`latex_engine`) will process Unicode Greek letters in text (not in math mark-up) via the text font and @@ -23,7 +65,9 @@ Dependencies - sphinxcontrib.applehelp - sphinxcontrib.devhelp + - sphinxcontrib.htmlhelp - sphinxcontrib.jsmath + - sphinxcontrib.serializinghtml - sphinxcontrib.qthelp Incompatible changes @@ -59,12 +103,17 @@ Incompatible changes from LaTeX preamble now get overwritten. Use ``\sphinxtableofcontentshook`` to insert custom user definitions. See :ref:`latex-macros`. * quickstart: Simplify generated ``conf.py`` +* #4148: quickstart: some questions are removed. They are still able to specify + via command line options * websupport: unbundled from sphinx core. Please use sphinxcontrib-websupport * C++, the visibility of base classes is now always rendered as present in the input. That is, ``private`` is now shown, where it was ellided before. * LaTeX: graphics inclusion of oversized images rescales to not exceed the text width and height, even if width and/or height option were used. (refs: #5956) +* epub: ``epub_title`` defaults to the :confval:`project` option +* #4550: All tables and figures without ``align`` option are displayed to center +* #4587: html: Output HTML5 by default Deprecated ---------- @@ -75,6 +124,10 @@ Deprecated ``EpubBuilder.build_container()``, ``EpubBuilder.bulid_content()``, ``EpubBuilder.build_toc()`` and ``EpubBuilder.build_epub()`` * The arguments of ``Epub3Builder.build_navigation_doc()`` +* The config variables + + - :confval:`html_experimental_html5_writer` + * The ``encoding`` argument of ``autodoc.Documenter.get_doc()``, ``autodoc.DocstringSignatureMixin.get_doc()``, ``autodoc.DocstringSignatureMixin._find_signature()``, and @@ -108,21 +161,30 @@ Deprecated * ``sphinx.io.SphinxFileInput.supported`` * ``sphinx.io.SphinxRSTFileInput`` * ``sphinx.registry.SphinxComponentRegistry.add_source_input()`` +* ``sphinx.roles.abbr_role()`` +* ``sphinx.roles.emph_literal_role()`` +* ``sphinx.roles.menusel_role()`` +* ``sphinx.roles.index_role()`` +* ``sphinx.roles.indexmarkup_role()`` * ``sphinx.testing.util.remove_unicode_literal()`` * ``sphinx.util.attrdict`` * ``sphinx.util.force_decode()`` * ``sphinx.util.get_matching_docs()`` * ``sphinx.util.inspect.Parameter`` +* ``sphinx.util.jsonimpl`` * ``sphinx.util.osutil.EEXIST`` * ``sphinx.util.osutil.EINVAL`` * ``sphinx.util.osutil.ENOENT`` * ``sphinx.util.osutil.EPIPE`` * ``sphinx.util.osutil.walk()`` * ``sphinx.util.PeekableIterator`` +* ``sphinx.util.pycompat.NoneType`` * ``sphinx.util.pycompat.TextIOWrapper`` * ``sphinx.util.pycompat.UnicodeMixin`` * ``sphinx.util.pycompat.htmlescape`` * ``sphinx.util.pycompat.indent`` +* ``sphinx.util.pycompat.sys_encoding`` +* ``sphinx.util.pycompat.terminal_safe()`` * ``sphinx.util.pycompat.u`` * ``sphinx.writers.latex.ExtBabel`` * ``sphinx.writers.latex.LaTeXTranslator._make_visit_admonition()`` @@ -154,6 +216,11 @@ Features added * #4182: autodoc: Support :confval:`suppress_warnings` * #5533: autodoc: :confval:`autodoc_default_options` supports ``member-order`` +* #5394: autodoc: Display readable names in type annotations for mocked objects +* #5459: autodoc: :confval:`autodoc_default_options` accepts ``True`` as a value +* #1148: autodoc: Add :rst:dir:`autodecorator` directive for decorators +* #5635: autosummary: Add :confval:`autosummary_mock_imports` to mock external + libraries on importing targets * #4018: htmlhelp: Add :confval:`htmlhelp_file_suffix` and :confval:`htmlhelp_link_suffix` * #5559: text: Support complex tables (colspan and rowspan) @@ -173,10 +240,17 @@ Features added * #4611: epub: Show warning for duplicated ToC entries * #1851: Allow to omit an argument for :rst:dir:`code-block` directive. If omitted, it follows :rst:dir:`highlight` or :confval:`highlight_language` +* #4587: html: Add :confval:`html4_writer` to use old HTML4 writer * #6016: HTML search: A placeholder for the search summary prevents search result links from changing their position when the search terminates. This makes navigating search results easier. - +* #5196: linkcheck also checks remote images exist +* #5924: githubpages: create CNAME file for custom domains when + :confval:`html_baseurl` set +* #4261: autosectionlabel: restrict the labeled sections by new config value; + :confval:`autosectionlabel_maxdepth` + + Bugs fixed ---------- @@ -225,6 +299,10 @@ Bugs fixed ---------- * LaTeX: Remove extraneous space after author names on PDF title page (refs: #6004) +* #6026: LaTeX: A cross reference to definition list does not work +* #6046: LaTeX: ``TypeError`` is raised when invalid latex_elements given +* #6019: imgconverter: Including multipage PDF fails +* #6047: autodoc: ``autofunction`` emits a warning for method objects Testing -------- diff --git a/bindep.txt b/bindep.txt new file mode 100644 index 000000000..b99782017 --- /dev/null +++ b/bindep.txt @@ -0,0 +1,15 @@ +texlive [platform:rpm] +texlive-fncychap [platform:rpm] +texlive-titlesec [platform:rpm] +texlive-tabulary [platform:rpm] +texlive-framed [platform:rpm] +texlive-wrapfig [platform:rpm] +texlive-upquote [platform:rpm] +texlive-capt-of [platform:rpm] +texlive-needspace [platform:rpm] +texlive-polyglossia [platform:rpm] +texlive-luatex85 [platform:rpm] +texlive-anyfontsize [platform:rpm] +texlive-ctablestack [platform:rpm] +texlive-gnu-freefont [platform:rpm] +latexmk [platform:rpm] diff --git a/doc/_themes/sphinx13/static/sphinx13.css b/doc/_themes/sphinx13/static/sphinx13.css index 6315800f7..3dadf8168 100644 --- a/doc/_themes/sphinx13/static/sphinx13.css +++ b/doc/_themes/sphinx13/static/sphinx13.css @@ -337,7 +337,7 @@ a tt:hover { } pre { - font-family: 'Consolas', 'DejaVu Sans Mono', + font-family: 'Consolas', 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 13px; letter-spacing: 0.015em; @@ -388,32 +388,29 @@ div.admonition, div.warning { padding: 0; } -div.admonition p, div.warning p { +div.admonition > p, div.warning > p { margin: 0.5em 1em 0.5em 1em; padding: 0; } -div.admonition pre, div.warning pre { +div.admonition > pre, div.warning > pre { margin: 0.4em 1em 0.4em 1em; } -div.admonition p.admonition-title, -div.warning p.admonition-title { - margin-top: 1em; - padding-top: 0.5em; +div.admonition > p.admonition-title, +div.warning > p.admonition-title { + margin-top: 0.5em; font-weight: bold; } div.warning { border: 1px solid #940000; -/* background-color: #FFCCCF;*/ } -div.warning p.admonition-title { -} - -div.admonition ul, div.admonition ol, -div.warning ul, div.warning ol { +div.admonition > ul, +div.admonition > ol, +div.warning > ul, +div.warning > ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } diff --git a/doc/extdev/index.rst b/doc/extdev/index.rst index 95564936c..7b4bbc692 100644 --- a/doc/extdev/index.rst +++ b/doc/extdev/index.rst @@ -290,11 +290,36 @@ The following is a list of deprecated interfaces. - 4.0 - ``sphinx.builders.epub3.validate_config_values()`` + * - ``sphinx.builders.html.JSONHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.JSONHTMLBuilder`` + + * - ``sphinx.builders.html.PickleHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.PickleHTMLBuilder`` + + * - ``sphinx.builders.html.SerializingHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.SerializingHTMLBuilder`` + * - ``sphinx.builders.html.SingleFileHTMLBuilder`` - 2.0 - 4.0 - ``sphinx.builders.singlehtml.SingleFileHTMLBuilder`` + * - ``sphinx.builders.html.WebHTMLBuilder`` + - 2.0 + - 4.0 + - ``sphinx.builders.serializinghtml.PickleHTMLBuilder`` + + * - ``sphinx.builders.htmlhelp`` + - 2.0 + - 4.0 + - ``sphinxcontrib.htmlhelp`` + * - ``sphinx.builders.htmlhelp.HTMLHelpBuilder.open_file()`` - 2.0 - 4.0 @@ -370,6 +395,31 @@ The following is a list of deprecated interfaces. - 4.0 - ``sphinxcontrib.jsmath`` + * - ``sphinx.roles.abbr_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.Abbreviation`` + + * - ``sphinx.roles.emph_literal_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.EmphasizedLiteral`` + + * - ``sphinx.roles.menusel_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.GUILabel`` or ``sphinx.roles.MenuSelection`` + + * - ``sphinx.roles.index_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.Index`` + + * - ``sphinx.roles.indexmarkup_role()`` + - 2.0 + - 4.0 + - ``sphinx.roles.PEP`` or ``sphinx.roles.RFC`` + * - ``sphinx.testing.util.remove_unicode_literal()`` - 2.0 - 4.0 @@ -395,6 +445,11 @@ The following is a list of deprecated interfaces. - 3.0 - N/A + * - ``sphinx.util.jsonimpl`` + - 2.0 + - 4.0 + - ``sphinxcontrib.serializinghtml.jsonimpl`` + * - ``sphinx.util.osutil.EEXIST`` - 2.0 - 4.0 @@ -420,6 +475,11 @@ The following is a list of deprecated interfaces. - 4.0 - ``os.walk()`` + * - ``sphinx.util.pycompat.NoneType`` + - 2.0 + - 4.0 + - ``sphinx.util.typing.NoneType`` + * - ``sphinx.util.pycompat.TextIOWrapper`` - 2.0 - 4.0 @@ -440,6 +500,16 @@ The following is a list of deprecated interfaces. - 4.0 - ``textwrap.indent()`` + * - ``sphinx.util.pycompat.sys_encoding`` + - 2.0 + - 4.0 + - ``sys.getdefaultencoding()`` + + * - ``sphinx.util.pycompat.terminal_safe()`` + - 2.0 + - 4.0 + - ``sphinx.util.console.terminal_safe()`` + * - ``sphinx.util.pycompat.u`` - 2.0 - 4.0 diff --git a/doc/extdev/utils.rst b/doc/extdev/utils.rst index ebf05629e..3aac51ed9 100644 --- a/doc/extdev/utils.rst +++ b/doc/extdev/utils.rst @@ -18,5 +18,11 @@ components (e.g. :class:`.Config`, :class:`.BuildEnvironment` and so on) easily. .. autoclass:: sphinx.util.docutils.SphinxDirective :members: +.. autoclass:: sphinx.util.docutils.SphinxRole + :members: + +.. autoclass:: sphinx.util.docutils.ReferenceRole + :members: + .. autoclass:: sphinx.transforms.post_transforms.images.ImageConverter :members: diff --git a/doc/usage/builders/index.rst b/doc/usage/builders/index.rst index 5cc6df31c..3b74a02e1 100644 --- a/doc/usage/builders/index.rst +++ b/doc/usage/builders/index.rst @@ -28,6 +28,7 @@ The builder's "name" must be given to the **-b** command-line option of .. autoattribute:: supported_image_types +.. module:: sphinx.builders.dirhtml .. class:: DirectoryHTMLBuilder This is a subclass of the standard HTML builder. Its output is a directory @@ -45,6 +46,7 @@ The builder's "name" must be given to the **-b** command-line option of .. versionadded:: 0.6 +.. module:: sphinx.builders.singlehtml .. class:: SingleFileHTMLBuilder This is an HTML builder that combines the whole project in one output file. @@ -297,7 +299,7 @@ name is ``rinoh``. Refer to the `rinohtype manual`_ for details. .. versionadded:: 1.1 -.. currentmodule:: sphinx.builders.html +.. currentmodule:: sphinxcontrib.serializinghtml .. class:: SerializingHTMLBuilder This builder uses a module that implements the Python serialization API diff --git a/doc/usage/configuration.rst b/doc/usage/configuration.rst index 8b82147c1..ada9efefc 100644 --- a/doc/usage/configuration.rst +++ b/doc/usage/configuration.rst @@ -1331,6 +1331,12 @@ that use Sphinx's HTMLWriter class. .. versionadded:: 1.6 + .. deprecated:: 2.0 + +.. confval:: html4_writer + + Output is processed with HTML4 writer. Default is ``False``. + Options for Single HTML output ------------------------------- @@ -1561,7 +1567,11 @@ the `Dublin Core metadata `_. .. confval:: epub_title The title of the document. It defaults to the :confval:`html_title` option - but can be set independently for epub creation. + but can be set independently for epub creation. It defaults to the + :confval:`project` option. + + .. versionchanged:: 2.0 + It defaults to the ``project`` option. .. confval:: epub_description diff --git a/doc/usage/extensions/autodoc.rst b/doc/usage/extensions/autodoc.rst index 36d497543..cb41cb07d 100644 --- a/doc/usage/extensions/autodoc.rst +++ b/doc/usage/extensions/autodoc.rst @@ -237,6 +237,7 @@ inserting them into the page source under a suitable :rst:dir:`py:module`, .. rst:directive:: autofunction + autodecorator autodata automethod autoattribute @@ -293,10 +294,11 @@ inserting them into the page source under a suitable :rst:dir:`py:module`, docstrings. .. versionchanged:: 1.1 Comment docs are now allowed on the same line after an assignment. - .. versionchanged:: 1.2 :rst:dir:`autodata` and :rst:dir:`autoattribute` have an ``annotation`` option. + .. versionchanged:: 2.0 + :rst:dir:`autodecorator` added. .. note:: @@ -376,12 +378,12 @@ There are also new config values that you can set: 'members': 'var1, var2', 'member-order': 'bysource', 'special-members': '__init__', - 'undoc-members': None, + 'undoc-members': True, 'exclude-members': '__weakref__' } - Setting ``None`` is equivalent to giving the option name in the list format - (i.e. it means "yes/true/on"). + Setting ``None`` or ``True`` to the value is equivalent to giving only the + option name to the directives. The supported options are ``'members'``, ``'member-order'``, ``'undoc-members'``, ``'private-members'``, ``'special-members'``, @@ -390,6 +392,9 @@ There are also new config values that you can set: .. versionadded:: 1.8 + .. versionchanged:: 2.0 + Accepts ``True`` as a value. + .. confval:: autodoc_docstring_signature Functions imported from C modules cannot be introspected, and therefore the diff --git a/doc/usage/extensions/autosectionlabel.rst b/doc/usage/extensions/autosectionlabel.rst index 20b15ca20..caaa5db26 100644 --- a/doc/usage/extensions/autosectionlabel.rst +++ b/doc/usage/extensions/autosectionlabel.rst @@ -38,3 +38,10 @@ Configuration called ``Introduction`` that appears in document ``index.rst``. Useful for avoiding ambiguity when the same section heading appears in different documents. + +.. confval:: autosectionlabel_maxdepth + + If set, autosectionlabel chooses the sections for labeling by its depth. For + example, when set 1 to ``autosectionlabel_maxdepth``, labels are generated + only for top level sections, and deeper sections are not labeled. It + defaults to ``None`` (disabled). diff --git a/doc/usage/extensions/autosummary.rst b/doc/usage/extensions/autosummary.rst index c9d04dda8..2bf8a7d1d 100644 --- a/doc/usage/extensions/autosummary.rst +++ b/doc/usage/extensions/autosummary.rst @@ -181,6 +181,12 @@ Packages can be explored recursively when generating stub pages. .. versionadded:: 2.0 +.. confval:: autosummary_mock_imports + + This value contains a list of modules to be mocked up. See + :confval:`autodoc_mock_imports` for more details. It defaults to + :confval:`autodoc_mock_imports`. + Customizing templates --------------------- diff --git a/doc/usage/extensions/githubpages.rst b/doc/usage/extensions/githubpages.rst index f19666ef1..6d56a3036 100644 --- a/doc/usage/extensions/githubpages.rst +++ b/doc/usage/extensions/githubpages.rst @@ -6,5 +6,11 @@ .. versionadded:: 1.4 +.. versionchanged:: 2.0 + Support ``CNAME`` file + This extension creates ``.nojekyll`` file on generated HTML directory to publish the document on GitHub Pages. + +It also creates a ``CNAME`` file for custom domains when :confval:`html_baseurl` +set. diff --git a/setup.py b/setup.py index 5b2c38e8c..79c466321 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,8 @@ install_requires = [ 'sphinxcontrib-applehelp', 'sphinxcontrib-devhelp', 'sphinxcontrib-jsmath', + 'sphinxcontrib-htmlhelp', + 'sphinxcontrib-serializinghtml', 'sphinxcontrib-qthelp', 'Jinja2>=2.3', 'Pygments>=2.0', diff --git a/sphinx/__init__.py b/sphinx/__init__.py index bfa5297d5..0a6f26584 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -32,8 +32,8 @@ if 'PYTHONWARNINGS' not in os.environ: warnings.filterwarnings('ignore', "'U' mode is deprecated", DeprecationWarning, module='docutils.io') -__version__ = '2.0.0+' -__released__ = '2.0.0' # used when Sphinx builds its own docs +__version__ = '2.1.0+' +__released__ = '2.1.0' # used when Sphinx builds its own docs #: Version info for better programmatic use. #: @@ -43,7 +43,7 @@ __released__ = '2.0.0' # used when Sphinx builds its own docs #: #: .. versionadded:: 1.2 #: Before version 1.2, check the string ``sphinx.__version__``. -version_info = (2, 0, 0, 'beta', 0) +version_info = (2, 1, 0, 'beta', 0) package_dir = path.abspath(path.dirname(__file__)) diff --git a/sphinx/application.py b/sphinx/application.py index cce9926b5..6d553333b 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -37,7 +37,6 @@ from sphinx.registry import SphinxComponentRegistry from sphinx.util import docutils from sphinx.util import import_object, progress_message from sphinx.util import logging -from sphinx.util import pycompat # noqa: F401 from sphinx.util.build_phase import BuildPhase from sphinx.util.console import bold # type: ignore from sphinx.util.docutils import directive_helper @@ -68,7 +67,6 @@ builtin_extensions = ( 'sphinx.builders.dummy', 'sphinx.builders.gettext', 'sphinx.builders.html', - 'sphinx.builders.htmlhelp', 'sphinx.builders.latex', 'sphinx.builders.linkcheck', 'sphinx.builders.manpage', @@ -108,6 +106,8 @@ builtin_extensions = ( # 1st party extensions 'sphinxcontrib.applehelp', 'sphinxcontrib.devhelp', + 'sphinxcontrib.htmlhelp', + 'sphinxcontrib.serializinghtml', 'sphinxcontrib.qthelp', # Strictly, alabaster theme is not a builtin extension, # but it is loaded automatically to use it as default theme. diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index c8cd44e55..335880ef0 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -19,7 +19,7 @@ from sphinx.environment.adapters.asset import ImageAdapter from sphinx.errors import SphinxError from sphinx.io import read_doc from sphinx.locale import __ -from sphinx.util import i18n, import_object, logging, rst, status_iterator +from sphinx.util import i18n, import_object, logging, rst, progress_message, status_iterator from sphinx.util.build_phase import BuildPhase from sphinx.util.console import bold # type: ignore from sphinx.util.docutils import sphinx_domains @@ -351,16 +351,14 @@ class Builder: if updated_docnames: # save the environment from sphinx.application import ENV_PICKLE_FILENAME - logger.info(bold(__('pickling environment... ')), nonl=True) - with open(path.join(self.doctreedir, ENV_PICKLE_FILENAME), 'wb') as f: - pickle.dump(self.env, f, pickle.HIGHEST_PROTOCOL) - logger.info(__('done')) + with progress_message(__('pickling environment')): + with open(path.join(self.doctreedir, ENV_PICKLE_FILENAME), 'wb') as f: + pickle.dump(self.env, f, pickle.HIGHEST_PROTOCOL) # global actions self.app.phase = BuildPhase.CONSISTENCY_CHECK - logger.info(bold(__('checking consistency... ')), nonl=True) - self.env.check_consistency() - logger.info(__('done')) + with progress_message(__('checking consistency')): + self.env.check_consistency() else: if method == 'update' and not docnames: logger.info(bold(__('no targets are out of date.'))) @@ -559,9 +557,8 @@ class Builder: docnames.add(tocdocname) docnames.add(self.config.master_doc) - logger.info(bold(__('preparing documents... ')), nonl=True) - self.prepare_writing(docnames) - logger.info(__('done')) + with progress_message(__('preparing documents')): + self.prepare_writing(docnames) if self.parallel_ok: # number of subprocesses is parallel-1 because the main process diff --git a/sphinx/builders/_epub_base.py b/sphinx/builders/_epub_base.py index 5516fdaf8..00fa7187d 100644 --- a/sphinx/builders/_epub_base.py +++ b/sphinx/builders/_epub_base.py @@ -134,8 +134,6 @@ class EpubBuilder(StandaloneHTMLBuilder): html_scaled_image_link = False # don't generate search index or include search page search = False - # use html5 translator by default - default_html5_translator = True coverpage_name = COVERPAGE_NAME toctree_template = TOCTREE_TEMPLATE @@ -655,7 +653,7 @@ class EpubBuilder(StandaloneHTMLBuilder): if incr: self.playorder += 1 self.tocid += 1 - return NavPoint(self.esc('navPoint%d' % self.tocid), self.playorder, + return NavPoint('navPoint%d' % self.tocid, self.playorder, node['text'], node['refuri'], []) def build_navpoints(self, nodes): diff --git a/sphinx/builders/epub3.py b/sphinx/builders/epub3.py index 83088bb45..f97d96396 100644 --- a/sphinx/builders/epub3.py +++ b/sphinx/builders/epub3.py @@ -269,7 +269,7 @@ def setup(app): app.add_config_value('epub_version', 3.0, 'epub') # experimental app.add_config_value('epub_theme', 'epub', 'epub') app.add_config_value('epub_theme_options', {}, 'epub') - app.add_config_value('epub_title', lambda self: self.html_title, 'epub') + app.add_config_value('epub_title', lambda self: self.project, 'epub') app.add_config_value('epub_author', lambda self: self.author, 'epub') app.add_config_value('epub_language', lambda self: self.language or 'en', 'epub') app.add_config_value('epub_publisher', lambda self: self.author, 'epub') diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index 09ba8d677..2c5ebcd4d 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -9,16 +9,13 @@ """ import html -import pickle import posixpath import re import sys -import types import warnings from hashlib import md5 from os import path -import docutils from docutils import nodes from docutils.core import publish_parts from docutils.frontend import OptionParser @@ -26,7 +23,6 @@ from docutils.io import DocTreeInput, StringOutput from docutils.utils import relative_path from sphinx import package_dir, __display_version__ -from sphinx.application import ENV_PICKLE_FILENAME from sphinx.builders import Builder from sphinx.deprecation import ( RemovedInSphinx30Warning, RemovedInSphinx40Warning, deprecated_alias @@ -39,15 +35,14 @@ from sphinx.highlighting import PygmentsBridge from sphinx.locale import _, __ from sphinx.search import js_index from sphinx.theming import HTMLThemeFactory -from sphinx.util import jsonimpl, logging, status_iterator +from sphinx.util import logging, status_iterator from sphinx.util.console import bold # type: ignore from sphinx.util.docutils import is_html5_writer_available, new_document from sphinx.util.fileutil import copy_asset from sphinx.util.i18n import format_date from sphinx.util.inventory import InventoryFile from sphinx.util.matching import patmatch, Matcher, DOTFILES -from sphinx.util.osutil import SEP, os_path, relative_uri, ensuredir, \ - movefile, copyfile +from sphinx.util.osutil import os_path, relative_uri, ensuredir, movefile, copyfile from sphinx.writers.html import HTMLWriter, HTMLTranslator if False: @@ -58,7 +53,7 @@ if False: from sphinx.domains import Domain, Index, IndexEntry # NOQA from sphinx.util.tags import Tags # NOQA -# Experimental HTML5 Writer +# HTML5 Writer is avialable or not if is_html5_writer_available(): from sphinx.writers.html5 import HTML5Translator html5_ready = True @@ -67,8 +62,6 @@ else: #: the filename for the inventory of objects INVENTORY_FILENAME = 'objects.inv' -#: the filename for the "last build" file (for serializing builders) -LAST_BUILD_FILENAME = 'last_build' logger = logging.getLogger(__name__) return_codes_re = re.compile('[\r\n]+') @@ -116,24 +109,24 @@ class JSContainer(list): """The container for JavaScript scripts.""" def insert(self, index, obj): # type: (int, str) -> None - warnings.warn('builder.script_files is deprecated. ' - 'Please use app.add_js_file() instead.', - RemovedInSphinx30Warning, stacklevel=2) + warnings.warn('To modify script_files in the theme is deprecated. ' + 'Please insert a