def rprint(sep='\n', end='\n', file=sys.stdout, flush=False):
    """A coroutine sink which prints received items stdout

    Args:
        sep: Optional separator to be printed between received items.
        end: Optional terminator to be printed after the last item.
        file: Optional stream to which to print.
        flush: Optional flag to force flushing after each item.
    """
    try:
        first_item = (yield)
        file.write(str(first_item))
        if flush:
            file.flush()
        while True:
            item = (yield)
            file.write(sep)
            file.write(str(item))
            if flush:
                file.flush()
    except GeneratorExit:
        file.write(end)
        if flush:
            file.flush()
def rprint ( sep = '\n' , end = '\n' , file = sys . stdout , flush = False ) : try : first_item = ( yield ) file . write ( str ( first_item ) ) if flush : file . flush ( ) while True : item = ( yield ) file . write ( sep ) file . write ( str ( item ) ) if flush : file . flush ( ) except GeneratorExit : file . write ( end ) if flush : file . flush ( )
A coroutine sink which prints received items stdout

    Args:
        sep: Optional separator to be printed between received items.
        end: Optional terminator to be printed after the last item.
        file: Optional stream to which to print.
        flush: Optional flag to force flushing after each item.