@staticmethod
def factory(handler: str, server: str, auth: dict) ->'ETLHandler':
    """Return an instance of the implementation of ETLHandler that can
        handle the given parameters.
        :param handler: Describes the handler. E.g.: transmart, ada
        :param server: The server to download data from.
        :param auth: Contains credentials to authenticate with the API.
        :return: An instance of an implementation of ETLHandler that returns
        True for self.can_handle
        """
    from . import HANDLER_REGISTRY
    for Handler in HANDLER_REGISTRY:
        if Handler.can_handle(handler):
            return Handler(server, auth)
    raise NotImplementedError("No ETLHandler implementation found for: '{}'"
        .format(handler))
