diff --git a/CHANGES b/CHANGES index c44a34fb779..5658cc43f1f 100644 --- a/CHANGES +++ b/CHANGES @@ -19,7 +19,7 @@ Bugs fixed Testing -------- -Release 4.1.1 (in development) +Release 4.1.2 (in development) ============================== Dependencies @@ -40,6 +40,20 @@ Bugs fixed Testing -------- +Release 4.1.1 (released Jul 15, 2021) +===================================== + +Dependencies +------------ + +* #9434: sphinxcontrib-htmlhelp-2.0.0 or above +* #9434: sphinxcontrib-serializinghtml-1.1.5 or above + +Bugs fixed +---------- + +* #9438: html: HTML logo or Favicon specified as file not being found on output + Release 4.1.0 (released Jul 12, 2021) ===================================== diff --git a/setup.py b/setup.py index 206ff4ad490..4a1d5aeedf7 100644 --- a/setup.py +++ b/setup.py @@ -18,8 +18,8 @@ 'sphinxcontrib-applehelp', 'sphinxcontrib-devhelp', 'sphinxcontrib-jsmath', - 'sphinxcontrib-htmlhelp', - 'sphinxcontrib-serializinghtml', + 'sphinxcontrib-htmlhelp>=2.0.0', + 'sphinxcontrib-serializinghtml>=1.1.5', 'sphinxcontrib-qthelp', 'Jinja2>=2.3', 'Pygments>=2.0', diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py index ad8436c9324..7265370bb41 100644 --- a/sphinx/builders/html/__init__.py +++ b/sphinx/builders/html/__init__.py @@ -468,6 +468,16 @@ def prepare_writing(self, docnames: Set[str]) -> None: else: self.last_updated = None + # If the logo or favicon are urls, keep them as-is, otherwise + # strip the relative path as the files will be copied into _static. + logo = self.config.html_logo or '' + favicon = self.config.html_favicon or '' + + if not isurl(logo): + logo = path.basename(logo) + if not isurl(favicon): + favicon = path.basename(favicon) + self.relations = self.env.collect_relations() rellinks: List[Tuple[str, str, str, str]] = [] @@ -510,8 +520,8 @@ def prepare_writing(self, docnames: Set[str]) -> None: 'rellinks': rellinks, 'builder': self.name, 'parents': [], - 'logo': self.config.html_logo or '', - 'favicon': self.config.html_favicon or '', + 'logo': logo, + 'favicon': favicon, 'html5_doctype': html5_ready and not self.config.html4_writer, } if self.theme: diff --git a/tests/roots/test-local-logo/conf.py b/tests/roots/test-local-logo/conf.py new file mode 100644 index 00000000000..1a166c13058 --- /dev/null +++ b/tests/roots/test-local-logo/conf.py @@ -0,0 +1,4 @@ +latex_documents = [ + ('index', 'test.tex', 'The basic Sphinx documentation for testing', 'Sphinx', 'report') +] +html_logo = "images/img.png" diff --git a/tests/roots/test-local-logo/images/img.png b/tests/roots/test-local-logo/images/img.png new file mode 100644 index 00000000000..a97e86d66af Binary files /dev/null and b/tests/roots/test-local-logo/images/img.png differ diff --git a/tests/roots/test-local-logo/index.rst b/tests/roots/test-local-logo/index.rst new file mode 100644 index 00000000000..48407e643c4 --- /dev/null +++ b/tests/roots/test-local-logo/index.rst @@ -0,0 +1,32 @@ +The basic Sphinx documentation for testing +========================================== + +Sphinx is a tool that makes it easy to create intelligent and beautiful +documentation for Python projects (or other documents consisting of multiple +reStructuredText sources), written by Georg Brandl. It was originally created +for the new Python documentation, and has excellent facilities for Python +project documentation, but C/C++ is supported as well, and more languages are +planned. + +Sphinx uses reStructuredText as its markup language, and many of its strengths +come from the power and straightforwardness of reStructuredText and its parsing +and translating suite, the Docutils. + +features +-------- + +Among its features are the following: + +* Output formats: HTML (including derivative formats such as HTML Help, Epub + and Qt Help), plain text, manual pages and LaTeX or direct PDF output + using rst2pdf +* Extensive cross-references: semantic markup and automatic links + for functions, classes, glossary terms and similar pieces of information +* Hierarchical structure: easy definition of a document tree, with automatic + links to siblings, parents and children +* Automatic indices: general index as well as a module index +* Code handling: automatic highlighting using the Pygments highlighter +* Flexible HTML output using the Jinja 2 templating engine +* Various extensions are available, e.g. for automatic testing of snippets + and inclusion of appropriately formatted docstrings +* Setuptools integration diff --git a/tests/test_build_html.py b/tests/test_build_html.py index e74319f198b..d295cf982cd 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -1340,6 +1340,15 @@ def test_html_remote_logo(app, status, warning): assert not (app.outdir / 'python-logo.png').exists() +@pytest.mark.sphinx('html', testroot='local-logo') +def test_html_local_logo(app, status, warning): + app.builder.build_all() + + result = (app.outdir / 'index.html').read_text() + assert ('' in result) + assert (app.outdir / '_static/img.png').exists() + + @pytest.mark.sphinx('html', testroot='basic') def test_html_sidebar(app, status, warning): ctx = {}