Cython API: set_line of Column_multi_elts now accept as values argument
any class where values are referenced by keys with an iterator
This commit is contained in:
@ -31,7 +31,8 @@ cdef class Column(OBIWrapper) :
|
|||||||
|
|
||||||
cdef class Column_multi_elts(Column) :
|
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:
|
cdef class Column_line:
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#cython: language_level=3
|
#cython: language_level=3
|
||||||
|
|
||||||
from obitools3.dms.column import typed_column
|
from obitools3.dms.column import typed_column
|
||||||
|
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
cdef bytes comments_b = tobytes(comments)
|
cdef bytes comments_b = tobytes(comments)
|
||||||
cdef bytes elements_names_b
|
cdef bytes elements_names_b
|
||||||
cdef char* elements_names_p
|
cdef char* elements_names_p
|
||||||
|
|
||||||
if not view.active() :
|
if not view.active() :
|
||||||
raise OBIObjectClosedInstance()
|
raise OBIObjectClosedInstance()
|
||||||
|
|
||||||
@ -85,7 +86,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
elements_names_p = elements_names_b
|
elements_names_p = elements_names_b
|
||||||
else:
|
else:
|
||||||
elements_names_p = NULL
|
elements_names_p = NULL
|
||||||
|
|
||||||
if (obi_view_add_column(view = view.pointer(),
|
if (obi_view_add_column(view = view.pointer(),
|
||||||
column_name = column_name_b,
|
column_name = column_name_b,
|
||||||
version_number = -1,
|
version_number = -1,
|
||||||
@ -101,7 +102,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
create = True)<0):
|
create = True)<0):
|
||||||
raise RuntimeError("Cannot create column %s in view %s" % (bytes2str(column_name_b),
|
raise RuntimeError("Cannot create column %s in view %s" % (bytes2str(column_name_b),
|
||||||
bytes2str(view.name)))
|
bytes2str(view.name)))
|
||||||
|
|
||||||
return Column.open(view, alias_b)
|
return Column.open(view, alias_b)
|
||||||
|
|
||||||
|
|
||||||
@ -175,7 +176,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
))
|
))
|
||||||
|
|
||||||
view.register(self)
|
view.register(self)
|
||||||
|
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
'''
|
'''
|
||||||
@ -222,7 +223,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
cdef bytes s
|
cdef bytes s
|
||||||
s = self._alias + b", original name: " + self.original_name + b", version " + str2bytes(str(self.version)) + b", data type: " + self.data_type
|
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
|
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
|
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):
|
def __getitem__(self, index_t line_nb):
|
||||||
return Column_line(self, 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 :
|
for element_name in values :
|
||||||
self.set_item(line_nb, element_name, values[element_name])
|
self.set_item(line_nb, element_name, values[element_name])
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user