Beispiel #1
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     user_context = decimal.getcontext()
     decimal.setcontext(self.context)
     value = value.quantize(self.scale_format)
     bytes_value = str(value).encode("utf-8")
     out_stream.write_bytes(bytes_value, len(bytes_value))
     decimal.setcontext(user_context)
Beispiel #2
0
 def _encode_to_stream(value: datetime.date, out_stream: OutputStream):
     if value is None:
         out_stream.write_int32(0xFFFFFFFF)
         out_stream.write_int16(0xFFFF)
     else:
         out_stream.write_int32(value.year)
         out_stream.write_int8(value.month)
         out_stream.write_int8(value.day)
Beispiel #3
0
    def encode_to_stream(self, value: List, out_stream: OutputStream):
        for item in value:
            self._field_coder.encode_to_stream(item, self._data_out_stream)
            self._write_data_to_output_stream(out_stream)

        # write end message
        if self._separated_with_end_message:
            out_stream.write_var_int64(1)
            out_stream.write_byte(0x00)
Beispiel #4
0
class LengthPrefixBaseCoderImpl(ABC):
    """
    LengthPrefixBaseCoder will be used in Operations and other coders will be the field coder of
    LengthPrefixBaseCoder.
    """
    def __init__(self, field_coder: 'FieldCoderImpl'):
        self._field_coder = field_coder
        self._data_out_stream = OutputStream()

    def _write_data_to_output_stream(self, out_stream: OutputStream):
        out_stream.write_var_int64(self._data_out_stream.size())
        out_stream.write(self._data_out_stream.get())
        self._data_out_stream.clear()
Beispiel #5
0
 def encode_to_stream(self, value: Instant, out_stream: OutputStream):
     if value is None:
         out_stream.write_int64(self._null_seconds)
         out_stream.write_int32(self._null_nanos)
     else:
         out_stream.write_int64(value.seconds)
         out_stream.write_int32(value.nanos)
Beispiel #6
0
class BeamCoderImpl(StreamCoderImpl):
    def __init__(self, value_coder):
        self._value_coder = value_coder
        self._data_output_stream = OutputStream()

    def encode_to_stream(self, value, out_stream: create_OutputStream, nested):
        self._value_coder.encode_to_stream(value, self._data_output_stream)
        out_stream.write(self._data_output_stream.get())
        self._data_output_stream.clear()

    def decode_from_stream(self, in_stream: create_InputStream, nested):
        data_input_stream = BeamInputStream(in_stream)
        return self._value_coder.decode_from_stream(data_input_stream)

    def __repr__(self):
        return 'BeamCoderImpl[%s]' % self._value_coder
Beispiel #7
0
class FlinkCoderBeamWrapper(StreamCoderImpl):
    """
    Bridge between Beam coder and Flink coder.
    """
    def __init__(self, value_coder):
        self._value_coder = value_coder
        self._data_output_stream = OutputStream()

    def encode_to_stream(self, value, out_stream: create_OutputStream, nested):
        self._value_coder.encode_to_stream(value, self._data_output_stream)
        out_stream.write(self._data_output_stream.get())
        self._data_output_stream.clear()

    def decode_from_stream(self, in_stream: create_InputStream, nested):
        data_input_stream = BeamInputStream(in_stream)
        return self._value_coder.decode_from_stream(data_input_stream)

    def __repr__(self):
        return 'FlinkCoderBeamWrapper[%s]' % self._value_coder
Beispiel #8
0
    def write_mask(self, value, row_kind_value, out_stream: OutputStream):
        field_pos = 0
        null_byte_search_table = self.null_byte_search_table
        remaining_bits_num = self._remaining_bits_num

        # first byte contains the row kind bits
        b = self.row_kind_search_table[row_kind_value]
        for i in range(0, 8 - ROW_KIND_BIT_SIZE):
            if field_pos + i < len(value) and value[field_pos + i] is None:
                b |= null_byte_search_table[i + ROW_KIND_BIT_SIZE]
        field_pos += 8 - ROW_KIND_BIT_SIZE
        out_stream.write_byte(b)

        for _ in range(1, self._leading_complete_bytes_num):
            b = 0x00
            for i in range(0, 8):
                if value[field_pos + i] is None:
                    b |= null_byte_search_table[i]
            field_pos += 8
            out_stream.write_byte(b)

        if self._leading_complete_bytes_num >= 1 and remaining_bits_num:
            b = 0x00
            for i in range(remaining_bits_num):
                if value[field_pos + i] is None:
                    b |= null_byte_search_table[i]
            out_stream.write_byte(b)
Beispiel #9
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_int32(len(value))
     for elem in value:
         if elem is None:
             out_stream.write_byte(False)
         else:
             out_stream.write_byte(True)
             self._elem_coder.encode_to_stream(elem, out_stream)
Beispiel #10
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     milliseconds, nanoseconds = self.timestamp_to_internal(value)
     if self.is_compact():
         assert nanoseconds == 0
         out_stream.write_int64(milliseconds)
     else:
         out_stream.write_int64(milliseconds)
         out_stream.write_int32(nanoseconds)
Beispiel #11
0
 def encode_to_stream(self, map_value, out_stream: OutputStream):
     out_stream.write_int32(len(map_value))
     for key in map_value:
         self._key_coder.encode_to_stream(key, out_stream)
         value = map_value[key]
         if value is None:
             out_stream.write_byte(True)
         else:
             out_stream.write_byte(False)
             self._value_coder.encode_to_stream(map_value[key], out_stream)
Beispiel #12
0
 def encode(self, value):
     out = OutputStream()
     self.encode_to_stream(value, out)
     return out.get()
Beispiel #13
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_int32(len(value))
     for elem in value:
         self._elem_coder.encode_to_stream(elem, out_stream)
Beispiel #14
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_int32(self.time_to_internal(value))
Beispiel #15
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_int64(value.id)
Beispiel #16
0
 def __init__(self, field_coder: 'FieldCoderImpl'):
     self._field_coder = field_coder
     self._data_out_stream = OutputStream()
Beispiel #17
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_double(value)
Beispiel #18
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_float(value)
Beispiel #19
0
 def __init__(self, value_coder):
     self._value_coder = value_coder
     self._data_output_stream = OutputStream()
Beispiel #20
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_byte(0)
Beispiel #21
0
 def _write_data_to_output_stream(self, out_stream: OutputStream):
     out_stream.write_var_int64(self._data_out_stream.size())
     out_stream.write(self._data_out_stream.get())
     self._data_out_stream.clear()
Beispiel #22
0
 def _encode_to_stream(value: datetime.time, out_stream: OutputStream):
     if value is None:
         out_stream.write_int8(0xFF)
         out_stream.write_int16(0xFFFF)
         out_stream.write_int32(0xFFFFFFFF)
     else:
         out_stream.write_int8(value.hour)
         out_stream.write_int8(value.minute)
         out_stream.write_int8(value.second)
         out_stream.write_int32(value.microsecond * 1000)
Beispiel #23
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     bytes_value = str(value).encode("utf-8")
     out_stream.write_bytes(bytes_value, len(bytes_value))