Open JelleZijlstra opened 1 month ago
(I added a topic-pep-702 label, @tyralla fyi.)
I think suppressing all deprecated errors in stubs could make sense
I feel that might be too much; if we deprecate something in _typeshed
, we'd want mypy to tell stub authors about it.
We could just special case typeshed stubs in particular then (mypy already does this in a few places)
(And in general that feels niche / for type-only programs removals don't feel too much more disruptive than deprecations)
Do you mean just extending the current warn_deprecated
method like this?
def warn_deprecated(self, node: SymbolNode | None, context: Context) -> None:
"""Warn if deprecated."""
if isinstance(node, Decorator):
node = node.func
if isinstance(node, (FuncDef, OverloadedFuncDef, TypeInfo)) and (
(deprecated := node.deprecated) is not None
) and not self.is_typeshed_stub: # !!!
warn = self.msg.fail if self.options.report_deprecated_as_error else self.msg.note
warn(deprecated, context, code=codes.DEPRECATED)
If so (and if it works, not checked so far), I could modify PR #17926 accordingly, which still suffers under typeshed issues.
(Thanks for the new label, @JelleZijlstra.)
Yup!
Seems I am starting to learn some Mypy slang ;-)
Running stubtest from mypy main on typeshed produces:
Which is not very useful. Maybe we should suppress
deprecated
in typeshed's configuration or in stubtest in general.