def reducing(reducer, init=UNSET):
    """Create a reducing transducer with the given reducer.

    Args:
        reducer: A two-argument function which will be used to combine the
            partial cumulative result in the first argument with the next
            item from the input stream in the second argument.

    Returns: A reducing transducer: A single argument function which,
        when passed a reducing function, returns a new reducing function
        which entirely reduces the input stream using 'reducer' before
        passing the result to the reducing function passed to the
        transducer.
    """

    reducer2 = reducer

    def reducing_transducer(reducer):
        return Reducing(reducer, reducer2, init)

    return reducing_transducer
Create a reducing transducer with the given reducer.

    Args:
        reducer: A two-argument function which will be used to combine the
            partial cumulative result in the first argument with the next
            item from the input stream in the second argument.

    Returns: A reducing transducer: A single argument function which,
        when passed a reducing function, returns a new reducing function
        which entirely reduces the input stream using 'reducer' before
        passing the result to the reducing function passed to the
        transducer.