From 704f5874d6bfb28ea3c6e805be297ce321a0d788 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 20 May 2022 10:02:03 -0400 Subject: [PATCH] logging: always show source locations as absolute paths Nodes attached to the parse tree via the `include` directive have their `source` attribute set to the relative path of the included file. Other nodes in the tree use the full absolute path. For consistent logging, ensure that the node location is always expressed as an absolute path, when the filename is known. See https://github.com/sphinx-contrib/spelling/issues/153 for an example of the effect of the original problem. --- sphinx/util/logging.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sphinx/util/logging.py b/sphinx/util/logging.py index 37fa672afbf..4c6cb29018e 100644 --- a/sphinx/util/logging.py +++ b/sphinx/util/logging.py @@ -12,6 +12,7 @@ from sphinx.errors import SphinxWarning from sphinx.util.console import colorize +from sphinx.util.osutil import abspath if TYPE_CHECKING: from sphinx.application import Sphinx @@ -514,6 +515,8 @@ class WarningLogRecordTranslator(SphinxLogRecordTranslator): def get_node_location(node: Node) -> Optional[str]: (source, line) = get_source_line(node) + if source: + source = abspath(source) if source and line: return "%s:%s" % (source, line) elif source: