I wouldn't be at all uncomfortable. That's why I posed the question in terms of an enquiry as to @ajdawson's thoughts. 

Personally I see use of ```@abstractmethod``` (and therefore ABC) as syntactic sugar. I'd argue your use of ```NotImplementedError``` makes this an abstract class (albeit not enforced via a metaclass). I can understand objections to overuse of abc, but given all of your public methods (including ```__call__```) rely on abstract methods (I haven't look at inherited methods) subclassing is necessary for use. Having said all that, I too don't want to start a flame war :smile:. Take your pick between ```NotImplementedError``` or ```@abstractmethod``` - I'm just appreciative of your efforts and wanted to point out the options.