def without_duplicates(args):
    """
    Removes duplicated items from an iterable.

    :param args: the iterable to remove duplicates from
    :type args: iterable
    :return: the same iterable without duplicated items
    :rtype: iterable
    :raise TypeError: if *args* is not iterable
    """
    if hasattr(args, '__iter__') and not isinstance(args, str):
        if args:
            return type(args)(set(args))
        else:
            return args
    else:
        raise TypeError("Expected iterable, got {args_type} insted".format(args_type=type(args)))