Use `pyproject.toml entry points rather than setup.py`

This commit is contained in:
Adam Turner 2023-10-03 19:26:37 +01:00
parent 71d3eaee75
commit 909f93c7ec
2 changed files with 17 additions and 24 deletions

View File

@ -10,23 +10,17 @@ Discover builders by entry point
that they do not have to be listed in the :confval:`extensions` configuration that they do not have to be listed in the :confval:`extensions` configuration
value. value.
Builder extensions should define an entry point in the ``sphinx.builders`` Builder extensions should define an entry point in the ``"sphinx.builders"``
group. The name of the entry point needs to match your builder's group. The name of the entry point needs to match your builder's
:attr:`~.Builder.name` attribute, which is the name passed to the :attr:`~.Builder.name` attribute, which is the name passed to the
:option:`sphinx-build -b` option. The entry point value should equal the :option:`sphinx-build -b` option. The entry point value should equal the
dotted name of the extension module. Here is an example of how an entry point dotted name of the extension module. Here is an example of how an entry point
for 'mybuilder' can be defined in the extension's ``setup.py`` for 'mybuilder' can be defined in the extension's ``pyproject.toml``
.. code-block:: python .. code-block:: toml
setup( [project.entry-points."sphinx.builders"]
# ... mybuilder = "my.extension.module"
entry_points={
'sphinx.builders': [
'mybuilder = my.extension.module',
],
}
)
Note that it is still necessary to register the builder using Note that it is still necessary to register the builder using
:meth:`~.Sphinx.add_builder` in the extension's :func:`setup` function. :meth:`~.Sphinx.add_builder` in the extension's :func:`setup` function.

View File

@ -95,21 +95,20 @@ As a way to distribute your theme, you can use a Python package. This makes it
easier for users to set up your theme. easier for users to set up your theme.
To distribute your theme as a Python package, please define an entry point To distribute your theme as a Python package, please define an entry point
called ``sphinx.html_themes`` in your ``setup.py`` file, and write a ``setup()`` called ``sphinx.html_themes`` in your ``pyproject.toml`` file,
function to register your themes using ``add_html_theme()`` API in it:: and write a ``setup()`` function to register your theme
using the :meth:`~sphinx.application.Sphinx.add_html_theme` API:
# 'setup.py' .. code-block:: toml
setup(
...
entry_points = {
'sphinx.html_themes': [
'name_of_theme = your_package',
]
},
...
)
# 'your_package.py' # pyproject.toml
[project.entry-points."sphinx.html_themes"]
name_of_theme = "your_theme_package"
.. code-block:: python
# your_theme_package.py
from os import path from os import path
def setup(app): def setup(app):