class RefMsgpackEncoderV05(RefMsgpackEncoder): def __init__(self, *args, **kwargs): super(RefMsgpackEncoderV05, self).__init__(*args, **kwargs) self.string_table = ListStringTable() self.string_table.index(ORIGIN_KEY) def _index_or_value(self, value): if value is None: return 0 if isinstance(value, six.string_types): return self.string_table.index(value) if isinstance(value, dict): return {self._index_or_value(k): self._index_or_value(v) for k, v in value.items()} return value def normalize(self, span): return tuple(self._index_or_value(_) for _ in span_to_tuple(span)) def encode(self, obj): try: return super(RefMsgpackEncoderV05, self).encode([list(self.string_table), obj]) finally: self.string_table = ListStringTable() self.string_table.index(ORIGIN_KEY)
def encode(self, obj): try: return super(RefMsgpackEncoderV05, self).encode([list(self.string_table), obj]) finally: self.string_table = ListStringTable() self.string_table.index(ORIGIN_KEY)
def test_list_string_table(): t = ListStringTable() string_table_test(t) assert list(t) == ["", "foobar", "foobaz"]
def __init__(self, *args, **kwargs): super(RefMsgpackEncoderV05, self).__init__(*args, **kwargs) self.string_table = ListStringTable() self.string_table.index(ORIGIN_KEY)