def _run_client_method(self, method, method_kwargs, format_func, format_kwargs=None): """ Run the provided client method and format the result. :param method: Client method to run. :type method: ``func`` :param method_kwargs: Keyword arguments passed to the client method. :type method_kwargs: ``dict`` :param format_func: Function for formatting the result. :type format_func: ``func`` :rtype: ``list`` of ``dict`` """ # Filter out parameters with string value of "None" # This is a work around since the default values can only be strings method_kwargs = filter_none_values(method_kwargs) method_name = method.__name__ self.logger.debug('Calling client method "%s" with kwargs "%s"' % (method_name, method_kwargs)) result = method(**method_kwargs) result = format_func(result, **format_kwargs or {}) return result