Ensures that *args consist of a consistent type

    :param f: any client method with *args parameter
    :return: function f

def validate_args(f):
    """
    Ensures that *args consist of a consistent type

    :param f: any client method with *args parameter
    :return: function f
    """

    def wrapper(self, args):
        arg_types = set([type(arg) for arg in args])
        if len(arg_types) > 1:
            raise TypeError("Mixed input types are not allowed")

        elif list(arg_types)[0] not in (dict, str):
            raise TypeError("Only dict and str types accepted")

        return f(self, args)

    return wrapper