Cython API: fixed bug when deleting a column from a view where the

Cython wrapper wasn't closed, and fixed the Line selection
materialization
This commit is contained in:
Celine Mercier
2017-04-14 16:19:18 +02:00
parent 2bbee64e57
commit 0e08fc486a

View File

@ -210,16 +210,23 @@ cdef class View(OBIWrapper) :
cpdef delete_column(self,
object column_name) :
cdef bytes column_name_b = tobytes(column_name)
if not self.active() :
raise OBIObjectClosedInstance()
cdef bytes column_name_b = tobytes(column_name)
# Close the cython instance first
col = self[column_name]
col.close()
# Remove the column from the view which closes the C structure
if obi_view_delete_column(self.pointer(), column_name_b) < 0 :
raise Exception("Problem deleting column %s from a view",
bytes2str(column_name_b))
cpdef rename_column(self,
object current_name,
object new_name):
@ -466,20 +473,34 @@ cdef class Line_selection(list):
object view_name,
object comments=""):
cdef View view = View(987654)
cdef bytes view_name_b=tobytes(view_name)
cdef bytes view_name_b = tobytes(view_name)
cdef bytes comments_b
cdef Obiview_p pointer
cdef View view
view._pointer = obi_new_view(self._view._dms.pointer(),
view_name_b,
self._view.pointer(),
self.__build_binary_list__(),
tobytes(comments))
if not self._view.active() :
raise OBIObjectClosedInstance()
if view._pointer == NULL :
raise RuntimeError("Error : Cannot clone view %s into view %s"
% (str(self._view_name),
view_name)
if comments is not None:
comments_b = tobytes(comments)
else:
comments_b = b''
pointer = obi_new_view(self._view._dms.pointer(),
view_name_b,
self._view.pointer(),
self.__build_binary_list__(),
comments_b)
if pointer == NULL :
raise RuntimeError("Error : Cannot clone view %s into view %s with new line selection"
% (str(self._view.name),
bytes2str(view_name_b))
)
view = OBIWrapper.new(type(self._view), pointer)
view._dms = self._view._dms
view._dms.register(view)
return view