Transformers

Transformer Interface

class zircon.transformers.base.BaseTransformer[source]

Abstract base class defining the Transformer interface.

A Transformer takes in messages, applies some transformation, and spits them back out. It is a general piece of middleware in a data stream that can be used to compress/decompress, encode/decode, or split/combine messages in a data pipeline.

Usage:

def process(msg):
    do_something(msg)

t = MyTransformer()
t.set_callback(process)

for msg in messages:
    t.push(msg)
set_callback(callback)[source]

Set a function to be invoked for each outputted message.

push(msg)[source]

Feed in a message.

Pass-through Transformer

class zircon.transformers.base.Transformer[source]

Bases: zircon.transformers.base.BaseTransformer

Transformer that acts as a pass-through, invoking the callback for each message received with no alterations.

Extend this and override push() to implement a Transformer.

set_callback(callback)[source]
output(msg)[source]

If I have a callback, invoke it.

push(msg)[source]

Output exactly what I receive.

Common Transformers

class zircon.transformers.common.Combiner(limit)[source]

Bases: zircon.transformers.base.Transformer

Combine messages into a list, then send them out.

__init__(limit)[source]
Parameters:limit – How many messages to combine.
push(msg)[source]
class zircon.transformers.common.Doubler[source]

Bases: zircon.transformers.base.Transformer

Output each message twice.

push(msg)[source]
class zircon.transformers.common.Splitter[source]

Bases: zircon.transformers.base.Transformer

Split messages into parts by iterating through them.

push(msg)[source]
class zircon.transformers.common.Uppercaser[source]

Bases: zircon.transformers.base.Transformer

Capitalize string-like messages.

push(msg)[source]
class zircon.transformers.common.Lowercaser[source]

Bases: zircon.transformers.base.Transformer

Lowercase string-like messages.

push(msg)[source]
class zircon.transformers.common.Pickler[source]

Bases: zircon.transformers.base.Transformer

Pickle messages with the latest protocol.

push(msg)[source]
class zircon.transformers.common.Unpickler[source]

Bases: zircon.transformers.base.Transformer

Unpickle messages with the latest protocol.

push(msg)[source]
class zircon.transformers.common.Compressor[source]

Bases: zircon.transformers.base.Transformer

Compress messages using zlib.

push(msg)[source]
class zircon.transformers.common.Decompressor[source]

Bases: zircon.transformers.base.Transformer

Decompress messages using zlib.

push(compressed_msg)[source]
class zircon.transformers.common.TimedCombiner(dt=0.1)[source]

Bases: zircon.transformers.base.Transformer

Convert individual data points into a dictionary of signal names to time series, outputted at a regular interval.

Input: (12345, ‘MYSIGNAL’, -5.2), (12346, ‘MYSIGNAL’, 1.3), ... Output: {‘MYSIGNAL’: ((12345, -5.2), (12346, 1.3))}

__init__(dt=0.1)[source]
push(msg)[source]
class zircon.transformers.common.Printer(prefix=None)[source]

Bases: zircon.transformers.base.Transformer

Prints messages and passes them on unaltered.

__init__(prefix=None)[source]
push(msg)[source]
class zircon.transformers.common.Timer[source]

Bases: zircon.transformers.base.Transformer

Prints the time between messages, and passes them on unaltered.

__init__()[source]
push(msg)[source]