diff --git a/python/obitools3/obidms/_obidmscolumn_char.pxd b/python/obitools3/obidms/_obidmscolumn_char.pxd index d85d4ac..51c7051 100644 --- a/python/obitools3/obidms/_obidmscolumn_char.pxd +++ b/python/obitools3/obidms/_obidmscolumn_char.pxd @@ -16,10 +16,10 @@ cdef class OBIDMS_column_char_writable(OBIDMS_column_char): cdef class OBIDMS_column_char_multi_elts(OBIDMS_column_char): cpdef object get_item(self, index_t line_nb, str element_name) cpdef object get_line(self, index_t line_nb) - cpdef set_item(self, index_t line_nb, str element_name, bytes value) + cpdef set_item(self, index_t line_nb, str element_name, str value) cpdef set_line(self, index_t line_nb, object values) cdef class OBIDMS_column_char_multi_elts_writable(OBIDMS_column_char_multi_elts): - cpdef set_item(self, index_t line_nb, str element_name, bytes value) + cpdef set_item(self, index_t line_nb, str element_name, str value) cpdef set_line(self, index_t line_nb, object values) cpdef close(self) diff --git a/python/obitools3/obidms/_obidmscolumn_char.pyx b/python/obitools3/obidms/_obidmscolumn_char.pyx index 161968b..d8141eb 100644 --- a/python/obitools3/obidms/_obidmscolumn_char.pyx +++ b/python/obitools3/obidms/_obidmscolumn_char.pyx @@ -9,7 +9,7 @@ from .capi.obidmscolumn cimport obi_close_column,\ from .capi.obierrno cimport obi_errno from .capi.obitypes cimport OBIChar_NA -from obitools3.utils cimport str2bytes +from obitools3.utils cimport str2bytes, bytes2str cdef class OBIDMS_column_char(OBIDMS_column): @@ -23,7 +23,7 @@ cdef class OBIDMS_column_char(OBIDMS_column): if value == OBIChar_NA : result = None else : - result = value + result = bytes2str(value) return result cpdef set_line(self, index_t line_nb, object value): @@ -37,7 +37,7 @@ cdef class OBIDMS_column_char(OBIDMS_column): cdef class OBIDMS_column_char_writable(OBIDMS_column_char): cpdef set_line(self, index_t line_nb, object value): - if obi_column_set_obichar_with_elt_idx(self.pointer, line_nb, 0, value[0]) < 0: + if obi_column_set_obichar_with_elt_idx(self.pointer, line_nb, 0, str2bytes(value)[0]) < 0: raise Exception("Problem setting a value in a column") cpdef close(self): @@ -56,7 +56,7 @@ cdef class OBIDMS_column_char_multi_elts(OBIDMS_column_char): if value == OBIChar_NA : result = None else : - result = value + result = bytes2str(value) return result cpdef object get_line(self, index_t line_nb) : @@ -70,14 +70,14 @@ cdef class OBIDMS_column_char_multi_elts(OBIDMS_column_char): value = obi_column_get_obichar_with_elt_idx(self.pointer, line_nb, i) if obi_errno > 0 : raise IndexError(line_nb) - result[self.elements_names[i]] = value + result[self.elements_names[i]] = bytes2str(value) if all_NA and (value != OBIChar_NA) : all_NA = False if all_NA : result = None return result - cpdef set_item(self, index_t line_nb, str element_name, bytes value): + cpdef set_item(self, index_t line_nb, str element_name, str value): raise Exception("Column is read-only") cpdef set_line(self, index_t line_nb, object values): @@ -86,53 +86,17 @@ cdef class OBIDMS_column_char_multi_elts(OBIDMS_column_char): cdef class OBIDMS_column_char_multi_elts_writable(OBIDMS_column_char_multi_elts): - cpdef set_item(self, index_t line_nb, str element_name, bytes value): - if obi_column_set_obichar_with_elt_name(self.pointer, line_nb, str2bytes(element_name), value[0]) < 0: + cpdef set_item(self, index_t line_nb, str element_name, str value): + if obi_column_set_obichar_with_elt_name(self.pointer, line_nb, str2bytes(element_name), str2bytes(value)[0]) < 0: raise Exception("Problem setting a value in a column") cpdef set_line(self, index_t line_nb, object values): - cdef bytes value + cdef str value for element_name in values : - value = values[element_name] + value = values[element_name] self.set_item(line_nb, element_name, value) cpdef close(self): if obi_truncate_and_close_column(self.pointer) < 0 : raise Exception("Problem closing a column") - - - - -# cdef class OBIDMS_column_char(OBIDMS_column) : -# -# cpdef object get_item(self, index_t line_nb, str element_name): -# cdef char value -# cdef object result -# value = obi_column_get_obichar_with_elt_name(self.pointer, line_nb, str2bytes(element_name)) -# if obi_errno > 0 : -# raise IndexError(line_nb, element_name) -# if value == OBIChar_NA : -# result = None -# else : -# result = value -# return result -# -# cpdef set_item(self, index_t line_nb, str element_name, bytes value): -# raise Exception("Column is read-only") -# -# cpdef close(self): -# if obi_close_column(self.pointer) < 0 : -# raise Exception("Problem closing a column") -# -# -# cdef class OBIDMS_column_char_writable(OBIDMS_column_char) : -# -# cpdef set_item(self, index_t line_nb, str element_name, bytes value): -# if obi_column_set_obichar_with_elt_name(self.pointer, line_nb, str2bytes(element_name), value[0]) < 0: -# raise Exception("Problem setting a value in a column") -# -# cpdef close(self): -# if obi_truncate_and_close_column(self.pointer) < 0 : -# raise Exception("Problem closing a column") -# diff --git a/python/obitools3/unit_tests.py b/python/obitools3/unit_tests.py index cf93dd2..1be696e 100644 --- a/python/obitools3/unit_tests.py +++ b/python/obitools3/unit_tests.py @@ -59,7 +59,7 @@ def random_obivalue(data_type): return randint(0,1) elif data_type == "OBI_CHAR" : nucs = 'atgc' - return bytes(nucs[randint(0,3)], 'utf-8') + return nucs[randint(0,3)] elif data_type == "OBI_IDX" : length = randint(1,500) randoms = ''.join(choice(string.ascii_lowercase) for i in range(length))