`isinstance` on `runtime_checkable` `Protocol` has side-effects for `@property` methods
from typing import Protocol, runtime_checkable @runtime_checkable class X(Protocol): @property def myproperty(self): ... class Y: @property def myproperty(self): raise RuntimeError("hallo") isinstance(Y(), X)
This is an issue, for example, if myproperty is an expensive call, has unwanted side effects, or excepts outside of a context manager