Can we make AbstractContextManager.__exit__ concrete?

I agree that this would fix things, however there are some notable advantages to having base classes:

  • runtime instance checking is faster,
  • runtime instance checking is more precise, and
  • intent to implement is clearly specified.

Personally, I think we should prefer base classes to protocols, but I understand your point.

That’s a very cool idea, and would be a fine solution to this.

Nice find! So my suggestion is the same as Guido’s I guess?

Okay, I guess my preference would be to remove this odd decoration. I don’t think we do it in any other similar place? I don’t think I’ve ever written a method that I decorated with @abstractmethod that didn’t also raise in its body.