Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MAINT: prepare for 1.0 release #2089

Merged
merged 52 commits into from
Jan 25, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
93f599a
MAINT: prepare for 1.0
agoose77 Dec 11, 2023
c92d1cd
MAINT: prepare for 1.0.0
agoose77 Dec 11, 2023
3bfd4cb
DOCS: update intersphinx references for new link syntax
agoose77 Dec 11, 2023
4f4867a
Update docs/_config.yml
agoose77 Dec 11, 2023
6076034
MAINT: use ruff and ruff-format
agoose77 Dec 11, 2023
5afc9f8
MAINT: update test matrix
agoose77 Dec 11, 2023
4dedcb7
MAINT: drop tox
agoose77 Dec 11, 2023
160f198
Merge branch 'agoose77/maint-prepare-1.0' of github.com:executableboo…
agoose77 Dec 11, 2023
b9a7071
FIX: mistake in CI matrix
agoose77 Dec 11, 2023
381382e
MAINT: loosen sphinxcontrib-bibtex
agoose77 Dec 11, 2023
9be46f6
wip: working through test failures
agoose77 Dec 11, 2023
1972936
feat: add new config to JB config
agoose77 Dec 12, 2023
3f3b69d
feat: allow any input for expressions
agoose77 Dec 12, 2023
b515759
MAINT: bump external-toc version
agoose77 Dec 12, 2023
8eb15f3
MAINT: ignore warning for Jupyter
agoose77 Dec 12, 2023
5b4e244
MAINT: restore test markers
agoose77 Dec 12, 2023
8042fe2
FIX: don't use warn
agoose77 Dec 12, 2023
6719cb2
MAINT: update regression suite
agoose77 Dec 12, 2023
76bda58
FIX: use warnings
agoose77 Dec 12, 2023
b8f1e3d
FIX: add new image for logo
agoose77 Dec 12, 2023
2a67969
FIX: sphinx7
agoose77 Dec 12, 2023
40fa0eb
FIX: remainder of tests
agoose77 Dec 13, 2023
5ad74f7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Dec 13, 2023
1e9fbe5
MAINT: bump book theme
agoose77 Dec 14, 2023
35cae46
Merge branch 'agoose77/maint-prepare-1.0' of github.com:executableboo…
agoose77 Dec 14, 2023
d152b65
DOCS: use Python 3.11
agoose77 Dec 14, 2023
0844c7b
MAINT: loosen dependencies
agoose77 Dec 14, 2023
dccd764
FIX: allow exception RE Python version
agoose77 Dec 14, 2023
8403846
maint: drop RC from LB
agoose77 Jan 9, 2024
2f4069a
chore: drop trailing comma
agoose77 Jan 9, 2024
669a4cd
maint: fix literal string
agoose77 Jan 9, 2024
9f39a41
maint: specify action for ignore!
agoose77 Jan 9, 2024
a61405c
wip: try just 3.9 and 3.10 to start with
agoose77 Jan 9, 2024
c9d0d27
test: only test sphinx-inline-tabs
agoose77 Jan 25, 2024
e31a11c
ci: expand matrix
agoose77 Jan 25, 2024
f88d712
test: ignore datetime warning
agoose77 Jan 25, 2024
42688a0
ci: don't fail fast by default (temporary)
agoose77 Jan 25, 2024
2afbe90
ci: don't cache pip
agoose77 Jan 25, 2024
65677ee
ci: set fail-fast on correct job
agoose77 Jan 25, 2024
f6a3811
chore: drop sphinx3
agoose77 Jan 25, 2024
abf98b2
chore: drop Sphinx3, fix ToC test
agoose77 Jan 25, 2024
ef4566f
chore: bump sphinx
agoose77 Jan 25, 2024
880806e
chore: drop sphinx5
agoose77 Jan 25, 2024
2b97bf4
ci: only test sphinx 7
agoose77 Jan 25, 2024
f0f09fc
fix: ignore pybtex warning
agoose77 Jan 25, 2024
fde377e
fix: ignore another deprecationwarning
agoose77 Jan 25, 2024
848c7bd
fix: quote character
agoose77 Jan 25, 2024
a1a0a16
fix: more test failures
agoose77 Jan 25, 2024
1a555d5
fix: restore sphinx-5
agoose77 Jan 25, 2024
a7951a7
ci: update matrix
agoose77 Jan 25, 2024
2336ed5
test: restore missing test files
agoose77 Jan 25, 2024
8481ec9
chore: spelling
agoose77 Jan 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ sphinx:
customize/toc.md: structure/toc.md
sd_fontawesome_latex: True

html_theme_options:
navigation_with_keys: true
agoose77 marked this conversation as resolved.
Show resolved Hide resolved

extra_extensions:
- sphinx_click.ext
Expand Down
6 changes: 3 additions & 3 deletions docs/advanced/sphinx.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@ MyST-Parser for Markdown parsing, and MyST-NB for notebook execution and output
These two extensions are highly customizable *via* Sphinx configuration.
Some of their configuration is already exposed in the `_config.yml`, but you can also directly set configuration, see:

* the [MyST-Parser configuration options](myst-parser:sphinx/config-options)
* the [MyST-NB configuration options](myst-nb:config/intro)
* the [MyST-Parser configuration options](inv:myst-parser#sphinx/config-options)
* the [MyST-NB configuration options](inv:myst-nb#config/intro)

(sphinx/tex-macros)=
### Defining TeX macros
Expand Down Expand Up @@ -276,7 +276,7 @@ $$
```

:::{seealso}
[How MyST-Parser works with MathJax](myst-parser:syntax/mathjax),
[How MyST-Parser works with MathJax](inv:myst-parser#syntax/mathjax),
and the section on [math and equations](myst-content/math).
:::

Expand Down
2 changes: 1 addition & 1 deletion docs/basics/create.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Jupyter Book also provides a [Jupyter Book cookiecutter](https://github.com/exec
[`cookiecutter`](https://cookiecutter.readthedocs.io/en/latest/) is a Python tool for quickly generating folders from a templatized repository. Jupyter Book uses `cookiecutter` under the hood.
```

The cookiecutter is suitable for users that want to create a ready-to-go repository to host their book that includes pre-populated metafiles such as `README`, `LICENSE`, `CONDUCT`, `CONTRIBUTING`, etc., as well as GitHub Actions workflow files to [](publish/gh-actions).
The cookiecutter is suitable for users that want to create a ready-to-go repository to host their book that includes pre-populated metafiles such as `README`, `LICENSE`, `CONDUCT`, `CONTRIBUTING`, etc., as well as GitHub Actions workflow files to [Publish to GitHub Pages](publish/gh-pages).

To try the cookiecutter template, run the following command:

Expand Down
2 changes: 1 addition & 1 deletion docs/content/code-outputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Below we give examples of how to format particular outputs and even insert outpu
The [MyST cheat sheet](myst_cheatsheet) provides a [list of `code-cell` tags available](myst_cheatsheet:code-cell:tags)

:::{seealso}
The [MyST-NB documentation](myst-nb:render/output/customise), for how to fully customize the output renderer.
The [MyST-NB documentation](inv:myst-nb#render/output/customise), for how to fully customize the output renderer.
:::

(content:code-outputs:library-outputs)=
Expand Down
4 changes: 2 additions & 2 deletions docs/content/components.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ By contrast, the [dropdown directive](content/cards) below works purely *via* HT
(components:tabs)=
## Tab content

You can also produce [**tabbed content**](sd:sd-tabs).
You can also produce [**tabbed content**](inv:sd#sd-tabs).
This allows you to display a variety of tabbed content blocks that users can click on.

To do so, create a `{tab-set}` wrapper directive, and put `{tab-item}` directives inside.
Expand Down Expand Up @@ -302,7 +302,7 @@ END PROGRAM main

### Learn more about tabs

See the [`sphinx-design` tabs documentation](sd:sd-tabs) for more information on how to use this.
See the [`sphinx-design` tabs documentation](inv:sd#sd-tabs) for more information on how to use this.

(custom-div-blocks)=
## Custom `<div>` blocks
Expand Down
4 changes: 2 additions & 2 deletions docs/content/content-blocks.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ This is the *content*
```
````

See [](myst-parser:syntax/html-admonition) for more information about HTML admonitions.
See [](inv:myst-parser#syntax/html-admonition) for more information about HTML admonitions.

(content-blocks:warning-headers-admonitions)=
### Do not embed headings inside admonitions
Expand Down Expand Up @@ -507,7 +507,7 @@ You can also insert substitutions inside of other markdown structures like table
````

:::{seealso}
For more information about Substitutions, see [](myst-parser:syntax/substitutions).
For more information about Substitutions, see [](inv:myst-parser#syntax/substitutions).
:::

### Define substitutions for your whole book
Expand Down
4 changes: 2 additions & 2 deletions docs/content/execute.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ These outputs may appear in a mixed order and you may want them to be grouped an
to display the correct `logical` ordering.

This can be achieved using the [nb_merge_streams feature contained in
`myst_nb`](myst-nb:render/output/stdout-stderr).
`myst_nb`](inv:myst-nb#render/output/stdout-stderr).

You can enable this in your `_config.yml`:

Expand All @@ -327,7 +327,7 @@ As notebooks are executed, certain statistics are stored on the build environmen
The simplest way to access and visualise this data is using the `{nb-exec-table}` directive.

:::{seealso}
The [MyST-NB documentation](myst-nb:execute/statistics), for creating your own directives to manipulate this data.
The [MyST-NB documentation](inv:myst-nb#execute/statistics), for creating your own directives to manipulate this data.
:::

The simple directive
Expand Down
6 changes: 3 additions & 3 deletions docs/content/figures.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ results in
This will correctly copy the image to the build folder and will render it in all output formats (HTML, TeX, etc).
However, it is limited in the configuration that can be applied. For example, the image width cannot be set with this syntax.

As discussed in [this section](content:myst/directives), MyST allows for directives such as `image` and `figure` to be used (see [the Sphinx documentation](sphinx:rst-primer) for available options).
As discussed in [this section](content:myst/directives), MyST allows for directives such as `image` and `figure` to be used (see [the Sphinx documentation](inv:sphinx#rst-primer) for available options).

As an example,

Expand Down Expand Up @@ -84,7 +84,7 @@ Any other attributes will be ignored.

Standard rasterized image formats, such as `.png` and `jpg`, are supported for both HTML and LaTeX/PDF output formats.
By contrast, vector formats such as `.svg`, `.pdf` and `.eps` are normally builder specific.
See the `supported_image_types` specification for each Sphinx builder [here](sphinx:builders).
See the `supported_image_types` specification for each Sphinx builder [here](inv:sphinx#builders).

To support multiple builders, Jupyter Book allows you to use a `*` asterisk as the extension. For example, with the HTML

Expand All @@ -102,7 +102,7 @@ You can use a tool such as [imagemagick](https://imagemagick.org), to convert yo

Alternatively, you may wish to check out these Sphinx extensions:

- [sphinx.ext.imgconverter](sphinx:sphinx.ext.imgconverter)
- [sphinx.ext.imgconverter](inv:sphinx:py:module#sphinx.ext.imgconverter)
- [sphinxcontrib-svg2pdfconverter](https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter)

## Figures
Expand Down
4 changes: 2 additions & 2 deletions docs/content/math.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ sphinx:
mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
```

See the [Sphinx documentation](sphinx:sphinx.ext.mathjax) for details.
See the [Sphinx documentation](inv:sphinx#sphinx.ext.mathjax) for details.

:::

Expand Down Expand Up @@ -109,7 +109,7 @@ a_{21}& =b_{21}&
\end{align}

:::{seealso}
The MyST guides to [dollar math syntax](myst-parser:syntax/math), [LaTeX math syntax](myst-parser:syntax/amsmath), and [how MyST-Parser works with MathJax](myst-parser:syntax/mathjax).
The MyST guides to [dollar math syntax](inv:myst-parser:*:label#syntax/math), [LaTeX math syntax](inv:myst-parser#syntax/amsmath), and [how MyST-Parser works with MathJax](inv:myst-parser#syntax/mathjax).

For advanced use, also see how to [define MathJax TeX Macros](sphinx/tex-macros).
:::
Expand Down
24 changes: 12 additions & 12 deletions docs/content/myst.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ you'll write in the same flavour of **MyST Markdown**. Jupyter Book will know ho

This page contains a few pieces of information about MyST Markdown and how it relates to Jupyter Book.
You can find much more information about this flavour of Markdown at
[the Myst Parser documentation](myst-parser:syntax/core).
[the Myst Parser documentation](inv:myst-parser#syntax/core).

:::{admonition} Want to use RMarkdown directly?
:class: tip
See [](../file-types/jupytext.md)
See [](../file-types/jupytext.Rmd)
:::

## Directives and roles
Expand Down Expand Up @@ -64,7 +64,7 @@ Here is a note

being inserted in your built book.

For more information on using directives, see the [MyST documentation](myst-parser:syntax/directives).
For more information on using directives, see the [MyST documentation](inv:myst-parser#syntax/directives).

(directive-arguments)=
#### More arguments and metadata in directives
Expand Down Expand Up @@ -142,7 +142,7 @@ not be parsed correctly if it spans more than one line. Progress towards support
that span multiple lines can be tracked [by this issue](https://github.com/executablebooks/MyST-Parser/issues/269)
```

For more information on using roles, see the [MyST documentation](myst-parser:syntax/roles).
For more information on using roles, see the [MyST documentation](inv:myst-parser#syntax/roles).

## What roles and directives are available?

Expand All @@ -156,12 +156,12 @@ all syntax that Sphinx supports (think of it as a Markdown version of reStructur
If you search the internet (and the links below) for information about roles and directives,
the documentation will generally be written with reStructuredText in mind. MyST Markdown
is different from reStructuredText, but all of the functionality should be the same.
See [the MyST Sphinx parser documentation](myst-parser:intro/get-started) for more information about the differences between MyST and rST.
See [the MyST Sphinx parser documentation](inv:myst-parser#intro/get-started) for more information about the differences between MyST and rST.
:::

For a list of directives that are available to you, there are three places to check:

1. [The Sphinx directives page](sphinx:usage/restructuredtext/directives)
1. [The Sphinx directives page](inv:sphinx#usage/restructuredtext/directives)
has a list of directives that are available by default in Sphinx.
2. [The reStructuredText directives page](https://docutils.sourceforge.io/docs/ref/rst/directives.html)
has a list of directives in the Python "docutils" module.
Expand Down Expand Up @@ -190,7 +190,7 @@ which produces
:::

:::{seealso}
The MyST-Parser documentation on [how directives parse content](myst-parser:syntax/directives/parsing), and its use for [including rST files into a Markdown file](myst-parser:howto/include-rst), and [using `sphinx.ext.autodoc` in Markdown files](myst-parser:howto/autodoc).
The MyST-Parser documentation on [how directives parse content](inv:myst-parser#syntax/directives/parsing), and its use for [including rST files into a Markdown file](inv:myst-parser#howto/include-rst), and [using `sphinx.ext.autodoc` in Markdown files](inv:myst-parser#howto/autodoc).
:::

(markdown/nesting)=
Expand Down Expand Up @@ -242,14 +242,14 @@ In addition to roles and directives, there are numerous other kinds of syntax
that MyST Markdown supports.
MyST supports all syntax of CommonMark Markdown (the kind of Markdown that Jupyter notebooks use), as well as an extended syntax that is used for scientific publishing.

The [MyST-Parser](myst-parser:intro/get-started) is the tool that Jupyter Book uses to allow you to write your book content in MyST.
The [MyST-Parser](inv:myst-parser#intro/get-started) is the tool that Jupyter Book uses to allow you to write your book content in MyST.
It is also a good source of information about the MyST syntax.
Here are some links you can use as a reference:

* [CommonMark block syntax](myst-parser:commonmark-block-tokens)
* [Extended MyST block syntax in MyST](myst-parser:extended-block-tokens)
* [CommonMark in-line syntax](myst-parser:commonmark-span-tokens)
* [Extended in-line syntax in MyST](myst-parser:extended-span-tokens)
* [CommonMark block syntax](inv:myst-parser#commonmark-block-tokens)
* [Extended MyST block syntax in MyST](inv:myst-parser#extended-block-tokens)
* [CommonMark in-line syntax](inv:myst-parser#commonmark-span-tokens)
* [Extended in-line syntax in MyST](inv:myst-parser#extended-span-tokens)

:::{seealso}
For information about enabling extended MyST syntax, see [](content-blocks:myst-extensions).
Expand Down
2 changes: 1 addition & 1 deletion docs/explain/migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ Image("../images/fun-fish.png")
```
````

Further [documentation of this feature is available here](myst-nb:render/output/images)
Further [documentation of this feature is available here](inv:myst-nb#render/output/images)

(explain:migration:glue)=
### Changes to `glue`
Expand Down
2 changes: 1 addition & 1 deletion docs/file-types/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ links to their section in this book):
[Markdown files](./markdown.md)
: These are text files written in either CommonMark or in MyST Markdown.

[Jupyter notebooks](./notebooks.md)
[Jupyter notebooks](./notebooks.ipynb)
: AKA, `.ipynb` files. These files can contain Markdown cells with MyST Markdown.
: A Jupyter notebook can utilise any program kernel that implements the [Jupyter messaging protocol](http://jupyter-client.readthedocs.io/en/latest/messaging.html) for executing code.
There are kernels available for [Python](http://ipython.org/notebook.html), [Julia](https://github.com/JuliaLang/IJulia.jl), [Ruby](https://github.com/minad/iruby), [Haskell](https://github.com/gibiansky/IHaskell) and [many other languages](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels).
Expand Down
4 changes: 2 additions & 2 deletions docs/file-types/jupytext.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ sphinx:
```

- The string should be a Python function that will be loaded by `import mylibrary.converter_function`
- The function should take a file's contents (as a `str`) and return an [nbformat.NotebookNode](nbformat:api)
- The function should take a file's contents (as a `str`) and return an [nbformat.NotebookNode](inv:nbformat#api)

If the function takes additional keyword arguments, then you can specify these as a dictionary in a second argument.
For example this is what the default conversion would look like:
Expand Down Expand Up @@ -66,7 +66,7 @@ This key should be a list mapping each cell to the starting line number in the o
}
```

This mapping allows for "true" error reporting, as described in [](myst-nb:myst/error-reporting).
This mapping allows for "true" error reporting, as described in [](inv:myst-nb#myst/error-reporting).

## Using Jupytext

Expand Down
2 changes: 1 addition & 1 deletion docs/file-types/myst-notebooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Notebooks with Markdown can be read in, executed, and cached by Jupyter Book (se
This allows you to store all of your notebook content in a text format that is much nicer for version control software, while still having all the functionality of a Jupyter notebook.

:::{note}
MyST notebooks uses [MyST-NB to convert between ipynb and text files](myst-nb:index).
MyST notebooks uses [MyST-NB to convert between ipynb and text files](inv:myst-nb#index).
See its documentation for more information.
:::

Expand Down
2 changes: 1 addition & 1 deletion docs/file-types/restructuredtext.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ reading [the Sphinx rST documentation](https://www.sphinx-doc.org/es/stable/rest

## Including reStructuredText in Markdown

To insert rST into Markdown, you can use the [eval-rst directive](myst-parser:syntax/directives/parsing):
To insert rST into Markdown, you can use the [eval-rst directive](inv:myst-parser#syntax/directives/parsing):

````md
```{eval-rst}
Expand Down
2 changes: 1 addition & 1 deletion docs/start/create.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ You can also store Jupyter Notebooks as markdown files or other text files. See

Any outputs generated by the notebook will be inserted into your built book (though they may not be in your input notebook). This way you do not need to store the notebook's outputs with your repository. See [](../content/execute.md) for more information.

There are many other interesting things that you can do with notebook content as a part of your book. We recommend checking out [](../content/code-outputs.md) as well as [](../interactive/interactive.md) to get started with Jupyter notebooks.
There are many other interesting things that you can do with notebook content as a part of your book. We recommend checking out [](../content/code-outputs.md) as well as [](../interactive/interactive.ipynb) to get started with Jupyter notebooks.


### MyST Markdown Notebooks (`.md`, and other text formats)
Expand Down
2 changes: 1 addition & 1 deletion jupyter_book/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Build a book with Jupyter Notebooks and Sphinx."""

__version__ = "0.15.1"
__version__ = "1.0.0"


# We connect this function to the step after the builder is initialized
Expand Down
4 changes: 0 additions & 4 deletions jupyter_book/sphinx.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,6 @@ def debug_args():
parallel=jobs,
keep_going=keep_going,
)
app.srcdir = Path(app.srcdir).as_posix()
app.outdir = Path(app.outdir).as_posix()
app.confdir = Path(app.confdir).as_posix()
app.doctreedir = Path(app.doctreedir).as_posix()

# We have to apply this update after the sphinx initialisation,
# since default_latex_documents is dynamically generated
Expand Down
24 changes: 12 additions & 12 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ classifiers = [
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.7",
"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",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing :: Markup",
Expand All @@ -26,25 +26,25 @@ keywords = [
"notebook",
]
dynamic = ["description", "version"]
requires-python = ">=3.7"
requires-python = ">=3.9"
dependencies = [
"click>=7.1,<9",
"docutils>=0.15,<0.19", # report issue for >=0.18,<0.20 until https://github.com/mcmtroffaes/sphinxcontrib-bibtex/issues/322 is fixed
"Jinja2",
"jsonschema<5",
"linkify-it-py~=2.0.0",
"myst-nb~=0.17.1",
"myst-nb~=1.0.0",
"myst-parser>=1.0.0,<3",
"pyyaml",
"sphinx>=4,<6",
"sphinx>=5.0.0,<8",
"sphinx-comments",
"sphinx-copybutton",
"sphinx-external-toc~=0.3.1",
"sphinx-jupyterbook-latex~=0.5.2",
"sphinx-design~=0.4.1",
"sphinx-thebe~=0.2.0",
"sphinx-book-theme~=1.0.0",
"sphinx-external-toc~=1.0.0",
"sphinx-jupyterbook-latex~=1.0.0",
"sphinx-design~=0.5.0",
"sphinx-thebe~=0.3.0",
"sphinx-book-theme~=1.1.0rc1",
"sphinx_togglebutton",
"sphinxcontrib-bibtex>=2.2.0,<=2.5.0",
"sphinxcontrib-bibtex~=2.6.1",
"sphinx-multitoc-numbering~=0.1.3",
]

Expand Down