示例#1
0
    def serialize(cls, v, protocol_version):
        buf = io.BytesIO()
        bound_kind, bounds = None, ()

        try:
            value = v.value
        except AttributeError:
            raise ValueError(
                '%s.serialize expects an object with a value attribute; got'
                '%r' % (cls.__name__, v))

        if value is None:
            try:
                lower_bound, upper_bound = v.lower_bound, v.upper_bound
            except AttributeError:
                raise ValueError(
                    '%s.serialize expects an object with lower_bound and '
                    'upper_bound attributes; got %r' % (cls.__name__, v))
            if lower_bound == util.OPEN_BOUND and upper_bound == util.OPEN_BOUND:
                bound_kind = BoundKind.BOTH_OPEN_RANGE
            elif lower_bound == util.OPEN_BOUND:
                bound_kind = BoundKind.OPEN_RANGE_LOW
                bounds = (upper_bound, )
            elif upper_bound == util.OPEN_BOUND:
                bound_kind = BoundKind.OPEN_RANGE_HIGH
                bounds = (lower_bound, )
            else:
                bound_kind = BoundKind.CLOSED_RANGE
                bounds = lower_bound, upper_bound
        else:  # value is not None
            if value == util.OPEN_BOUND:
                bound_kind = BoundKind.SINGLE_DATE_OPEN
            else:
                bound_kind = BoundKind.SINGLE_DATE
                bounds = (value, )

        if bound_kind is None:
            raise ValueError('Cannot serialize %r; could not find bound kind' %
                             (v, ))

        buf.write(int8_pack(BoundKind.to_int(bound_kind)))
        for bound in bounds:
            buf.write(int64_pack(bound.milliseconds))
            buf.write(int8_pack(cls._encode_precision(bound.precision)))

        return buf.getvalue()
示例#2
0
 def serialize(truth):
     return int8_pack(truth)
示例#3
0
def write_byte(f, b):
    f.write(int8_pack(b))
示例#4
0
 def serialize(truth):
     return int8_pack(bool(truth))
示例#5
0
def write_byte(f, b):
    f.write(int8_pack(b))
示例#6
0
 def serialize(truth, protocol_version):
     return int8_pack(truth)
示例#7
0
 def serialize(byts, protocol_version):
     return int8_pack(byts)
示例#8
0
 def serialize(truth, protocol_version):
     return int8_pack(truth)
示例#9
0
 def serialize(byts, protocol_version):
     return int8_pack(byts)