4 from collections
import OrderedDict
33 if name
in self.__dict__:
34 result = self.__dict__[name]
36 elif name ==
'utters':
37 result = self.__dict__[
'_filtered_utters']
39 elif hasattr(self.__dict__[
'_orig_seg'], name):
40 result = getattr(self.__dict__[
'_orig_seg'], name)
43 raise AttributeError(
'FilteredSeg has no attribute "%s"' % (name))
56 self.__dict__[
'_filtered_utters'] = value
58 elif name ==
'_orig_seg' or name ==
'_filtered_utters':
59 self.__dict__[name] = value
61 elif name
in self.__dict__[
'_orig_seg']:
62 self.__dict__[
'_orig_seg'][name] = value
65 raise AttributeError(
'FilteredSeg has no attribute "%s"' % (name))
72 ENDPOINT_TYPES =
Enum(
'HEAD TAIL'.split(), [
'prev',
'next'])
95 self.
chains = FilterManager.get_chains(self.
segs)
108 for seg
in self.
segs:
151 heads = OrderedDict()
153 for utter
in seg.utters:
162 result = heads.keys()
163 result.sort(key=
lambda cur_utter: cur_utter.start)
176 result += cur.trans_phrase
191 if cur.speaker
and cur.speaker.speaker_codeinfo:
192 result += cur.speaker.speaker_codeinfo.code
209 result +=
'|%s|' % (
'|'.join(cur.trans_codes))
if cur.trans_codes
else 'None'
225 while getattr(cur, endpoint_type) !=
None:
226 cur = getattr(cur, endpoint_type)