A fan.Thru takes an input and fans it thru multiple drains-which-produce-founts, such as tubes:

           Your Fount
        (producing "foo")
               |
               v
             Thru
               |
             _/|\_
           _/  |  \_
          /    |    \
   foo2bar  foo2baz  foo2qux
          \_   |   _/
            \_ | _/
              \|/
               |
               v
             Thru
               |
               v
           Your Drain
    (receiving a combination
        of foo, bar, baz)

The way you would construct such a flow in code would be:

   yourFount.flowTo(Thru([series(foo2bar()),
                          series(foo2baz()),
                          series(foo2qux())])).flowTo(yourDrain)
Method __init__ Create a Thru with an iterable of IDrain.
Method flowingFrom Accept input from fount and produce output filtered by all of the drains given to this Thru's constructor.
def __init__(self, drains):

Create a Thru with an iterable of IDrain.

All of the drains in drains should be drains that produce a new IFount from flowingFrom, which means they should be a series of tubes, or drains that behave like that, such as Thru itself.

Parametersdrainan iterable of IDrain
def flowingFrom(self, fount):

Accept input from fount and produce output filtered by all of the drains given to this Thru's constructor.

Parametersfounta fount whose outputs should flow through our series of transformations.
Returnsan output fount which aggregates all the values produced by the drains given to this Thru's constructor.
API Documentation for tubes, generated by pydoctor at 2016-01-18 07:46:47.