diff --git a/python/obitools3/dms/column/column.pyx b/python/obitools3/dms/column/column.pyx index f060ea4..43c5f99 100644 --- a/python/obitools3/dms/column/column.pyx +++ b/python/obitools3/dms/column/column.pyx @@ -63,24 +63,25 @@ cdef class Column(OBIWrapper) : object column_name, obitype_t data_type, index_t nb_elements_per_line=1, - object elements_names=None, - object comments=b""): - + list elements_names=None, + object comments=b"", + object alias=b""): + # TODO indexer_name? + cdef bytes column_name_b = tobytes(column_name) - cdef bytes comments_b + cdef bytes alias_b = tobytes(alias) + cdef bytes comments_b = tobytes(comments) cdef bytes elements_names_b cdef char* elements_names_p if not view.active() : raise OBIObjectClosedInstance() - - if comments is not None: - comments_b = tobytes(comments) - else: - comments_b = b'' + + if alias_b == b"" : + alias_b = column_name_b if elements_names is not None: - elements_names_b = b''.join([tobytes(x) for x in elements_names]) + elements_names_b = b';'.join([tobytes(x) for x in elements_names]) elements_names_p = elements_names_b else: elements_names_p = NULL @@ -88,7 +89,7 @@ cdef class Column(OBIWrapper) : if (obi_view_add_column(view = view.pointer(), column_name = column_name_b, version_number = -1, - alias = NULL, + alias = alias_b, data_type = data_type, nb_lines = len(view), nb_elements_per_line = nb_elements_per_line, @@ -100,8 +101,8 @@ cdef class Column(OBIWrapper) : create = True)<0): raise RuntimeError("Cannot create column %s in view %s" % (bytes2str(column_name_b), bytes2str(view.name))) - - return Column.open(view, column_name) + + return Column.open(view, alias_b) @staticmethod @@ -125,18 +126,19 @@ cdef class Column(OBIWrapper) : bytes2str(column_name_b), bytes2str(view.name) )) - + column_p = column_pp[0] column_type = column_p.header.returned_data_type column_class = Column.get_column_class(column_type, (column_p.header.nb_elements_per_line > 1)) column = OBIWrapper.new(column_class, column_pp) + column._view = view column._alias = column_name_b view.register(column) - - return column - - + + return column + + def add_to_view(self, View view, object column_name=None) : @@ -240,7 +242,7 @@ cdef class Column(OBIWrapper) : return self._alias @name.setter def name(self, new_alias): # @DuplicatedSignature - self._view.change_column_alias(self._alias, new_alias) + self._view.rename_column(self._alias, new_alias) # elements_names property getter @property