Currently there are a few Protocols https://docs.python.org/3/library/typing.html#protocols defined in the typing module. One that I recently felt like was missing was a typing annotation for classes with a __str__() method defined. Seems like a fairly straightforward implementation.

@runtime_checkable
class SupportsString(Protocol): """An ABC with one abstract method __str__."""
__slots__ = ()
@abstractmethod
def __str__(self) -> str:
pass

Perhaps there is another way to do this that I am missing?