Source code for alex.components.hub.messages

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import collections
import time

from datetime import datetime

from alex.utils.text import parse_command
from alex.utils.mproc import InstanceID

# TODO: add comments


[docs]class Message(InstanceID): """ Abstract class which implements basic functionality for messages passed between components in the alex. """ def __init__(self, source, target): self.id = self.get_instance_id() self.time = datetime.now() self.source = source self.target = target
[docs] def get_time_str(self): """ Return current time in dashed ISO-like format. """ return '{dt}-{tz}'.format(dt=self.time.strftime('%Y-%m-%d-%H-%M-%S.%f'), tz=time.tzname[time.localtime().tm_isdst])
[docs]class Command(Message): def __init__(self, command, source=None, target=None): Message.__init__(self, source, target) self.command = command self.parsed = collections.defaultdict(unicode, parse_command(self.command)) def __str__(self): return unicode(self).encode('ascii', 'replace') def __unicode__(self): return "#%-6d Time: %s From: %-10s To: %-10s Command: %s " % (self.id, self.get_time_str(), self.source, self.target, self.command)
[docs]class ASRHyp(Message): def __init__(self, hyp, source=None, target=None, fname = None): Message.__init__(self, source, target) self.hyp = hyp self.fname = fname def __str__(self): return unicode(self).encode('ascii', 'replace') def __unicode__(self): return "#%-6d Time: %s From: %-10s To: %-10s Hyp: %s fname: %s" % (self.id, self.get_time_str(), self.source, self.target, self.hyp, self.fname)
[docs]class SLUHyp(Message): def __init__(self, hyp, asr_hyp=None, source=None, target=None): Message.__init__(self, source, target) self.hyp = hyp self.asr_hyp = asr_hyp def __str__(self): return unicode(self).encode('ascii', 'replace') def __unicode__(self): return "#%-6d Time: %s From: %-10s To: %-10s Hyp: %s " % (self.id, self.get_time_str(), self.source, self.target, self.hyp)
[docs]class DMDA(Message): def __init__(self, da, source=None, target=None): Message.__init__(self, source, target) self.da = da def __str__(self): return "#%-6d Time: %s From: %-10s To: %-10s DA: %s " % (self.id, self.get_time_str(), self.source, self.target, self.da)
[docs]class TTSText(Message): def __init__(self, text, source=None, target=None): Message.__init__(self, source, target) self.text = text def __str__(self): return unicode(self).encode('ascii', 'replace') def __unicode__(self): return "#%-6d Time: %s From: %-10s To: %-10s Text: %s " % (self.id, self.get_time_str(), self.source, self.target, self.text)
[docs]class Frame(Message): def __init__(self, payload, source=None, target=None): Message.__init__(self, source, target) self.payload = payload def __str__(self): return unicode(self).encode('ascii', 'replace') def __unicode__(self): return "#%-6d Time: %s From: %-10s To: %-10s Len: %d " % (self.id, self.get_time_str(), self.source, self.target, len(self.payload)) def __len__(self): return len(self.payload) def __getitem__(self, key): return self.payload[key]