diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index fd6a788921c..46a67b4ea3a 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -495,7 +495,17 @@ 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: + 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: + signode += addnodes.desc_annotation(str(sig_prefix), '', *sig_prefix) if prefix: signode += addnodes.desc_addname(prefix, prefix)