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:
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user