From 3599f7d844322a52bc36903ed1fa5f9c4424e8b1 Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Tue, 9 Nov 2021 09:18:50 +0100 Subject: [PATCH 1/3] Make fallback for changed get_signature_prefix() Fixes sphinx-doc/sphinx#9832 --- sphinx/domains/python.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index fd6a788921c..051da44808f 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -495,7 +495,13 @@ def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str] sig_prefix = self.get_signature_prefix(sig) if sig_prefix: - signode += addnodes.desc_annotation(str(sig_prefix), '', *sig_prefix) + if type(sig_prefix) is str: + logger.warning("Python directive get_signature_prefix() returns a str ('{}')" + " instead of a list of nodes (changed in 4.3).".format(sig_prefix), + location=signode) + signode += addnodes.desc_annotation(sig_prefix, '', nodes.Text(sig_prefix, sig_prefix)) + else: + signode += addnodes.desc_annotation(str(sig_prefix), '', *sig_prefix) if prefix: signode += addnodes.desc_addname(prefix, prefix) From d20cb96773bd89e58da21f4996c20679dfb129e9 Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Tue, 9 Nov 2021 09:31:56 +0100 Subject: [PATCH 2/3] Fix lint errors --- sphinx/domains/python.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 051da44808f..402bdfc9fb7 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -496,10 +496,12 @@ def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str] sig_prefix = self.get_signature_prefix(sig) if sig_prefix: if type(sig_prefix) is str: - logger.warning("Python directive get_signature_prefix() returns a str ('{}')" - " instead of a list of nodes (changed in 4.3).".format(sig_prefix), - location=signode) - signode += addnodes.desc_annotation(sig_prefix, '', nodes.Text(sig_prefix, sig_prefix)) + logger.warning( + "Python directive get_signature_prefix() returns a str ('{}')" + " instead of a list of nodes (changed in 4.3).".format(sig_prefix), + location=signode) + signode += addnodes.desc_annotation(sig_prefix, '', # type: ignore + nodes.Text(sig_prefix)) # type: ignore else: signode += addnodes.desc_annotation(str(sig_prefix), '', *sig_prefix) From 63bd4b8062eaa65f107ce0b5066f8c7229f1c63c Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Tue, 9 Nov 2021 20:37:34 +0100 Subject: [PATCH 3/3] Use warnings.warn and deprecation warning --- sphinx/domains/python.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 402bdfc9fb7..46a67b4ea3a 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -496,10 +496,12 @@ def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str] sig_prefix = self.get_signature_prefix(sig) if sig_prefix: if type(sig_prefix) is str: - logger.warning( - "Python directive get_signature_prefix() returns a str ('{}')" - " instead of a list of nodes (changed in 4.3).".format(sig_prefix), - location=signode) + warnings.warn( + "Python directive method get_signature_prefix()" + " returning a string is deprecated." + " It must now return a list of nodes." + " Return value was '{}'.".format(sig_prefix), + RemovedInSphinx50Warning) signode += addnodes.desc_annotation(sig_prefix, '', # type: ignore nodes.Text(sig_prefix)) # type: ignore else: