def branch(*sinks_):
    """The |branch| decorator creates a |pull| object that pulls from a single
    source and then sends to all the sinks given. After all the sinks received
    the message, it is yielded.

    .. |branch| replace:: :py:func:`branch`
    """
    @pull
    def junction(source):
        sinks = [s() for s in sinks_]

        for msg in source():
            for s in sinks:
                s.send(msg)
            yield msg

    return junction
The |branch| decorator creates a |pull| object that pulls from a single
    source and then sends to all the sinks given. After all the sinks received
    the message, it is yielded.

    .. |branch| replace:: :py:func:`branch`