This is precisely the thing I do not want from python. Subclassing is super useful in convoluted tests where fakes are superior to mocks. I don't like being told "you can't do this" by some library's code.
class Final(type):
def __new__(cls, name, bases, dct):
if any(isinstance(base, Final) for base in bases):
raise TypeError("No!")
return type.__new__(cls, name, bases, dct)
class NoSubclasses(metaclass=Final):
pass
class WillThrow(NoSubclasses):
pass