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
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
:attr:`~.Builder.name` attribute, which is the name passed to 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
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(
# ...
entry_points={
'sphinx.builders': [
'mybuilder = my.extension.module',
],
}
)
[project.entry-points."sphinx.builders"]
mybuilder = "my.extension.module"
Note that it is still necessary to register the builder using
: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.
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()``
function to register your themes using ``add_html_theme()`` API in it::
called ``sphinx.html_themes`` in your ``pyproject.toml`` file,
and write a ``setup()`` function to register your theme
using the :meth:`~sphinx.application.Sphinx.add_html_theme` API:
# 'setup.py'
setup(
...
entry_points = {
'sphinx.html_themes': [
'name_of_theme = your_package',
]
},
...
)
.. code-block:: toml
# '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
def setup(app):