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()
def serialize(byts, protocol_version): return int8_pack(byts)
def serialize(truth, protocol_version): return int8_pack(truth)