def to_internal(self, value) -> IN: if value is None: return None row = Row() row._values = [self._field_data_converters[i].to_internal(item) for i, item in enumerate(value[1])] row.set_field_names(self._field_names) row.set_row_kind(RowKind(value[0])) return row
def decode_from_stream(self, in_stream, length=0) -> Row: row_kind_and_null_mask = self._mask_utils.read_mask(in_stream) fields = [None if row_kind_and_null_mask[idx + ROW_KIND_BIT_SIZE] else self._field_coders[idx].decode_from_stream(in_stream) for idx in range(0, self._field_count)] # compute the row_kind value row_kind_value = 0 for i in range(ROW_KIND_BIT_SIZE): row_kind_value += int(row_kind_and_null_mask[i]) * 2 ** i row = Row(*fields) row.set_field_names(self._field_names) row.set_row_kind(RowKind(row_kind_value)) return row