def gen_isempty(gen):
    """
    Checks to see if a generator is empty, returning a copy of the original

    Returns a tuple of the original generator and False if it has at least one value, True if it's empty

    :param generator gen: any generator
    :return tuple: (generator, bool), returns the same generator, and True if empty, False if not
    """
    try:
        item = next(gen)

        def my_generator():
            yield item
            yield from gen

        return my_generator(), False
    except StopIteration:
        return (_ for _ in []), True