encoders package

encoder module

class mindreader.drivers.encoders.encoder.Encoder(encoder_type: str)

Bases: object

Allows to encode/decode user and snapshot objects. This class serves as an interface to the available encoders.

To add a new encoder, add a file named <name>_encoder.py to the current-package, with a class named <name>Encoder, which has an attribute named ‘encoder_type’ (string), that indicates the encoding method of this class. It should implement the functions below.

message_decode(encoded_user_and_snapshot) -> (<class 'mindreader.objects.user.User'>, <class 'mindreader.objects.snapshot.Snapshot'>)

Deserialize user and snapshot, returns a tuple.

message_encode(user: mindreader.objects.user.User, snapshot: mindreader.objects.snapshot.Snapshot)

Serialize user and snapshot together.

snapshot_decode(encoded_snapshot) → mindreader.objects.snapshot.Snapshot

Deserialize snapshot object.

snapshot_encode(snapshot)

Serialize snapshot object.

user_decode(encoded_user) → mindreader.objects.user.User

Deserialize user object.

user_encode(user: mindreader.objects.user.User)

Serialize user object.

mindreader.drivers.encoders.encoder.load_encoders()

Loads dynamically all the available encoders.

mindreader.drivers.encoders.encoder.supported_encoders = {'json': <class 'encoders.json_encoder.JSONEncoder'>, 'protobuf': <class 'encoders.pb_encoder.PBEncoder'>}

Mapping of the supported encoders, loaded dynamically. Currently available: Json - ‘json’ Protobuf - ‘protobuf’

json_encoder module

class mindreader.drivers.encoders.json_encoder.JSONEncoder

Bases: object

Encodes user and snapshot objects using JSON. For snapshot encoding, the snapshot must not contain binary data, or any non JSON-friendly type (except the snapshot self classes).

encoder_type = 'json'
message_decode(json_message) -> (<class 'mindreader.objects.user.User'>, <class 'mindreader.objects.snapshot.Snapshot'>)
message_encode(user: mindreader.objects.user.User, snapshot: mindreader.objects.snapshot.Snapshot)
snapshot_decode(json_snapshot) → mindreader.objects.snapshot.Snapshot
snapshot_encode(snapshot: mindreader.objects.snapshot.Snapshot) → str
user_decode(json_user: str) → mindreader.objects.user.User
user_encode(user: mindreader.objects.user.User) → str

pb_encoder module

class mindreader.drivers.encoders.pb_encoder.PBEncoder

Bases: object

Encodes user and snapshot objects using protobuf.

encoder_type = 'protobuf'
message_decode(message_bytes) -> (<class 'mindreader.objects.user.User'>, <class 'mindreader.objects.snapshot.Snapshot'>)
message_encode(user: mindreader.objects.user.User, snapshot: mindreader.objects.snapshot.Snapshot)
snapshot_decode(snapshot_bytes: bytes) → mindreader.objects.snapshot.Snapshot
snapshot_encode(snapshot: mindreader.objects.snapshot.Snapshot) → bytes
user_decode(user_bytes: bytes) → mindreader.objects.user.User
user_encode(user: mindreader.objects.user.User) → bytes