Suppose we used dependency injection and had each interface provide an ErrorLogger which could do whatever was needed? Then instead of raising `IncompetentDeveloperError` in python we would call `error_logger.raise(IncompetentDeveloperError, msg)` This would be valuable for more advanced pipeline interfaces as well.