diff options
author | James Knight <james.d.knight@live.com> | 2021-12-05 15:03:57 -0500 |
---|---|---|
committer | James Knight <james.d.knight@live.com> | 2021-12-05 15:03:57 -0500 |
commit | 75914c67c77e94b0af71fbab424ad1e18e218b97 (patch) | |
tree | 3ee897536e193fbe1d7e5d8cfe5c362b113b208a /sphinx/util/docutils.py | |
parent | edd14783f3cc6222066fd63efbe28c2728617e18 (diff) | |
download | sphinx-git-75914c67c77e94b0af71fbab424ad1e18e218b97.tar.gz |
drop translator-specific unknown_visit calls
Removes the need for various translators from raising a
`NotImplementedError` exception when missing support for a specific node
type. docutils will already raise [1][2] a `NotImplementedError`
exception for these cases. This help reduce the implementation inside
Sphinx as well as prevents the possible undesired replication of
unknown-node handling with third-party extensions [3].
In most cases, generating a warning message for an unsupported node type
can be preferred. Providing an indication that a node is not supported
can be easier for a user of Sphinx to understand a limitation of a
builder over a generic "not implemented" exception. This commit takes
the logging call which is already used by `texinfo` and applies it to
the `SphinxTranslator` base class -- which any Sphinx translator
implementation can use.
[1]: https://repo.or.cz/docutils.git/blob/d169015ee0f412cffd69b33654d8a119d99bc0f3:/docutils/nodes.py#l2048
[2]: https://repo.or.cz/docutils.git/blob/53716a13b48128af6045139d3cd2909f61e7ed8e:/docutils/nodes.py#l1897
[3]: https://github.com/sphinx-doc/sphinx/issues/9921
Signed-off-by: James Knight <james.d.knight@live.com>
Diffstat (limited to 'sphinx/util/docutils.py')
-rw-r--r-- | sphinx/util/docutils.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index c3d385306..39fa02d31 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -28,7 +28,7 @@ from docutils.utils import Reporter, unescape from packaging import version from sphinx.errors import SphinxError -from sphinx.locale import _ +from sphinx.locale import _, __ from sphinx.util import logging from sphinx.util.typing import RoleFunction @@ -496,6 +496,9 @@ class SphinxTranslator(nodes.NodeVisitor): else: super().dispatch_departure(node) + def unknown_visit(self, node: Node) -> None: + logger.warning(__('unknown node type: %r'), node, location=node) + # cache a vanilla instance of nodes.document # Used in new_document() function |