Bug with error handling: for now obi_errno needs to be passed to the

function handling errors and exceptions, as it can't read the right
value of the global obi_errno (Cython configuration problem?)
This commit is contained in:
Celine Mercier
2017-07-07 15:36:11 +02:00
parent 740d021276
commit a718081ebd
9 changed files with 188 additions and 144 deletions

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -33,10 +34,11 @@ cdef class Column_bool(Column):
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
global obi_errno
cdef obibool_t value cdef obibool_t value
cdef object result cdef object result
value = obi_get_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIBool_NA : if value == OBIBool_NA :
result = None result = None
else : else :
@ -45,15 +47,17 @@ cdef class Column_bool(Column):
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
global obi_errno
if value is None : if value is None :
value = OBIBool_NA value = OBIBool_NA
if obi_set_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, <obibool_t> value) < 0 : if obi_set_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, <obibool_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_bool(Column_multi_elts): cdef class Column_multi_elts_bool(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id) : cpdef object get_item(self, index_t line_nb, object elt_id) :
global obi_errno
cdef obibool_t value cdef obibool_t value
cdef object result cdef object result
cdef bytes elt_name cdef bytes elt_name
@ -62,7 +66,7 @@ cdef class Column_multi_elts_bool(Column_multi_elts):
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_bool_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_bool_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIBool_NA : if value == OBIBool_NA :
result = None result = None
else : else :
@ -70,6 +74,7 @@ cdef class Column_multi_elts_bool(Column_multi_elts):
return result return result
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
global obi_errno
cdef obibool_t value cdef obibool_t value
cdef object value_in_result cdef object value_in_result
cdef dict result cdef dict result
@ -79,7 +84,7 @@ cdef class Column_multi_elts_bool(Column_multi_elts):
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIBool_NA : if value == OBIBool_NA :
value_in_result = None value_in_result = None
else : else :
@ -92,16 +97,17 @@ cdef class Column_multi_elts_bool(Column_multi_elts):
return result return result
cpdef set_item(self, index_t line_nb, object elt_id, object value) : cpdef set_item(self, index_t line_nb, object elt_id, object value) :
global obi_errno
cdef bytes elt_name cdef bytes elt_name
if value is None : if value is None :
value = OBIBool_NA value = OBIBool_NA
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <obibool_t> value) < 0 : if obi_set_bool_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <obibool_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_bool_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <obibool_t> value) < 0 : if obi_set_bool_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <obibool_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
def register_class() : def register_class() :

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -32,10 +33,11 @@ cdef class Column_char(Column):
comments=comments) comments=comments)
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
global obi_errno
cdef obichar_t value cdef obichar_t value
cdef object result cdef object result
value = obi_get_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIChar_NA : if value == OBIChar_NA :
result = None result = None
else : else :
@ -43,18 +45,20 @@ cdef class Column_char(Column):
return result return result
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
global obi_errno
cdef obichar_t value_b cdef obichar_t value_b
if value is None : if value is None :
value_b = OBIChar_NA value_b = OBIChar_NA
else : else :
value_b = <obichar_t> tobytes(value)[0] value_b = <obichar_t> tobytes(value)[0]
if obi_set_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0: if obi_set_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_char(Column_multi_elts): cdef class Column_multi_elts_char(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id) : cpdef object get_item(self, index_t line_nb, object elt_id) :
global obi_errno
cdef obichar_t value cdef obichar_t value
cdef object result cdef object result
cdef bytes elt_name cdef bytes elt_name
@ -63,7 +67,7 @@ cdef class Column_multi_elts_char(Column_multi_elts):
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIChar_NA : if value == OBIChar_NA :
result = None result = None
else : else :
@ -71,16 +75,17 @@ cdef class Column_multi_elts_char(Column_multi_elts):
return result return result
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
cdef obichar_t value global obi_errno
cdef object value_in_result cdef obichar_t value
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef bint all_NA cdef index_t i
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIChar_NA : if value == OBIChar_NA :
value_in_result = None value_in_result = None
else : else :
@ -93,19 +98,20 @@ cdef class Column_multi_elts_char(Column_multi_elts):
return result return result
cpdef set_item(self, index_t line_nb, object elt_id, object value) : cpdef set_item(self, index_t line_nb, object elt_id, object value) :
cdef bytes elt_name global obi_errno
cdef obichar_t value_b cdef bytes elt_name
cdef obichar_t value_b
if value is None : if value is None :
value_b = OBIChar_NA value_b = OBIChar_NA
else : else :
value_b = <obichar_t> tobytes(value)[0] value_b = <obichar_t> tobytes(value)[0]
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b) < 0 : if obi_set_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b) < 0 : if obi_set_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
def register_class(): def register_class():

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -31,38 +32,39 @@ cdef class Column_float(Column):
elements_names=elements_names, elements_names=elements_names,
comments=comments) comments=comments)
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
cdef obifloat_t value global obi_errno
cdef object result cdef obifloat_t value
cdef object result
value = obi_get_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIFloat_NA : if value == OBIFloat_NA :
result = None result = None
else : else :
result = <double> value result = <double> value
return result return result
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
global obi_errno
if value is None : if value is None :
value = OBIFloat_NA value = OBIFloat_NA
if obi_set_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, <obifloat_t> value) < 0: if obi_set_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, <obifloat_t> value) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_float(Column_multi_elts): cdef class Column_multi_elts_float(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id) : cpdef object get_item(self, index_t line_nb, object elt_id) :
cdef obifloat_t value global obi_errno
cdef object result cdef obifloat_t value
cdef bytes elt_name cdef object result
cdef bytes elt_name
if type(elt_id) == int : if type(elt_id) == int :
value = obi_get_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id) value = obi_get_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id)
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_float_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_float_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIFloat_NA : if value == OBIFloat_NA :
result = None result = None
else : else :
@ -70,16 +72,17 @@ cdef class Column_multi_elts_float(Column_multi_elts):
return result return result
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
cdef obifloat_t value global obi_errno
cdef object value_in_result cdef obifloat_t value
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef bint all_NA cdef index_t i
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIFloat_NA : if value == OBIFloat_NA :
value_in_result = None value_in_result = None
else : else :
@ -92,16 +95,17 @@ cdef class Column_multi_elts_float(Column_multi_elts):
return result return result
cpdef set_item(self, index_t line_nb, object elt_id, object value) : cpdef set_item(self, index_t line_nb, object elt_id, object value) :
cdef bytes elt_name global obi_errno
cdef bytes elt_name
if value is None : if value is None :
value = OBIFloat_NA value = OBIFloat_NA
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <obifloat_t> value) < 0 : if obi_set_float_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <obifloat_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_float_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <obifloat_t> value) < 0 : if obi_set_float_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <obifloat_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
def register_class(): def register_class():

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -34,10 +35,11 @@ cdef class Column_int(Column):
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
cdef obiint_t value global obi_errno
cdef object result cdef obiint_t value
cdef object result
value = obi_get_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIInt_NA : if value == OBIInt_NA :
result = None result = None
else : else :
@ -46,24 +48,26 @@ cdef class Column_int(Column):
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
global obi_errno
if value is None : if value is None :
value = OBIInt_NA value = OBIInt_NA
if obi_set_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, <obiint_t> value) < 0: if obi_set_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, <obiint_t> value) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_int(Column_multi_elts): cdef class Column_multi_elts_int(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id) : cpdef object get_item(self, index_t line_nb, object elt_id) :
cdef obiint_t value global obi_errno
cdef object result cdef obiint_t value
cdef bytes elt_name cdef object result
cdef bytes elt_name
if type(elt_id) == int : if type(elt_id) == int :
value = obi_get_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id) value = obi_get_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id)
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIInt_NA : if value == OBIInt_NA :
result = None result = None
else : else :
@ -71,16 +75,17 @@ cdef class Column_multi_elts_int(Column_multi_elts):
return result return result
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
cdef obiint_t value global obi_errno
cdef object value_in_result cdef obiint_t value
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef bint all_NA cdef index_t i
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIInt_NA : if value == OBIInt_NA :
value_in_result = None value_in_result = None
else : else :
@ -93,16 +98,17 @@ cdef class Column_multi_elts_int(Column_multi_elts):
return result return result
cpdef set_item(self, index_t line_nb, object elt_id, object value) : cpdef set_item(self, index_t line_nb, object elt_id, object value) :
cdef bytes elt_name global obi_errno
cdef bytes elt_name
if value is None : if value is None :
value = OBIInt_NA value = OBIInt_NA
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <obiint_t> value) < 0 : if obi_set_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <obiint_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <obiint_t> value) < 0 : if obi_set_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <obiint_t> value) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
def register_class(): def register_class():

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -40,11 +41,12 @@ cdef class Column_qual(Column):
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
cdef const uint8_t* value global obi_errno
cdef int value_length cdef const uint8_t* value
cdef object result cdef int value_length
cdef object result
value = obi_get_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, &value_length) value = obi_get_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, &value_length)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIQual_int_NA : if value == OBIQual_int_NA :
result = None result = None
else : else :
@ -55,11 +57,12 @@ cdef class Column_qual(Column):
cpdef object get_str_line(self, index_t line_nb): cpdef object get_str_line(self, index_t line_nb):
global obi_errno
cdef char* value cdef char* value
cdef object result cdef object result
cdef int i cdef int i
value = obi_get_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIQual_char_NA : if value == OBIQual_char_NA :
result = None result = None
else : # TODO discuss else : # TODO discuss
@ -69,45 +72,48 @@ cdef class Column_qual(Column):
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
cdef uint8_t* value_b global obi_errno
cdef int value_length cdef uint8_t* value_b
cdef int value_length
if value is None : if value is None :
if obi_set_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, OBIQual_int_NA, 0) < 0: if obi_set_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, OBIQual_int_NA, 0) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
else : else :
value_length = len(value) value_length = len(value)
value_b = <uint8_t*> malloc(value_length * sizeof(uint8_t)) value_b = <uint8_t*> malloc(value_length * sizeof(uint8_t))
for i in range(value_length) : for i in range(value_length) :
value_b[i] = <uint8_t>value[i] value_b[i] = <uint8_t>value[i]
if obi_set_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b, value_length) < 0: if obi_set_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b, value_length) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
free(value_b) free(value_b)
cpdef set_str_line(self, index_t line_nb, object value): cpdef set_str_line(self, index_t line_nb, object value):
cdef bytes value_b global obi_errno
cdef bytes value_b
if value is None : if value is None :
if obi_set_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, OBIQual_char_NA) < 0: if obi_set_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, OBIQual_char_NA) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
else : else :
value_b = tobytes(value) value_b = tobytes(value)
if obi_set_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0: if obi_set_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_qual(Column_multi_elts): cdef class Column_multi_elts_qual(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id): cpdef object get_item(self, index_t line_nb, object elt_id):
cdef const uint8_t* value global obi_errno
cdef int value_length cdef const uint8_t* value
cdef object result cdef int value_length
cdef int i cdef object result
cdef int i
if type(elt_id) == int : if type(elt_id) == int :
value = obi_get_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, &value_length) value = obi_get_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, &value_length)
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_qual_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, &value_length) value = obi_get_qual_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, &value_length)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIQual_int_NA : if value == OBIQual_int_NA :
result = None result = None
else : else :
@ -118,14 +124,15 @@ cdef class Column_multi_elts_qual(Column_multi_elts):
cpdef object get_str_item(self, index_t line_nb, object elt_id): cpdef object get_str_item(self, index_t line_nb, object elt_id):
cdef char* value global obi_errno
cdef object result cdef char* value
cdef object result
if type(elt_id) == int : if type(elt_id) == int :
value = obi_get_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id) value = obi_get_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id)
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_qual_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_qual_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIQual_char_NA : if value == OBIQual_char_NA :
result = None result = None
else : else :
@ -135,18 +142,19 @@ cdef class Column_multi_elts_qual(Column_multi_elts):
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
cdef const uint8_t* value global obi_errno
cdef int value_length cdef const uint8_t* value
cdef object value_in_result cdef int value_length
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef int j cdef index_t i
cdef bint all_NA cdef int j
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i, &value_length) value = obi_get_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i, &value_length)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIQual_int_NA : if value == OBIQual_int_NA :
value_in_result = None value_in_result = None
else : else :
@ -162,16 +170,17 @@ cdef class Column_multi_elts_qual(Column_multi_elts):
cpdef object get_str_line(self, index_t line_nb) : cpdef object get_str_line(self, index_t line_nb) :
cdef char* value global obi_errno
cdef object value_in_result cdef char* value
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef bint all_NA cdef index_t i
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIQual_char_NA : if value == OBIQual_char_NA :
value_in_result = None value_in_result = None
else : else :
@ -186,9 +195,10 @@ cdef class Column_multi_elts_qual(Column_multi_elts):
cpdef set_item(self, index_t line_nb, object elt_id, object value): cpdef set_item(self, index_t line_nb, object elt_id, object value):
cdef uint8_t* value_b global obi_errno
cdef int value_length cdef uint8_t* value_b
cdef bytes elt_name cdef int value_length
cdef bytes elt_name
if value is None : if value is None :
value_b = OBIQual_int_NA value_b = OBIQual_int_NA
@ -201,19 +211,20 @@ cdef class Column_multi_elts_qual(Column_multi_elts):
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b, value_length) < 0 : if obi_set_qual_int_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b, value_length) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_qual_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b, value_length) < 0: if obi_set_qual_int_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b, value_length) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
if value is not None : if value is not None :
free(value_b) free(value_b)
cpdef set_str_item(self, index_t line_nb, object elt_id, object value): cpdef set_str_item(self, index_t line_nb, object elt_id, object value):
cdef bytes value_b global obi_errno
cdef bytes elt_name cdef bytes value_b
cdef bytes elt_name
if value is None : if value is None :
value_b = OBIQual_char_NA value_b = OBIQual_char_NA
@ -222,11 +233,11 @@ cdef class Column_multi_elts_qual(Column_multi_elts):
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b) < 0 : if obi_set_qual_char_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b) < 0 :
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_qual_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b) < 0: if obi_set_qual_char_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -34,10 +35,11 @@ cdef class Column_seq(Column):
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
cdef char* value global obi_errno
cdef object result cdef char* value
cdef object result
value = obi_get_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBISeq_NA : if value == OBISeq_NA :
result = None result = None
else : # TODO else : # TODO
@ -49,8 +51,9 @@ cdef class Column_seq(Column):
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
cdef char* value_b global obi_errno
cdef bytes value_bytes cdef char* value_b
cdef bytes value_bytes
if value is None : if value is None :
value_b = <char*>OBISeq_NA value_b = <char*>OBISeq_NA
@ -59,20 +62,21 @@ cdef class Column_seq(Column):
value_b = <char*>value_bytes value_b = <char*>value_bytes
if obi_set_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0: if obi_set_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_seq(Column_multi_elts): cdef class Column_multi_elts_seq(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id) : cpdef object get_item(self, index_t line_nb, object elt_id) :
cdef char* value global obi_errno
cdef object result cdef char* value
cdef object result
if type(elt_id) == int : if type(elt_id) == int :
value = obi_get_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id) value = obi_get_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id)
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_seq_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_seq_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBISeq_NA : if value == OBISeq_NA :
result = None result = None
else : else :
@ -84,16 +88,17 @@ cdef class Column_multi_elts_seq(Column_multi_elts):
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
cdef char* value global obi_errno
cdef object value_in_result cdef char* value
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef bint all_NA cdef index_t i
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBISeq_NA : if value == OBISeq_NA :
value_in_result = None value_in_result = None
else : else :
@ -110,10 +115,10 @@ cdef class Column_multi_elts_seq(Column_multi_elts):
cpdef set_item(self, index_t line_nb, object elt_id, object value): cpdef set_item(self, index_t line_nb, object elt_id, object value):
global obi_errno
cdef bytes elt_name cdef bytes elt_name
cdef char* value_b cdef char* value_b
cdef bytes value_bytes cdef bytes value_bytes
if value is None : if value is None :
value_b = <char*>OBISeq_NA value_b = <char*>OBISeq_NA
@ -123,12 +128,12 @@ cdef class Column_multi_elts_seq(Column_multi_elts):
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b) < 0: if obi_set_seq_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_seq_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b) < 0: if obi_set_seq_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
def register_class(): def register_class():

View File

@ -1,5 +1,6 @@
#cython: language_level=3 #cython: language_level=3
from obitools3.dms.capi.obierrno cimport obi_errno
from ..column cimport register_column_class from ..column cimport register_column_class
@ -32,10 +33,11 @@ cdef class Column_str(Column):
cpdef object get_line(self, index_t line_nb): cpdef object get_line(self, index_t line_nb):
cdef const_char_p value global obi_errno
cdef object result cdef const_char_p value
cdef object result
value = obi_get_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0) value = obi_get_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0)
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem getting a value from a column")
if value == OBIStr_NA : if value == OBIStr_NA :
result = None result = None
else : else :
@ -44,8 +46,9 @@ cdef class Column_str(Column):
cpdef set_line(self, index_t line_nb, object value): cpdef set_line(self, index_t line_nb, object value):
cdef char* value_b global obi_errno
cdef bytes value_bytes cdef char* value_b
cdef bytes value_bytes
if value is None : if value is None :
value_b = <char*>OBIStr_NA value_b = <char*>OBIStr_NA
@ -54,20 +57,21 @@ cdef class Column_str(Column):
value_b = <char*>value_bytes value_b = <char*>value_bytes
if obi_set_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0: if obi_set_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, 0, value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=None, error_message="Problem setting a value in a column")
cdef class Column_multi_elts_str(Column_multi_elts): cdef class Column_multi_elts_str(Column_multi_elts):
cpdef object get_item(self, index_t line_nb, object elt_id) : cpdef object get_item(self, index_t line_nb, object elt_id) :
cdef const_char_p value global obi_errno
cdef object result cdef const_char_p value
cdef object result
if type(elt_id) == int : if type(elt_id) == int :
value = obi_get_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id) value = obi_get_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id)
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
value = obi_get_str_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name) value = obi_get_str_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name)
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem getting a value from a column")
if value == OBIStr_NA : if value == OBIStr_NA :
result = None result = None
else : else :
@ -76,16 +80,17 @@ cdef class Column_multi_elts_str(Column_multi_elts):
cpdef object get_line(self, index_t line_nb) : cpdef object get_line(self, index_t line_nb) :
cdef const_char_p value global obi_errno
cdef object value_in_result cdef const_char_p value
cdef dict result cdef object value_in_result
cdef index_t i cdef dict result
cdef bint all_NA cdef index_t i
cdef bint all_NA
result = {} result = {}
all_NA = True all_NA = True
for i in range(self.nb_elements_per_line) : for i in range(self.nb_elements_per_line) :
value = obi_get_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i) value = obi_get_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, i)
obi_errno_to_exception(line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=i, error_message="Problem getting a value from a column")
if value == OBIStr_NA : if value == OBIStr_NA :
value_in_result = None value_in_result = None
else : else :
@ -99,9 +104,10 @@ cdef class Column_multi_elts_str(Column_multi_elts):
cpdef set_item(self, index_t line_nb, object elt_id, object value): cpdef set_item(self, index_t line_nb, object elt_id, object value):
cdef bytes elt_name global obi_errno
cdef char* value_b cdef bytes elt_name
cdef bytes value_bytes cdef char* value_b
cdef bytes value_bytes
if value is None : if value is None :
value_b = <char*>OBIStr_NA value_b = <char*>OBIStr_NA
@ -111,11 +117,11 @@ cdef class Column_multi_elts_str(Column_multi_elts):
if type(elt_id) == int : if type(elt_id) == int :
if obi_set_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <char*>value_b) < 0: if obi_set_str_with_elt_idx_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_id, <char*>value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
else : else :
elt_name = tobytes(elt_id) elt_name = tobytes(elt_id)
if obi_set_str_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <char*>value_b) < 0: if obi_set_str_with_elt_name_and_col_p_in_view(self._view.pointer(), self.pointer(), line_nb, elt_name, <char*>value_b) < 0:
obi_errno_to_exception(line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column") obi_errno_to_exception(obi_errno, line_nb=line_nb, elt_id=elt_id, error_message="Problem setting a value in a column")
def register_class(): def register_class():

View File

@ -2,7 +2,7 @@
from obitools3.dms.capi.obitypes cimport obitype_t, index_t from obitools3.dms.capi.obitypes cimport obitype_t, index_t
cdef obi_errno_to_exception(index_t line_nb=*, object elt_id=*, str error_message=*) cdef obi_errno_to_exception(int obi_errno, index_t line_nb=*, object elt_id=*, str error_message=*)
cdef bytes str2bytes(str string) cdef bytes str2bytes(str string)
cdef str bytes2str(bytes string) cdef str bytes2str(bytes string)

View File

@ -11,12 +11,12 @@ from obitools3.dms.capi.obitypes cimport is_a_DNA_seq, \
OBI_STR, \ OBI_STR, \
index_t index_t
from obitools3.dms.capi.obierrno cimport obi_errno, \ from obitools3.dms.capi.obierrno cimport OBI_LINE_IDX_ERROR, \
OBI_LINE_IDX_ERROR, \
OBI_ELT_IDX_ERROR OBI_ELT_IDX_ERROR
#obi_errno
cdef obi_errno_to_exception(index_t line_nb=-1, object elt_id=None, str error_message=None) : cdef obi_errno_to_exception(int obi_errno, index_t line_nb=-1, object elt_id=None, str error_message=None) :
global obi_errno global obi_errno
if obi_errno > 0 : if obi_errno > 0 :
if obi_errno == OBI_LINE_IDX_ERROR : if obi_errno == OBI_LINE_IDX_ERROR :