示例#1
0
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)
示例#2
0
 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)
示例#3
0
def test_list_string_table():
    t = ListStringTable()

    string_table_test(t)

    assert list(t) == ["", "foobar", "foobaz"]
示例#4
0
 def __init__(self, *args, **kwargs):
     super(RefMsgpackEncoderV05, self).__init__(*args, **kwargs)
     self.string_table = ListStringTable()
     self.string_table.index(ORIGIN_KEY)