def encode_double(cls, value): data = [] def write(x): data.append(x) encoder = protobuf_encoder.DoubleEncoder(1, False, False) encoder(write, value) return b''.join(data[1:]) # strips the tag value
from google.protobuf.internal import encoder as protobuf_encoder # pylint: disable=import-error,no-name-in-module from google.protobuf.internal import wire_format as protobuf_wire_format from krpc.error import EncodingError from krpc.platform import bytelength import krpc.schema.KRPC_pb2 as KRPC from krpc.types import \ Types, ValueType, ClassType, EnumerationType, MessageType, TupleType, \ ListType, SetType, DictionaryType # The following unpacks the internal protobuf decoders, whose signature # depends on the version of protobuf installed # pylint: disable=invalid-name _pb_VarintEncoder = protobuf_encoder._VarintEncoder() _pb_SignedVarintEncoder = protobuf_encoder._SignedVarintEncoder() _pb_DoubleEncoder = protobuf_encoder.DoubleEncoder(1, False, False) _pb_FloatEncoder = protobuf_encoder.FloatEncoder(1, False, False) _pb_version = google.protobuf.__version__.split('.') if int(_pb_version[0]) >= 3 and int(_pb_version[1]) >= 4: # protobuf v3.4.0 and above def _VarintEncoder(write, value): return _pb_VarintEncoder(write, value, True) def _SignedVarintEncoder(write, value): return _pb_SignedVarintEncoder(write, value, True) def _DoubleEncoder(write, value): return _pb_DoubleEncoder(write, value, True) def _FloatEncoder(write, value): return _pb_FloatEncoder(write, value, True)