August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
Utility Modules
This is a small collection of utility components. They perform various universally useful functions, ranging from Console input and output to simple data filtering and transformations.
Console I/O (standard input and output)
Kamaelia.Util.Console contains the ConsoleReader and ConsoleEchoer components for reading from standard input and writing to standard output respectively.
Backplanes, Splitters, Fanouts (ways to distribute data to
multiple receipient components)
The Splitter and Fanout components are both very similar - send one item of data to them and it gets replicated to multiple destinations. The Splitter module is the more actively maintained with a wider range of components in it.
The Backplane module built on them by providing a way to "publish" data under a name, and allow other components to "subscribe" to it.
Data filtering, processing, transforming
There is a whole range of components for performing simple functions,
ranging from de-tupling data (eg. extracting one of the terms from a
tuple it is sent) to converting data to strings or applying an arbitrary
transformation (function) to data.
Processing streams of data
There are also components for tagging or chunking data or splitting
strings by newline characters or tokenising strings.
Timing, Regulating and controlling
This fairly maverick bunch of modules contain components that perform
various functions that can be used to control or regulate a
system.
Chooser components
serve up data one item at a time on demand - a way to iterate through a
collection of data items, values or even instructions. DataSource is a
simplified way of injecting data into a system; and LossyConnector
provides a way to 'loose it' if there is too much clogging up!
Clock and RateFilter contain
components for generating or regulating the timing or flow of data - for
example, generating regular timing pulses, or buffering and regulating
the flow of data, perhaps to maintain a frame rate.
-- Matt, April 2007