def print_columns(*args):
    """Prints data in fixed-width columns.

    This function takes an arbitrarily long number of args consisting of
    unicodes and/or tuples, then uses PrettyTable to print them into
    columns. Tuples must be of the format (unicode, int). If an arg is an
    unicode, it is simply printed in a column where the column width is
    equal to the width of the unicode. If an arg is a tuple, the first item
    (unicode) of the tuple is printed in a column where the width of the
    column is equal to the second item (int) of the tuple. arg order
    determines column order, i.e. the first arg is printed in the first column.

    Args:
        *args: arbitrary numbers of tuples and unicodes to print,
               see above for details

    Raises:
        ValueError: raised if a tuple cannot be printed

    Example:
        .. code-block:: Python

            >>> print_columns(('hello', 5), 'bye', ('nope', 3))
            hello  bye  nop
                         e
    """
