diff --git a/python/obitools3/dms/column/column.pxd b/python/obitools3/dms/column/column.pxd index f296474..405deff 100644 --- a/python/obitools3/dms/column/column.pxd +++ b/python/obitools3/dms/column/column.pxd @@ -31,7 +31,8 @@ cdef class Column(OBIWrapper) : cdef class Column_multi_elts(Column) : - cpdef set_line(self, index_t line_nb, dict values) + # The type of [values] can be dict, Column_line, or any other class with values referenced by keys with an iterator [for key in values] + cpdef set_line(self, index_t line_nb, object values) cdef class Column_line: diff --git a/python/obitools3/dms/column/column.pyx b/python/obitools3/dms/column/column.pyx index 43c5f99..9ce73ae 100644 --- a/python/obitools3/dms/column/column.pyx +++ b/python/obitools3/dms/column/column.pyx @@ -1,4 +1,5 @@ #cython: language_level=3 + from obitools3.dms.column import typed_column @@ -73,7 +74,7 @@ cdef class Column(OBIWrapper) : cdef bytes comments_b = tobytes(comments) cdef bytes elements_names_b cdef char* elements_names_p - + if not view.active() : raise OBIObjectClosedInstance() @@ -85,7 +86,7 @@ cdef class Column(OBIWrapper) : elements_names_p = elements_names_b else: elements_names_p = NULL - + if (obi_view_add_column(view = view.pointer(), column_name = column_name_b, version_number = -1, @@ -101,7 +102,7 @@ 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, alias_b) @@ -175,7 +176,7 @@ cdef class Column(OBIWrapper) : )) view.register(self) - + def __len__(self): ''' @@ -222,7 +223,7 @@ cdef class Column(OBIWrapper) : cdef bytes s s = self._alias + b", original name: " + self.original_name + b", version " + str2bytes(str(self.version)) + b", data type: " + self.data_type return bytes2str(s) # TODO can't return bytes - + cpdef close(self): # TODO discuss, can't be called bc then bug when closing view that tries to close it in C @@ -293,7 +294,7 @@ cdef class Column_multi_elts(Column) : def __getitem__(self, index_t line_nb): return Column_line(self, line_nb) - cpdef set_line(self, index_t line_nb, dict values): + cpdef set_line(self, index_t line_nb, object values): for element_name in values : self.set_item(line_nb, element_name, values[element_name])