mirror of
https://github.com/readthedocs/sphinx_rtd_theme.git
synced 2026-10-15 10:52:01 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a3473dc15 | ||
|
|
6b587d1c67 | ||
|
|
768dcc1467 | ||
|
|
2c19bb149b | ||
|
|
a359d40e28 | ||
|
|
cf898d3acc | ||
|
|
42557430ef | ||
|
|
5c72f6504f | ||
|
|
68a89bb07e | ||
|
|
76a933b997 | ||
|
|
357e76dc42 | ||
|
|
28c377f99a | ||
|
|
80de90aecf | ||
|
|
17111add80 | ||
|
|
2da37d6afd | ||
|
|
7c9b1b5d39 | ||
|
|
c104410760 | ||
|
|
53ca116ef6 | ||
|
|
4498e97b46 | ||
|
|
84aea9b0ba | ||
|
|
febde39c7c | ||
|
|
32310a8190 | ||
|
|
8ce23cec96 | ||
|
|
46f5307dbd | ||
|
|
5838e6aa54 | ||
|
|
d34b71bb09 | ||
|
|
4874e9428d | ||
|
|
41aca736bc | ||
|
|
ffdabadaa4 | ||
|
|
c190c0064b | ||
|
|
923f9874a9 | ||
|
|
52e0cad4c2 | ||
|
|
6cf2ae7951 | ||
|
|
0e7b28ad4a | ||
|
|
15ed4de08d | ||
|
|
b5833585b2 | ||
|
|
775bca403c | ||
|
|
04f85fc422 | ||
|
|
9899ee4ee2 |
No files matched your search
+21
-34
@@ -11,10 +11,14 @@ commands:
|
||||
type: string
|
||||
sphinx-version:
|
||||
type: string
|
||||
default: "18,20,21,22,23,24,30,31,32,33,34,35,40,41,42,43,44,45,50,51,52,latest"
|
||||
default: "latest"
|
||||
steps:
|
||||
- checkout
|
||||
- run: pip install --user tox~=3.27
|
||||
# We cannot upgrade to Tox4 because running generative environments doesn't work.
|
||||
# I guess it has changed its syntax or similar.
|
||||
# $ tox run -e "py310-sphinx{50,51}"
|
||||
# ROOT: HandledError| provided environments not found in configuration file: ['51}']
|
||||
- run: pip install --user 'tox~=3.27'
|
||||
- run: tox -e "<<parameters.version>>-sphinx{<<parameters.sphinx-version>>}"
|
||||
run-build:
|
||||
description: "Ensure built assets are up to date"
|
||||
@@ -40,59 +44,51 @@ jobs:
|
||||
- image: 'cimg/python:3.9-node'
|
||||
steps:
|
||||
- run-build: {}
|
||||
py27:
|
||||
docker:
|
||||
- image: 'cimg/python:2.7'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py27
|
||||
sphinx-version: "17,18"
|
||||
py36:
|
||||
docker:
|
||||
- image: 'cimg/python:3.6'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py36
|
||||
py37:
|
||||
docker:
|
||||
- image: 'cimg/python:3.7'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py37
|
||||
py38:
|
||||
docker:
|
||||
- image: 'cimg/python:3.8'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py38
|
||||
sphinx-version: "18,20,21,22,23,24,30,31,32,33,34,35,40,41,42,43,44,45,50,51,52,60,latest"
|
||||
sphinx-version: "60,61,62,70,71"
|
||||
py39:
|
||||
docker:
|
||||
- image: 'cimg/python:3.9'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py39
|
||||
sphinx-version: "18,20,21,22,23,24,30,31,32,33,34,35,40,41,42,43,44,45,50,51,52,60,latest"
|
||||
sphinx-version: "60,61,62,70,71,72,73,74"
|
||||
py310:
|
||||
docker:
|
||||
- image: 'cimg/python:3.10'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py310
|
||||
sphinx-version: "42,43,44,45,50,51,52,53,60,latest"
|
||||
sphinx-version: "60,61,62,70,71,72,73,74,80,latest,dev"
|
||||
py311:
|
||||
docker:
|
||||
- image: 'cimg/python:3.11'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py311
|
||||
sphinx-version: "53,60,latest"
|
||||
sphinx-version: "72,73,74,80,latest,dev"
|
||||
|
||||
py312:
|
||||
docker:
|
||||
- image: 'cimg/python:3.12'
|
||||
steps:
|
||||
- run-tox:
|
||||
version: py312
|
||||
sphinx-version: "72,73,74,80,latest,dev"
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
tests:
|
||||
jobs:
|
||||
- build
|
||||
- py312:
|
||||
requires:
|
||||
- build
|
||||
- py311:
|
||||
requires:
|
||||
- build
|
||||
@@ -105,12 +101,3 @@ workflows:
|
||||
- py38:
|
||||
requires:
|
||||
- build
|
||||
- py37:
|
||||
requires:
|
||||
- build
|
||||
- py36:
|
||||
requires:
|
||||
- build
|
||||
- py27:
|
||||
requires:
|
||||
- build
|
||||
@@ -23,8 +23,6 @@ sphinx_rtd_theme/static/fonts/RobotoSlab/
|
||||
.node-version
|
||||
.tool-versions
|
||||
.nvmrc
|
||||
sphinx_rtd_theme/static/js/html5shiv.min.js
|
||||
sphinx_rtd_theme/static/js/html5shiv-printshiv.min.js
|
||||
.direnv/
|
||||
.envrc
|
||||
# Used for dockerized builds
|
||||
|
||||
+5
-1
@@ -1,7 +1,11 @@
|
||||
version: 2
|
||||
|
||||
build:
|
||||
os: "ubuntu-22.04"
|
||||
tools:
|
||||
python: "3.10"
|
||||
|
||||
python:
|
||||
version: 3.8
|
||||
install:
|
||||
- requirements: docs/requirements.txt
|
||||
- method: pip
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# This implicitely includes Python 3.10
|
||||
# This implicitly includes Python 3.10
|
||||
FROM node:14-alpine
|
||||
|
||||
# Do not use --update since that will also fetch the
|
||||
|
||||
@@ -7,6 +7,7 @@ recursive-include sphinx_rtd_theme *.css
|
||||
recursive-include sphinx_rtd_theme *.eot
|
||||
recursive-include sphinx_rtd_theme *.html
|
||||
recursive-include sphinx_rtd_theme *.js
|
||||
recursive-include sphinx_rtd_theme *.js_t
|
||||
recursive-include sphinx_rtd_theme *.svg
|
||||
recursive-include sphinx_rtd_theme *.ttf
|
||||
recursive-include sphinx_rtd_theme *.woff
|
||||
|
||||
+82
-1
@@ -4,8 +4,89 @@ Changelog
|
||||
|
||||
.. seealso:: :ref:`howto_upgrade`
|
||||
|
||||
.. |theme_version| replace:: 1.2.2rc1
|
||||
.. |theme_version| replace:: 3.0.0rc1
|
||||
|
||||
.. _release-3.0.0rc1:
|
||||
|
||||
3.0.0rc1
|
||||
========
|
||||
|
||||
Added
|
||||
-----
|
||||
|
||||
* Added support for Sphinx 8.
|
||||
* Added support for Python 3.12.
|
||||
* Added support for docutils ``>0.18, <0.22``.
|
||||
* Populate ``html_context`` with all the environment variables starting with ``READTHEDOCS_``.
|
||||
|
||||
Deprecations
|
||||
------------
|
||||
|
||||
* Drop support for Sphinx ``<6.0``.
|
||||
* Drop support for Python ``<3.8``.
|
||||
* ``analytics_id`` and ``analytics_anonymize_ip`` are deprecated, use sphinxcontrib-googleanalytics_ instead.
|
||||
* Drop support for all versions of Internet Explorer.
|
||||
* Raise a warning when defining ``html_theme_path``. This was an old config that's not required anymore.
|
||||
* ``extra_css_files`` is deprecated and support will be removed in a future version.
|
||||
|
||||
.. _sphinxcontrib-googleanalytics: https://pypi.org/project/sphinxcontrib-googleanalytics/
|
||||
|
||||
.. _release-2.1.0rc2:
|
||||
|
||||
2.1.0rc2
|
||||
========
|
||||
|
||||
Added
|
||||
-----
|
||||
|
||||
* Added ``flyout_display`` option to display the flyout
|
||||
``attached`` (bottom of the sidebard) or ``hidden`` (default).
|
||||
|
||||
.. _release-2.1.0rc1:
|
||||
|
||||
2.1.0rc1
|
||||
========
|
||||
|
||||
Added
|
||||
-----
|
||||
|
||||
* Render the menu versions/languages selector (flyout)
|
||||
using the new ``readthedocs-addons-data-ready`` Read the Docs Addons ``CustomEvent``.
|
||||
|
||||
Deprecations
|
||||
------------
|
||||
|
||||
* Remove ``html5shiv``.
|
||||
|
||||
.. _release-2.0.0:
|
||||
|
||||
2.0.0
|
||||
=====
|
||||
|
||||
Added
|
||||
-----
|
||||
|
||||
* Support for Sphinx versions ``6.x`` and ``7.x``
|
||||
* Support for docutils ``<=0.20``
|
||||
|
||||
Deprecations
|
||||
------------
|
||||
|
||||
* The HTML4 writer is now officially deprecated. An error will be thrown if your
|
||||
project configuration still uses the HTML4 writer.
|
||||
* Support for Sphinx versions < 5.0 was removed.
|
||||
* In addition, our supported dependencies will match the dependencies from our
|
||||
lowest supported Sphinx release, version 5.0: Python >= 3.6 and docutils > 0.14 and < 0.19
|
||||
|
||||
.. _release-1.3.0:
|
||||
|
||||
1.3.0
|
||||
=====
|
||||
|
||||
Added
|
||||
-----
|
||||
|
||||
* Relaxed requirements to include Sphinx release ``7.0``
|
||||
|
||||
.. _release-1.2.2:
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ For example:
|
||||
'style_external_links': False,
|
||||
'vcs_pageview_mode': '',
|
||||
'style_nav_header_background': 'white',
|
||||
'flyout_display': 'hidden',
|
||||
# Toc options
|
||||
'collapse_navigation': True,
|
||||
'sticky_navigation': True,
|
||||
@@ -101,7 +102,11 @@ Miscellaneous options
|
||||
|
||||
:type: string
|
||||
|
||||
.. deprecated:: 3.0.0
|
||||
The ``analytics_id`` option is deprecated, use the sphinxcontrib-googleanalytics_ extension instead.
|
||||
|
||||
.. _gtag.js: https://developers.google.com/gtagjs
|
||||
.. _sphinxcontrib-googleanalytics: https://pypi.org/project/sphinxcontrib-googleanalytics/
|
||||
|
||||
.. confval:: analytics_anonymize_ip
|
||||
|
||||
@@ -110,6 +115,9 @@ Miscellaneous options
|
||||
:type: boolean
|
||||
:default: ``False``
|
||||
|
||||
.. deprecated:: 3.0.0
|
||||
The ``analytics_anonymize_ip`` option is deprecated, use the sphinxcontrib-googleanalytics_ extension instead.
|
||||
|
||||
.. confval:: canonical_url
|
||||
|
||||
This will specify a `canonical URL`_ meta link element to tell search
|
||||
@@ -174,6 +182,16 @@ Miscellaneous options
|
||||
:type: string
|
||||
:default: ``#2980B9``
|
||||
|
||||
.. confval:: flyout_display
|
||||
|
||||
Specify how to display the flyout (language and version selector).
|
||||
This can be either ``attached`` or ``hidden``.
|
||||
``attached`` means that it will show the flyout in the bottom of the sidebar.
|
||||
You will need to disable the default `Read the Docs flyout <https://docs.readthedocs.io/en/stable/flyout-menu.html>`_ in order to not have 2 flyouts showing.
|
||||
|
||||
:type: str
|
||||
:default: ``hidden``
|
||||
|
||||
|
||||
File-wide metadata
|
||||
==================
|
||||
|
||||
+25
-29
@@ -86,7 +86,7 @@ Use the following steps:
|
||||
|
||||
# Runs the development webserver
|
||||
$ docker-compose run sphinx_rtd_theme dev
|
||||
|
||||
|
||||
# If you want to copy stuff out of the Docker environment, run this make
|
||||
# target or read the actual Makefile to see what is going on.
|
||||
# We suggest running this command every time that you want to quickly build
|
||||
@@ -103,20 +103,18 @@ compatibility.
|
||||
|
||||
The following cases need to be tested with changes to CSS or JavaScript:
|
||||
|
||||
* Multiple, modern browsers should be tested. We officially support back
|
||||
to IE11 at the moment
|
||||
* Multiple viewport sizes should be tested for changes. We support large,
|
||||
tablet, and mobile viewport sizes
|
||||
* We currently support both the Sphinx HTML4 writer and HTML5 writer. This makes
|
||||
for some complex CSS selectors
|
||||
* Multiple major versions of Sphinx should be tested. We currently support back
|
||||
to Sphinx version ``1.6``
|
||||
* Multiple, modern browsers should be tested.
|
||||
* Multiple viewport sizes should be tested for changes.
|
||||
We support large, tablet, and mobile viewport sizes
|
||||
* We currently support only HTML5 writer.
|
||||
* Multiple major versions of Sphinx should be tested.
|
||||
We currently support Sphinx ``>=6.0``
|
||||
|
||||
It's easiest to test combinations of dependency versions using ``tox``:
|
||||
|
||||
.. code:: console
|
||||
|
||||
% tox -e py3-sphinx34-html4
|
||||
% tox -e py312-sphinx74
|
||||
|
||||
If the tests and build are successful, you can view the built documentation at
|
||||
the directory noted by Sphinx:
|
||||
@@ -125,9 +123,9 @@ the directory noted by Sphinx:
|
||||
|
||||
build succeeded, 10 warnings.
|
||||
|
||||
The HTML pages are in .tox/py3-sphinx34-html4/tmp/html.
|
||||
The HTML pages are in .tox/py312-sphinx74/tmp/html.
|
||||
___________________________ summary ___________________________
|
||||
py3-sphinx34-html4: commands succeeded
|
||||
py312-sphinx74: commands succeeded
|
||||
congratulations :)
|
||||
|
||||
You can then open up this path with a series of browsers to test.
|
||||
@@ -137,12 +135,12 @@ multiple ``tox`` environments, and open both up for comparison:
|
||||
|
||||
.. code:: console
|
||||
|
||||
% tox -e py3-sphinx34-html4
|
||||
% tox -e py312-sphinx62
|
||||
...
|
||||
% tox -e py3-sphinx34-html5
|
||||
% tox -e py312-sphinx74
|
||||
...
|
||||
% firefox .tox/py3-sphinx34-html4/tmp/html/index.html
|
||||
% firefox .tox/py3-sphinx34-html5/tmp/html/index.html
|
||||
% firefox .tox/py312-sphinx62/tmp/html/index.html
|
||||
% firefox .tox/py312-sphinx74/tmp/html/index.html
|
||||
|
||||
You can also use a separate ``tox`` environment for building output to compare
|
||||
against. All of the ``tox`` environments have an additional postfix, ``-qa``, to
|
||||
@@ -155,28 +153,25 @@ For example, to test against the tag ``0.5.2``:
|
||||
.. code:: console
|
||||
|
||||
% git checkout 0.5.2
|
||||
% tox -e py3-sphinx34-html4-qa
|
||||
% tox -e py310-sphinx53-qa
|
||||
...
|
||||
% git checkout feature/example-pull-request
|
||||
% tox -e py3-sphinx34-html4
|
||||
% tox -e py310-sphinx53
|
||||
...
|
||||
% firefox .tox/py3-sphinx34-html4-qa/tmp/html/index.html
|
||||
% firefox .tox/py3-sphinx34-html4/tmp/html/index.html
|
||||
% firefox .tox/py310-sphinx53-qa/tmp/html/index.html
|
||||
% firefox .tox/py310-sphinx53/tmp/html/index.html
|
||||
|
||||
Currently, the most important environments to QA are:
|
||||
|
||||
.. This list is purposely shorter than what we describe above. If we test all of
|
||||
the cases above, we'll be here all day. Python 3, HTML4/5 writer, and latest
|
||||
the cases above, we'll be here all day. Python 3, and latest
|
||||
minor of each major Sphinx release should give us enough work.
|
||||
|
||||
* ``py3-sphinx18-html4``
|
||||
* ``py3-sphinx18-html5``
|
||||
* ``py3-sphinx24-html4``
|
||||
* ``py3-sphinx24-html5``
|
||||
* ``py3-sphinx35-html4``
|
||||
* ``py3-sphinx35-html5``
|
||||
* ``py3-sphinx41-html4``
|
||||
* ``py3-sphinx41-html5``
|
||||
* ``py312-sphinx62``
|
||||
* ``py312-sphinx74``
|
||||
* ``py312-sphinx80``
|
||||
* ``py312-sphinxlatest``
|
||||
* ``py312-sphinxdev``
|
||||
|
||||
Translations
|
||||
============
|
||||
@@ -232,6 +227,7 @@ Releasing the theme
|
||||
|
||||
To release a new version of the theme, core team will take the following steps:
|
||||
|
||||
#. Install the required depedencies with ``pip install '.[dev]'``.
|
||||
#. Bump the version by running ``bump2version [major|minor|patch|dev]``.
|
||||
This will automatically increase the correct part(s) of the version number,
|
||||
you do not need to specify the exact version number.
|
||||
|
||||
+8
-26
@@ -7,19 +7,11 @@ API documentation and generated content
|
||||
:mod:`test_py_module`
|
||||
=====================
|
||||
|
||||
.. only:: python3
|
||||
.. automodule:: test_py_module.test
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
||||
.. automodule:: test_py_module.test
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
||||
.. only:: python2
|
||||
|
||||
.. automodule:: test_py_module.test_py27
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
||||
C++ API
|
||||
=======
|
||||
@@ -153,18 +145,8 @@ Sphinx Extensions
|
||||
sphinx.ext.autosummary
|
||||
----------------------
|
||||
|
||||
.. only:: python3
|
||||
.. autosummary::
|
||||
|
||||
.. autosummary::
|
||||
|
||||
test_py_module.test.add_numbers
|
||||
test_py_module.test.subtract_numbers
|
||||
test_py_module.test.Foo
|
||||
|
||||
.. only:: python2
|
||||
|
||||
.. autosummary::
|
||||
|
||||
test_py_module.test_py27.add_numbers
|
||||
test_py_module.test_py27.subtract_numbers
|
||||
test_py_module.test_py27.Foo
|
||||
test_py_module.test.add_numbers
|
||||
test_py_module.test.subtract_numbers
|
||||
test_py_module.test.Foo
|
||||
@@ -1,152 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
This module will overwrite test.py for Python 2.7 builds.
|
||||
Type signatures cause autodoc to break in Python 2.7 documentation builds, so they are removed here.
|
||||
|
||||
Test Module for sphinx_rtd_theme."""
|
||||
|
||||
|
||||
class Foo:
|
||||
|
||||
"""Docstring for class Foo.
|
||||
|
||||
This text tests for the formatting of docstrings generated from output
|
||||
``sphinx.ext.autodoc``. Which contain reST, but sphinx nests it in the
|
||||
``<dl>``, and ``<dt>`` tags. Also, ``<tt>`` is used for class, method names
|
||||
and etc, but those will *always* have the ``.descname`` or
|
||||
``.descclassname`` class.
|
||||
|
||||
Term
|
||||
It is also possible to include definitions inside docstrings.
|
||||
They should be styled as a normal definition list.
|
||||
|
||||
:Field List:
|
||||
It is also possible to include definitions inside docstrings.
|
||||
They should be styled as a normal definition list.
|
||||
|
||||
.. [1] A footnote contains body elements, consistently indented by at
|
||||
least 3 spaces.
|
||||
|
||||
.. [Citation] A citation contains body elements, consistently indented by at
|
||||
least 3 spaces.
|
||||
|
||||
Normal ``<tt>`` (like the <tt> I just wrote here) needs to be shown with
|
||||
the same style as anything else with ````this type of markup````.
|
||||
|
||||
It's common for programmers to give a code example inside of their
|
||||
docstring::
|
||||
|
||||
from test_py_module import Foo
|
||||
|
||||
myclass = Foo()
|
||||
myclass.dothismethod('with this argument')
|
||||
myclass.flush()
|
||||
|
||||
print(myclass)
|
||||
|
||||
|
||||
Here is a link to :py:meth:`capitalize`.
|
||||
Here is a link to :py:meth:`__init__`.
|
||||
|
||||
"""
|
||||
|
||||
#: Doc comment for class attribute Foo.bar.
|
||||
#: It can have multiple lines.
|
||||
bar = 1
|
||||
|
||||
flox = 1.5 #: Doc comment for Foo.flox. One line only.
|
||||
|
||||
baz = 2
|
||||
"""Docstring for class attribute Foo.baz."""
|
||||
|
||||
def __init__(self, qux, spam=False):
|
||||
"""Start the Foo.
|
||||
|
||||
:param qux: The first argument to initialize class.
|
||||
:type qux: string
|
||||
:param spam: Spam me yes or no...
|
||||
:type spam: bool
|
||||
|
||||
"""
|
||||
#: Doc comment for instance attribute qux.
|
||||
self.qux = 3
|
||||
|
||||
self.spam = 4
|
||||
"""Docstring for instance attribute spam."""
|
||||
|
||||
def add(self, val1, val2):
|
||||
"""Return the added values.
|
||||
|
||||
:param val1: First number to add.
|
||||
:type val1: int
|
||||
:param val2: Second number to add.
|
||||
:type val2: int
|
||||
:rtype: int
|
||||
|
||||
The parameters of this method are described in the parameter list.
|
||||
"""
|
||||
|
||||
return val1 + val2
|
||||
|
||||
def capitalize(self, myvalue):
|
||||
"""Return a string as uppercase.
|
||||
|
||||
:param myvalue: String to change
|
||||
:type myvalue: string
|
||||
:rtype: string
|
||||
|
||||
"""
|
||||
|
||||
return myvalue.upper()
|
||||
|
||||
def another_function(self, a, b, **kwargs):
|
||||
"""
|
||||
Here is another function.
|
||||
|
||||
:param a: The number of green hats you own.
|
||||
:type a: int
|
||||
|
||||
:param b: The number of non-green hats you own.
|
||||
:type b: int
|
||||
|
||||
:param kwargs: Additional keyword arguments. Each keyword parameter
|
||||
should specify the name of your favorite cuisine.
|
||||
The values should be floats, specifying the mean price
|
||||
of your favorite dish in that cooking style.
|
||||
:type kwargs: float
|
||||
|
||||
:returns: A 2-tuple. The first element is the mean price of all dishes
|
||||
across cuisines. The second element is the total number of
|
||||
hats you own: :math:`a + b`.
|
||||
:rtype: tuple
|
||||
|
||||
:raises ValueError: When ``a`` is not an integer.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
This was added in 1.0
|
||||
.. versionchanged:: 2.0
|
||||
This was changed in 2.0
|
||||
.. deprecated:: 3.0
|
||||
This is deprecated since 3.0
|
||||
"""
|
||||
return sum(kwargs.values()) / len(kwargs), a + b
|
||||
|
||||
|
||||
def add_numbers(a, b):
|
||||
"""Add two numbers together
|
||||
|
||||
:param a: The first number
|
||||
:param b: The second number
|
||||
|
||||
Here is some more text.
|
||||
"""
|
||||
return a + b
|
||||
|
||||
|
||||
def subtract_numbers(a, b):
|
||||
"""Subtract two numbers
|
||||
|
||||
:param a: The first number
|
||||
:param b: The second number
|
||||
"""
|
||||
return a - b
|
||||
+46
-19
@@ -36,13 +36,8 @@ combinations.
|
||||
|
||||
Unsupported browser/operating system combinations include:
|
||||
|
||||
Internet Explorer (any OS, versions <=10)
|
||||
**Unsupported.** IE11 is the last partially supported version. We do no
|
||||
testing on prior versions.
|
||||
|
||||
Internet Explorer (any OS, version 11)
|
||||
We currently only partially support IE11, and only test for major bugs.
|
||||
Support will be removed in the :ref:`roadmap-release-2.0.0` release.
|
||||
Internet Explorer (any OS, any version)
|
||||
Support was removed in the :ref:`roadmap-release-3.0.0` release.
|
||||
|
||||
Opera (any OS, any version)
|
||||
**Community support only.** We do not receive enough traffic with this
|
||||
@@ -62,11 +57,23 @@ The theme officially supports the following dependencies in your Sphinx project:
|
||||
* - Dependency
|
||||
- Versions
|
||||
* - Python
|
||||
- 2.7 or 3.6 or greater
|
||||
- 3.8 or greater
|
||||
* - Sphinx
|
||||
- 1.7 up to at least 4.1
|
||||
- 6 or greater
|
||||
* - docutils
|
||||
- Up to 0.17
|
||||
- > 0.18, < 0.22
|
||||
|
||||
.. deprecated:: 3.0
|
||||
Sphinx < 6 support removed
|
||||
|
||||
.. deprecated:: 2.0
|
||||
Sphinx < 5 support removed
|
||||
|
||||
.. deprecated:: 2.0
|
||||
Python < 3.6 support removed
|
||||
|
||||
.. deprecated:: 2.0
|
||||
docutils < 0.14 support removed
|
||||
|
||||
.. versionadded:: 1.0
|
||||
Sphinx 4.0 support added
|
||||
@@ -143,15 +150,14 @@ like Sphinx 1.8, HTML4, or required support for IE11.
|
||||
2.0.0
|
||||
~~~~~
|
||||
|
||||
:Planned release date: 2022 Q1
|
||||
:Planned release date: 2023 Q3
|
||||
|
||||
This release will mark the beginning of a new round of feature development, as
|
||||
well as a number of backward incompatible changes and deprecations.
|
||||
This release will drop support for old Python and Sphinx versions.
|
||||
|
||||
Of note, the following backwards incompatible changes are planned for this
|
||||
Note the following backwards incompatible changes are planned for this
|
||||
release:
|
||||
|
||||
Sphinx 1.x, Sphinx 2.x, and Docutils 0.16 will not be tested
|
||||
Python < 3.6, Sphinx < 5 and Docutils < 0.14 will not be tested
|
||||
Official support will drop for these version, though they may still continue
|
||||
to work. Theme developers will not be testing these versions any longer.
|
||||
|
||||
@@ -160,7 +166,7 @@ HTML4 support will be removed
|
||||
and builds attempting to use the HTML4 writer will fail. If you are still
|
||||
using the HTML4 writer, or have the ``html4_writer = True`` option in your
|
||||
Sphinx configuration file, you will need to either remove this option or pin
|
||||
your dependency to ``sphinx_rtd_theme<=2.0.0`` until you can.
|
||||
your dependency to ``sphinx_rtd_theme<=3`` until you can.
|
||||
|
||||
This option was suggested in the past to work around issues with HTML5
|
||||
support and should no longer be required to use a modern combination of this
|
||||
@@ -171,10 +177,31 @@ HTML4 support will be removed
|
||||
3.0.0
|
||||
~~~~~
|
||||
|
||||
This release is not yet planned, however there are plans to potentially replace
|
||||
Wyrm with Bootstrap in a release after 2.0.
|
||||
:Planned release date: 2024 Q3
|
||||
|
||||
This release will drop support for old Python and Sphinx versions,
|
||||
and will add support for new ones.
|
||||
|
||||
Sphinx 5, Python < 3.8 and docutils < 0.18 support will be removed
|
||||
Sphinx 5 is the latest version that supports Python 3.6 and 3.7,
|
||||
and docutils < 0.18.
|
||||
|
||||
Internet Explorer 11 support will be dropped
|
||||
`IE11 reached end of life on 14 June 20222 <https://endoflife.date/internet-explorer>`_,
|
||||
so we are not supporting it on newer versions,
|
||||
starting on 3.0.0.
|
||||
|
||||
.. _roadmap-release-4.0.0:
|
||||
|
||||
4.0.0
|
||||
~~~~~
|
||||
|
||||
:Planned release date: 2024 Q2
|
||||
|
||||
This release is not yet planned.
|
||||
There are plans to potentially replace Wyrm with Bootstrap in a release after 3.0.
|
||||
|
||||
Also tentatively planned for this release is finally removing built CSS and
|
||||
JavaScript assets from our repository. This will remove the ability to install
|
||||
the package directly from GitHub, and instead users will be advised to install
|
||||
development releases from PyPI
|
||||
development releases from PyPI.
|
||||
+6
-26
@@ -31,15 +31,13 @@ In your Sphinx project's ``conf.py`` file, add ``sphinx_rtd_theme`` to the list
|
||||
|
||||
.. note::
|
||||
|
||||
Adding this theme as an extension is what enables localization of theme
|
||||
strings in your translated output. If these strings are not translated in
|
||||
your output, either we lack the localized strings for your locale, or you
|
||||
are using an old version of the theme.
|
||||
Adding this theme as an extension activates the ``sphinxcontrib-jquery`` extension,
|
||||
which is required for search, smooth scrolling, and the flyout menu.
|
||||
If any of these features don't work, make sure you have the theme declared in your ``extensions``.
|
||||
|
||||
..
|
||||
comment about this note: it's possibly not necessary to add the theme as an extension.
|
||||
Rather, this is an issue caused by setting html_theme_path.
|
||||
See: https://github.com/readthedocs/readthedocs.org/pull/9654
|
||||
.. More context for this note:
|
||||
* https://github.com/readthedocs/sphinx_rtd_theme/issues/1434#issuecomment-2288359582
|
||||
* https://github.com/readthedocs/sphinx_rtd_theme/issues/1222#issuecomment-2296703160
|
||||
|
||||
|
||||
.. _howto_upgrade:
|
||||
@@ -58,21 +56,3 @@ Otherwise, pip will ignore pre-releases. Add for instance ``sphinx-rtd-theme==1.
|
||||
|
||||
More information is available in Read the Docs' documentation on :doc:`rtd:guides/reproducible-builds`.
|
||||
|
||||
|
||||
Via Git or Download
|
||||
-------------------
|
||||
|
||||
.. warning::
|
||||
|
||||
Installing directly from the repository source is deprecated and is not
|
||||
recommended. Static assets won't be included in the repository starting in
|
||||
release :ref:`roadmap-release-3.0.0`.
|
||||
|
||||
Symlink or subtree the ``sphinx_rtd_theme/sphinx_rtd_theme`` repository into your documentation at
|
||||
``docs/_themes/sphinx_rtd_theme`` then add the following two settings to your Sphinx
|
||||
``conf.py`` file:
|
||||
|
||||
.. code:: python
|
||||
|
||||
html_theme = "sphinx_rtd_theme"
|
||||
html_theme_path = ["_themes", ]
|
||||
@@ -1 +1 @@
|
||||
sphinx>=6.1,<6.2
|
||||
sphinx>=7.1,<7.2
|
||||
Generated
+20
-87
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "sphinx_rtd_theme",
|
||||
"version": "1.2.2rc1",
|
||||
"version": "3.0.0rc1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -637,6 +637,16 @@
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"bindings": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"block-stream": {
|
||||
"version": "0.0.9",
|
||||
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
|
||||
@@ -1472,26 +1482,6 @@
|
||||
"integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
|
||||
"dev": true
|
||||
},
|
||||
"copy-webpack-plugin": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
|
||||
"integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cacache": "^12.0.3",
|
||||
"find-cache-dir": "^2.1.0",
|
||||
"glob-parent": "^3.1.0",
|
||||
"globby": "^7.1.1",
|
||||
"is-glob": "^4.0.1",
|
||||
"loader-utils": "^1.2.3",
|
||||
"minimatch": "^3.0.4",
|
||||
"normalize-path": "^3.0.0",
|
||||
"p-limit": "^2.2.1",
|
||||
"schema-utils": "^1.0.0",
|
||||
"serialize-javascript": "^4.0.0",
|
||||
"webpack-log": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
||||
@@ -2045,32 +2035,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"dir-glob": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
|
||||
"integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-type": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"path-type": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
|
||||
"integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pify": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"dns-equal": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
|
||||
@@ -2708,6 +2672,13 @@
|
||||
"schema-utils": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"file-uri-to-path": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
||||
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
|
||||
@@ -3098,28 +3069,6 @@
|
||||
"define-properties": "^1.1.3"
|
||||
}
|
||||
},
|
||||
"globby": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
|
||||
"integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"array-union": "^1.0.1",
|
||||
"dir-glob": "^2.0.0",
|
||||
"glob": "^7.1.2",
|
||||
"ignore": "^3.3.5",
|
||||
"pify": "^3.0.0",
|
||||
"slash": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"globule": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
|
||||
@@ -3384,12 +3333,6 @@
|
||||
"integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
|
||||
"dev": true
|
||||
},
|
||||
"html5shiv": {
|
||||
"version": "3.7.3",
|
||||
"resolved": "https://registry.npmjs.org/html5shiv/-/html5shiv-3.7.3.tgz",
|
||||
"integrity": "sha512-SZwGvLGNtgp8GbgFX7oXEp8OR1aBt5LliX6dG0kdD1kl3KhMonN0QcSa/A3TsTgFewaGCbIryQunjayWDXzxmw==",
|
||||
"dev": true
|
||||
},
|
||||
"http-deceiver": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
|
||||
@@ -3485,12 +3428,6 @@
|
||||
"integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
|
||||
"dev": true
|
||||
},
|
||||
"ignore": {
|
||||
"version": "3.3.10",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
|
||||
"integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
|
||||
"dev": true
|
||||
},
|
||||
"import-fresh": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
|
||||
@@ -6557,12 +6494,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"slash": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
|
||||
"integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==",
|
||||
"dev": true
|
||||
},
|
||||
"snapdragon": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
|
||||
@@ -7780,6 +7711,7 @@
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"bindings": "^1.5.0",
|
||||
"nan": "^2.12.1"
|
||||
}
|
||||
},
|
||||
@@ -8046,6 +7978,7 @@
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"bindings": "^1.5.0",
|
||||
"nan": "^2.12.1"
|
||||
}
|
||||
},
|
||||
|
||||
+1
-4
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "sphinx_rtd_theme",
|
||||
"main": "js/theme.js",
|
||||
"version": "1.2.2rc1",
|
||||
"version": "3.0.0rc1",
|
||||
"scripts": {
|
||||
"dev": "webpack-dev-server --open --config webpack.dev.js",
|
||||
"build": "webpack --config webpack.prod.js",
|
||||
@@ -17,15 +17,12 @@
|
||||
"url": "https://github.com/readthedocs/sphinx_rtd_theme/issues"
|
||||
},
|
||||
"homepage": "https://github.com/readthedocs/sphinx_rtd_theme",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"bourbon": "~4.3",
|
||||
"bourbon-neat": "~1.9",
|
||||
"copy-webpack-plugin": "^5.1.2",
|
||||
"css-loader": "^3.6.0",
|
||||
"file-loader": "^3.0.1",
|
||||
"font-awesome": "^4.7.0",
|
||||
"html5shiv": "^3.7.3",
|
||||
"imports-loader": "^0.8.0",
|
||||
"jquery": "^3.6.0",
|
||||
"lato-font": "^3.0.0",
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[pytest]
|
||||
filterwarnings =
|
||||
# Ignore external dependencies warning deprecations
|
||||
# Sphinx
|
||||
# ignore::sphinx.deprecation.RemovedInSphinx90Warning
|
||||
@@ -1,5 +1,5 @@
|
||||
[bumpversion]
|
||||
current_version = 1.2.2rc1
|
||||
current_version = 3.0.0rc1
|
||||
commit = false
|
||||
tag = false
|
||||
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)((?P<release>[a-z]+)(?P<dev>\d+))?
|
||||
@@ -27,14 +27,13 @@ classifiers =
|
||||
Environment :: Console
|
||||
Environment :: Web Environment
|
||||
Intended Audience :: Developers
|
||||
Programming Language :: Python :: 2.7
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Programming Language :: Python :: 3 :: Only
|
||||
Programming Language :: Python :: 3.8
|
||||
Programming Language :: Python :: 3.9
|
||||
Programming Language :: Python :: 3.10
|
||||
Programming Language :: Python :: 3.11
|
||||
Programming Language :: Python :: 3.12
|
||||
Operating System :: OS Independent
|
||||
Topic :: Documentation
|
||||
Topic :: Software Development :: Documentation
|
||||
@@ -43,10 +42,10 @@ classifiers =
|
||||
include_package_data = True
|
||||
zip_safe = False
|
||||
packages = sphinx_rtd_theme
|
||||
python_requires = >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*
|
||||
python_requires = >=3.8
|
||||
install_requires =
|
||||
sphinx >=1.6,<7
|
||||
docutils <0.19
|
||||
sphinx >=6,<9
|
||||
docutils >0.18,<0.22
|
||||
sphinxcontrib-jquery >=4,<5
|
||||
tests_require =
|
||||
pytest
|
||||
@@ -54,9 +53,9 @@ tests_require =
|
||||
[options.extras_require]
|
||||
dev =
|
||||
transifex-client
|
||||
sphinxcontrib-httpdomain
|
||||
bump2version
|
||||
wheel
|
||||
twine
|
||||
|
||||
[options.entry_points]
|
||||
sphinx.html_themes =
|
||||
|
||||
@@ -86,7 +86,7 @@ class TransifexCommand(distutils.cmd.Command):
|
||||
|
||||
|
||||
setup(
|
||||
version='1.2.2rc1',
|
||||
version='3.0.0rc1',
|
||||
cmdclass={
|
||||
'update_translations': UpdateTranslationsCommand,
|
||||
'transifex': TransifexCommand,
|
||||
|
||||
@@ -4,6 +4,7 @@ Sphinx Read the Docs theme.
|
||||
From https://github.com/ryan-roemer/sphinx-bootstrap-theme.
|
||||
"""
|
||||
|
||||
import os
|
||||
from os import path
|
||||
from sys import version_info as python_version
|
||||
|
||||
@@ -12,7 +13,7 @@ from sphinx.locale import _
|
||||
from sphinx.util.logging import getLogger
|
||||
|
||||
|
||||
__version__ = '1.2.2rc1'
|
||||
__version__ = '3.0.0rc1'
|
||||
__version_full__ = __version__
|
||||
|
||||
logger = getLogger(__name__)
|
||||
@@ -20,6 +21,10 @@ logger = getLogger(__name__)
|
||||
|
||||
def get_html_theme_path():
|
||||
"""Return list of HTML theme paths."""
|
||||
logger.warning(
|
||||
_('Calling get_html_theme_path is deprecated. If you are calling it to define html_theme_path, you are safe to remove that code.')
|
||||
)
|
||||
|
||||
cur_dir = path.abspath(path.dirname(path.dirname(__file__)))
|
||||
return cur_dir
|
||||
|
||||
@@ -31,24 +36,44 @@ def config_initiated(app, config):
|
||||
_('The canonical_url option is deprecated, use the html_baseurl option from Sphinx instead.')
|
||||
)
|
||||
|
||||
if theme_options.get("analytics_id"):
|
||||
logger.warning(
|
||||
_('The analytics_id option is deprecated, use the sphinxcontrib-googleanalytics extension instead.')
|
||||
)
|
||||
|
||||
if theme_options.get("analytics_anonymize_ip"):
|
||||
logger.warning(
|
||||
_('The analytics_anonymize_ip option is deprecated, use the sphinxcontrib-googleanalytics extension instead.')
|
||||
)
|
||||
|
||||
if "extra_css_files" in config.html_context:
|
||||
logger.warning(
|
||||
_('The extra_css_file option is deprecated, use the html_css_files option from Sphinx instead.')
|
||||
)
|
||||
|
||||
|
||||
def extend_html_context(app, pagename, templatename, context, doctree):
|
||||
# Add ``sphinx_version_info`` tuple for use in Jinja templates
|
||||
context['sphinx_version_info'] = sphinx_version
|
||||
|
||||
# Inject all the Read the Docs environment variables in the context:
|
||||
# https://docs.readthedocs.io/en/stable/reference/environment-variables.html
|
||||
context['READTHEDOCS'] = os.environ.get("READTHEDOCS", False) == "True"
|
||||
if context['READTHEDOCS']:
|
||||
for key, value in os.environ.items():
|
||||
if key.startswith("READTHEDOCS_"):
|
||||
context[key] = value
|
||||
|
||||
|
||||
|
||||
# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package
|
||||
def setup(app):
|
||||
if python_version[0] < 3:
|
||||
logger.warning("Python 2 is deprecated with sphinx_rtd_theme, update to Python 3")
|
||||
app.require_sphinx('1.6')
|
||||
if sphinx_version <= (2, 0, 0):
|
||||
logger.warning("Sphinx 1.x is deprecated with sphinx_rtd_theme, update to Sphinx 2.x or greater")
|
||||
if not app.config.html_experimental_html5_writer:
|
||||
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
|
||||
else:
|
||||
if app.config.html4_writer:
|
||||
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
|
||||
logger.error("Python 2 is not supported with sphinx_rtd_theme, update to Python 3.")
|
||||
|
||||
app.require_sphinx('6.0')
|
||||
if app.config.html4_writer:
|
||||
logger.error("'html4_writer' is not supported with sphinx_rtd_theme.")
|
||||
|
||||
# Since Sphinx 6, jquery isn't bundled anymore and we need to ensure that
|
||||
# the sphinxcontrib-jquery extension is enabled.
|
||||
@@ -66,18 +91,14 @@ def setup(app):
|
||||
# Register the theme that can be referenced without adding a theme path
|
||||
app.add_html_theme('sphinx_rtd_theme', path.abspath(path.dirname(__file__)))
|
||||
|
||||
if sphinx_version >= (1, 8, 0):
|
||||
# Add Sphinx message catalog for newer versions of Sphinx
|
||||
# See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog
|
||||
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
|
||||
app.add_message_catalog('sphinx', rtd_locale_path)
|
||||
app.connect('config-inited', config_initiated)
|
||||
# Add Sphinx message catalog for newer versions of Sphinx
|
||||
# See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog
|
||||
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
|
||||
app.add_message_catalog('sphinx', rtd_locale_path)
|
||||
app.connect('config-inited', config_initiated)
|
||||
|
||||
# sphinx emits the permalink icon for headers, so choose one more in keeping with our theme
|
||||
if sphinx_version >= (3, 5, 0):
|
||||
app.config.html_permalinks_icon = "\uf0c1"
|
||||
else:
|
||||
app.config.html_add_permalinks = "\uf0c1"
|
||||
app.config.html_permalinks_icon = "\uf0c1"
|
||||
|
||||
# Extend the default context when rendering the templates.
|
||||
app.connect("html-page-context", extend_html_context)
|
||||
|
||||
@@ -7,16 +7,18 @@
|
||||
{%- set titlesuffix = "" %}
|
||||
{%- endif %}
|
||||
{%- set lang_attr = 'en' if language == None else (language | replace('_', '-')) %}
|
||||
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' -%}
|
||||
|
||||
{# Build sphinx_version_info tuple from sphinx_version string in pure Jinja #}
|
||||
{%- set (_ver_major, _ver_minor) = (sphinx_version.split('.') | list)[:2] | map('int') -%}
|
||||
{%- set sphinx_version_info = (_ver_major, _ver_minor, -1) -%}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="{{ sphinx_writer }}" lang="{{ lang_attr }}" >
|
||||
<html class="writer-html5" lang="{{ lang_attr }}"{% if sphinx_version_info >= (7, 2) %} data-content_root="{{ content_root }}"{% endif %}>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
{%- if READTHEDOCS and not embedded %}
|
||||
<meta name="readthedocs-addons-api-version" content="1">
|
||||
{%- endif %}
|
||||
{{- metatags }}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
{%- block htmltitle %}
|
||||
@@ -24,29 +26,27 @@
|
||||
{%- endblock -%}
|
||||
|
||||
{#- CSS #}
|
||||
{%- if sphinx_version_info < (4, 0) -%}
|
||||
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
||||
{%- endif %}
|
||||
{%- for css in css_files %}
|
||||
{%- if css|attr("rel") %}
|
||||
<link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
|
||||
{%- for css_file in css_files %}
|
||||
{%- if css_file|attr("filename") %}
|
||||
{{ css_tag(css_file) }}
|
||||
{%- else %}
|
||||
<link rel="stylesheet" href="{{ pathto(css, 1) }}" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ pathto(css_file, 1)|escape }}" type="text/css" />
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
|
||||
{%- for cssfile in extra_css_files %}
|
||||
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
|
||||
{#
|
||||
"extra_css_files" is an undocumented Read the Docs theme specific option.
|
||||
There is no need to check for ``|attr("filename")`` here because it's always a string.
|
||||
Note that this option should be removed in favor of regular ``html_css_files``:
|
||||
https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_css_files
|
||||
#}
|
||||
{%- for css_file in extra_css_files %}
|
||||
<link rel="stylesheet" href="{{ pathto(css_file, 1)|escape }}" type="text/css" />
|
||||
{%- endfor -%}
|
||||
|
||||
{#- FAVICON
|
||||
favicon_url is the only context var necessary since Sphinx 4.
|
||||
In Sphinx<4, we use favicon but need to prepend path info.
|
||||
#}
|
||||
{%- set _favicon_url = favicon_url | default(pathto('_static/' + (favicon or ""), 1)) %}
|
||||
{%- if favicon_url or favicon %}
|
||||
<link rel="shortcut icon" href="{{ _favicon_url }}"/>
|
||||
{#- FAVICON #}
|
||||
{%- if favicon_url %}
|
||||
<link rel="shortcut icon" href="{{ favicon_url }}"/>
|
||||
{%- endif %}
|
||||
|
||||
{#- CANONICAL URL (deprecated) #}
|
||||
@@ -61,36 +61,16 @@
|
||||
|
||||
{#- JAVASCRIPTS #}
|
||||
{%- block scripts %}
|
||||
<!--[if lt IE 9]>
|
||||
<script src="{{ pathto('_static/js/html5shiv.min.js', 1) }}"></script>
|
||||
<![endif]-->
|
||||
{%- if not embedded %}
|
||||
{# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #}
|
||||
{%- if sphinx_version_info >= (1, 8) -%}
|
||||
{%- if sphinx_version_info < (4, 0) -%}
|
||||
<script id="documentation_options" data-url_root="{{ url_root }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
|
||||
{%- endif -%}
|
||||
{%- for scriptfile in script_files %}
|
||||
{{ js_tag(scriptfile) }}
|
||||
{%- endfor %}
|
||||
{%- else %}
|
||||
<script>
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'{{ url_root }}',
|
||||
VERSION:'{{ release|e }}',
|
||||
LANGUAGE:'{{ language }}',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
|
||||
HAS_SOURCE: {{ has_source|lower }},
|
||||
SOURCELINK_SUFFIX: '{{ sourcelink_suffix }}'
|
||||
};
|
||||
</script>
|
||||
{%- for scriptfile in script_files %}
|
||||
<script src="{{ pathto(scriptfile, 1) }}"></script>
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- for scriptfile in script_files %}
|
||||
{{ js_tag(scriptfile) }}
|
||||
{%- endfor %}
|
||||
<script src="{{ pathto('_static/js/theme.js', 1) }}"></script>
|
||||
|
||||
{%- if READTHEDOCS and theme_flyout_display != "hidden" %}
|
||||
<script src="{{ pathto('_static/js/versions.js', 1) }}"></script>
|
||||
{%- endif %}
|
||||
|
||||
{#- OPENSEARCH #}
|
||||
{%- if use_opensearch %}
|
||||
<link rel="search" type="application/opensearchdescription+xml"
|
||||
|
||||
@@ -1 +1 @@
|
||||
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
||||
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}
|
||||
@@ -1,4 +1,4 @@
|
||||
html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*!
|
||||
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
||||
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
||||
*/@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-coLine truncated
|
||||
*/@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-coLine truncated
|
||||
@@ -0,0 +1,125 @@
|
||||
function renderLanguages(config) {
|
||||
if (!config.projects.translations.length) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const languagesHTML = `
|
||||
<dl>
|
||||
<dt>{{ _('Languages') }}</dt>
|
||||
${ config.projects.translations.map(
|
||||
(translation) => `
|
||||
<dd ${ translation.slug == config.projects.current.slug ? 'class="rtd-current-item"' : '' }>
|
||||
<a href="${ translation.urls.documentation }">${ translation.language.code }</a>
|
||||
</dd>
|
||||
`).join("\n")}
|
||||
</dl>
|
||||
`;
|
||||
return languagesHTML;
|
||||
}
|
||||
|
||||
function renderVersions(config) {
|
||||
if (!config.versions.active.length) {
|
||||
return "";
|
||||
}
|
||||
const versionsHTML = `
|
||||
<dl>
|
||||
<dt>{{ _('Versions') }}</dt>
|
||||
${ config.versions.active.map(
|
||||
(version) => `
|
||||
<dd ${ version.slug === config.versions.current.slug ? 'class="rtd-current-item"' : '' }>
|
||||
<a href="${ version.urls.documentation }">${ version.slug }</a>
|
||||
</dd>
|
||||
`).join("\n")}
|
||||
</dl>
|
||||
`;
|
||||
return versionsHTML;
|
||||
}
|
||||
|
||||
function renderDownloads(config) {
|
||||
if (!Object.keys(config.versions.current.downloads).length) {
|
||||
return "";
|
||||
}
|
||||
const downloadsNameDisplay = {
|
||||
pdf: "PDF",
|
||||
epub: "Epub",
|
||||
htmlzip: "HTML",
|
||||
};
|
||||
|
||||
const downloadsHTML = `
|
||||
<dl>
|
||||
<dt>{{ _('Downloads') }}</dt>
|
||||
${ Object.entries(config.versions.current.downloads).map(
|
||||
([name, url]) => `
|
||||
<dd>
|
||||
<a href="${ url }">${ downloadsNameDisplay[name] }</a>
|
||||
</dd>
|
||||
`).join("\n")}
|
||||
</dl>
|
||||
`;
|
||||
return downloadsHTML;
|
||||
}
|
||||
|
||||
document.addEventListener("readthedocs-addons-data-ready", function(event) {
|
||||
const config = event.detail.data();
|
||||
|
||||
const flyout = `
|
||||
<div class="rst-versions" data-toggle="rst-versions" role="note">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
<span class="fa fa-book"> Read the Docs</span>
|
||||
v: ${ config.versions.current.slug }
|
||||
<span class="fa fa-caret-down"></span>
|
||||
</span>
|
||||
<div class="rst-other-versions">
|
||||
<div class="injected">
|
||||
${ renderLanguages(config) }
|
||||
${ renderVersions(config) }
|
||||
${ renderDownloads(config) }
|
||||
<dl>
|
||||
<dt>{{ _('On Read the Docs') }}</dt>
|
||||
<dd>
|
||||
<a href="${ config.projects.current.urls.home }">{{ _('Project Home') }}</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="${ config.projects.current.urls.builds }">{{ _('Builds') }}</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="${ config.projects.current.urls.downloads }">{{ _('Downloads') }}</a>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>{{ _('Search') }}</dt>
|
||||
<dd>
|
||||
<form id="flyout-search-form">
|
||||
<input
|
||||
class="wy-form"
|
||||
type="text"
|
||||
name="q"
|
||||
aria-label="{{ _('Search docs') }}"
|
||||
placeholder="{{ _('Search docs') }}"
|
||||
/>
|
||||
</form>
|
||||
</dd>
|
||||
</dl>
|
||||
<hr />
|
||||
<small>
|
||||
<span>Hosted by <a href="https://about.readthedocs.org/?utm_source={{ READTHEDOCS_PROJECT }}&utm_content=flyout">Read the Docs</a></span>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Inject the generated flyout into the body HTML element.
|
||||
document.body.insertAdjacentHTML("beforeend", flyout);
|
||||
|
||||
// Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout.
|
||||
document.querySelector("#flyout-search-form").addEventListener("focusin", () => {
|
||||
const event = new CustomEvent("readthedocs-search-show");
|
||||
document.dispatchEvent(event);
|
||||
});
|
||||
|
||||
// Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav.
|
||||
document.querySelector("[role='search'] input").addEventListener("focusin", () => {
|
||||
const event = new CustomEvent("readthedocs-search-show");
|
||||
document.dispatchEvent(event);
|
||||
});
|
||||
});
|
||||
@@ -18,3 +18,4 @@ prev_next_buttons_location = bottom
|
||||
style_external_links = False
|
||||
style_nav_header_background =
|
||||
vcs_pageview_mode =
|
||||
flyout_display = hidden
|
||||
@@ -1,34 +0,0 @@
|
||||
{% if READTHEDOCS %}
|
||||
{# Add rst-badge after rst-versions for small badge style. #}
|
||||
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="{{ _('Versions') }}">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
<span class="fa fa-book"> Read the Docs</span>
|
||||
v: {{ current_version }}
|
||||
<span class="fa fa-caret-down"></span>
|
||||
</span>
|
||||
<div class="rst-other-versions">
|
||||
<dl>
|
||||
<dt>{{ _('Versions') }}</dt>
|
||||
{% for slug, url in versions %}
|
||||
<dd><a href="{{ url }}">{{ slug }}</a></dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>{{ _('Downloads') }}</dt>
|
||||
{% for type, url in downloads %}
|
||||
<dd><a href="{{ url }}">{{ type }}</a></dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
<dl>
|
||||
{# Translators: The phrase "Read the Docs" is not translated #}
|
||||
<dt>{{ _('On Read the Docs') }}</dt>
|
||||
<dd>
|
||||
<a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">{{ _('Project Home') }}</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">{{ _('Builds') }}</a>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -58,6 +58,8 @@
|
||||
display: inline-block
|
||||
padding: $base-line-height / 4
|
||||
color: $section-background-color
|
||||
.rtd-current-item
|
||||
font-weight: bold
|
||||
&.rst-badge
|
||||
width: auto
|
||||
bottom: 20px
|
||||
@@ -92,3 +94,6 @@
|
||||
display: none
|
||||
&.shift
|
||||
display: block
|
||||
|
||||
#flyout-search-form
|
||||
padding: 6px
|
||||
@@ -18,7 +18,7 @@ from .util import build_all
|
||||
|
||||
def test_basic():
|
||||
for (app, status, warning) in build_all('test-basic'):
|
||||
assert app.env.get_doctree('index').traverse(addnodes.toctree)
|
||||
assert app.env.get_doctree('index').findall(addnodes.toctree)
|
||||
content = open(os.path.join(app.outdir, 'index.html')).read()
|
||||
|
||||
if isinstance(app.builder, DirectoryHTMLBuilder):
|
||||
@@ -37,10 +37,13 @@ def test_basic():
|
||||
)
|
||||
assert search in content
|
||||
elif isinstance(app.builder, SingleFileHTMLBuilder):
|
||||
internal_ref = '#document-foo'
|
||||
if sphinx.version_info[:3] < (7, 3, 0):
|
||||
internal_ref = 'index.html' + internal_ref
|
||||
search = (
|
||||
'<ul>\n'
|
||||
'<li class="toctree-l1">'
|
||||
'<a class="reference internal" href="index.html#document-foo">foo</a>'
|
||||
f'<a class="reference internal" href="{internal_ref}">foo</a>'
|
||||
'</li>\n'
|
||||
'</ul>'
|
||||
)
|
||||
@@ -66,7 +69,7 @@ def test_basic():
|
||||
def test_empty():
|
||||
"""Local TOC is showing, as toctree was empty"""
|
||||
for (app, status, warning) in build_all('test-empty'):
|
||||
assert app.env.get_doctree('index').traverse(addnodes.toctree)
|
||||
assert app.env.get_doctree('index').findall(addnodes.toctree)
|
||||
content = open(os.path.join(app.outdir, 'index.html')).read()
|
||||
global_toc = '<div class="toctree-wrapper compound">\n</div>'
|
||||
local_toc = (
|
||||
@@ -81,7 +84,7 @@ def test_empty():
|
||||
def test_missing_toctree():
|
||||
"""Local TOC is showing, as toctree was missing"""
|
||||
for (app, status, warning) in build_all('test-missing-toctree'):
|
||||
assert app.env.get_doctree('index').traverse(addnodes.toctree) == []
|
||||
assert list(app.env.get_doctree('index').findall(addnodes.toctree)) == []
|
||||
content = open(os.path.join(app.outdir, 'index.html')).read()
|
||||
assert '<div class="toctree' not in content
|
||||
assert '<div class="local-toc">' in content
|
||||
+1
-3
@@ -34,7 +34,6 @@ def build(root, builder='html', **kwargs):
|
||||
confoverrides['html_theme'] = 'sphinx_rtd_theme'
|
||||
extensions = confoverrides.get('extensions', [])
|
||||
extensions.append('sphinx_rtd_theme')
|
||||
extensions.append('readthedocs_ext.readthedocs')
|
||||
confoverrides['extensions'] = extensions
|
||||
kwargs['confoverrides'] = confoverrides
|
||||
|
||||
@@ -55,7 +54,6 @@ def build(root, builder='html', **kwargs):
|
||||
|
||||
|
||||
def build_all(root, **kwargs):
|
||||
for builder in ['html', 'singlehtml', 'readthedocs', 'readthedocsdirhtml',
|
||||
'readthedocssinglehtml', 'readthedocssinglehtmllocalmedia']:
|
||||
for builder in ['html', 'singlehtml']:
|
||||
with build(root, builder, **kwargs) as ret:
|
||||
yield ret
|
||||
@@ -1,57 +1,27 @@
|
||||
[tox]
|
||||
envlist =
|
||||
# Python 2.7 support was removed in Sphinx 2
|
||||
py{27}-sphinx{17,18}{-html4,-html5,}{-qa,}
|
||||
py{36,37,38,39}-sphinx{18,20,21,22,23,24,30,31,32,33,34,35,40,41,42,43,44,45,50,51,52}{-html4,-html5,}{-qa,}
|
||||
# Python 3.10 working from Sphinx 4.2 and up
|
||||
py{310}-sphinx{42,43,44,45,50,51,52,53,latest}{-html4,-html5}{-qa,}
|
||||
# Sphinx 6+ has simplified docutils and Python support
|
||||
py{38,39,10}-sphinx{60}{-html5,}{-qa,}
|
||||
# Python 3.11 working from Sphinx 5.3 and up
|
||||
py{311}-sphinx{53,60,latest}{html5}{-qa,}
|
||||
py{38,39,310}-sphinx{60,61,62,70,71}{-qa}
|
||||
py{39,310,311,312}-sphinx{72,73,74,80}{-qa}
|
||||
py{310,311,312}-sphinx{latest,dev}{-qa}
|
||||
|
||||
[testenv]
|
||||
setenv =
|
||||
LANG=C
|
||||
deps =
|
||||
.
|
||||
readthedocs-sphinx-ext
|
||||
pytest
|
||||
sphinx17: Sphinx>=1.7,<1.8
|
||||
sphinx18: Sphinx>=1.8,<1.9
|
||||
sphinx20: Sphinx>=2.0,<2.1
|
||||
sphinx21: Sphinx>=2.1,<2.2
|
||||
sphinx22: Sphinx>=2.2,<2.3
|
||||
sphinx23: Sphinx>=2.3,<2.4
|
||||
sphinx24: Sphinx>=2.4,<2.5
|
||||
sphinx30: Sphinx>=3.0,<3.1
|
||||
sphinx31: Sphinx>=3.1,<3.2
|
||||
sphinx32: Sphinx>=3.2,<3.3
|
||||
sphinx33: Sphinx>=3.3,<3.4
|
||||
sphinx34: Sphinx>=3.4,<3.5
|
||||
sphinx35: Sphinx>=3.5,<3.6
|
||||
sphinx40: Sphinx>=4.0,<4.1
|
||||
sphinx41: Sphinx>=4.1,<4.2
|
||||
sphinx42: Sphinx>=4.2,<4.3
|
||||
sphinx43: Sphinx>=4.3,<4.4
|
||||
sphinx44: Sphinx>=4.4,<4.5
|
||||
sphinx45: Sphinx>=4.5,<4.6
|
||||
sphinx50: Sphinx>=5.0,<5.1
|
||||
sphinx51: Sphinx>=5.1,<5.2
|
||||
sphinx52: Sphinx>=5.2,<5.3
|
||||
sphinx53: Sphinx>=5.3,<5.4
|
||||
sphinx60: Sphinx>=6.0,<6.1
|
||||
# All these Sphinx versions actually break since docutils 0.18, so we need to add this upper bound
|
||||
# Projects using these Sphinx versions will have to do the same
|
||||
# See: https://github.com/readthedocs/sphinx_rtd_theme/pull/1304
|
||||
sphinx{17,18,20,21,22,23,24,30,31,32,33,34,35,40,41,42}: docutils<0.18
|
||||
# External environments are required to add this dependency for older versions of Sphinx
|
||||
# because it didn't ship with this upper bound.
|
||||
# See: https://github.com/sphinx-doc/sphinx/issues/10291
|
||||
sphinx{17,18,20,21,22,23,24,30,31,32,33,34,35,40}: Jinja2<3.1
|
||||
sphinx61: Sphinx>=6.1,<6.2
|
||||
sphinx62: Sphinx>=6.2,<6.3
|
||||
sphinx70: Sphinx>=7.0,<7.1
|
||||
sphinx71: Sphinx>=7.1,<7.2
|
||||
sphinx72: Sphinx>=7.2,<7.3
|
||||
sphinx80: Sphinx>=8.0,<8.1
|
||||
sphinxlatest: Sphinx
|
||||
sphinxdev: https://github.com/sphinx-doc/sphinx/archive/refs/heads/master.zip
|
||||
allowlist_externals =
|
||||
echo
|
||||
commands =
|
||||
pytest {posargs} tests/
|
||||
!html4: sphinx-build -b html -Dhtml4_writer=0 -d {envtmpdir}/doctrees docs/ {envtmpdir}/html
|
||||
html4: sphinx-build -b html -Dhtml4_writer=1 -d {envtmpdir}/doctrees docs/ {envtmpdir}/html
|
||||
sphinx-build -b html -Dhtml4_writer=0 -d {envtmpdir}/doctrees docs/ {envtmpdir}/html
|
||||
echo "Open the following URL for visual testing: file://{envtmpdir}/html/demo/demo.html"
|
||||
@@ -1,6 +1,5 @@
|
||||
const path = require("path");
|
||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||
const CopyPlugin = require('copy-webpack-plugin');
|
||||
|
||||
module.exports = {
|
||||
entry: {
|
||||
@@ -66,11 +65,5 @@ module.exports = {
|
||||
filename: "css/[name].css?[hash]",
|
||||
chunkFilename: "css/[name].css?[hash]"
|
||||
}),
|
||||
new CopyPlugin([
|
||||
{
|
||||
from: 'node_modules/html5shiv/dist/*.min.js',
|
||||
flatten: true,
|
||||
to: path.resolve(__dirname,'sphinx_rtd_theme/static/js') },
|
||||
]),
|
||||
]
|
||||
};
|
||||
Reference in new issue
Block a user