Cython API: fixed problems with Column class
This commit is contained in:
@ -63,24 +63,25 @@ cdef class Column(OBIWrapper) :
|
|||||||
object column_name,
|
object column_name,
|
||||||
obitype_t data_type,
|
obitype_t data_type,
|
||||||
index_t nb_elements_per_line=1,
|
index_t nb_elements_per_line=1,
|
||||||
object elements_names=None,
|
list elements_names=None,
|
||||||
object comments=b""):
|
object comments=b"",
|
||||||
|
object alias=b""):
|
||||||
|
# TODO indexer_name?
|
||||||
|
|
||||||
cdef bytes column_name_b = tobytes(column_name)
|
cdef bytes column_name_b = tobytes(column_name)
|
||||||
cdef bytes comments_b
|
cdef bytes alias_b = tobytes(alias)
|
||||||
|
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()
|
||||||
|
|
||||||
if comments is not None:
|
if alias_b == b"" :
|
||||||
comments_b = tobytes(comments)
|
alias_b = column_name_b
|
||||||
else:
|
|
||||||
comments_b = b''
|
|
||||||
|
|
||||||
if elements_names is not None:
|
if elements_names is not None:
|
||||||
elements_names_b = b''.join([tobytes(x) for x in elements_names])
|
elements_names_b = b';'.join([tobytes(x) for x in elements_names])
|
||||||
elements_names_p = elements_names_b
|
elements_names_p = elements_names_b
|
||||||
else:
|
else:
|
||||||
elements_names_p = NULL
|
elements_names_p = NULL
|
||||||
@ -88,7 +89,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
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,
|
||||||
alias = NULL,
|
alias = alias_b,
|
||||||
data_type = <obitype_t>data_type,
|
data_type = <obitype_t>data_type,
|
||||||
nb_lines = len(view),
|
nb_lines = len(view),
|
||||||
nb_elements_per_line = nb_elements_per_line,
|
nb_elements_per_line = nb_elements_per_line,
|
||||||
@ -101,7 +102,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
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, column_name)
|
return Column.open(view, alias_b)
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -130,6 +131,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
column_type = column_p.header.returned_data_type
|
column_type = column_p.header.returned_data_type
|
||||||
column_class = Column.get_column_class(column_type, (column_p.header.nb_elements_per_line > 1))
|
column_class = Column.get_column_class(column_type, (column_p.header.nb_elements_per_line > 1))
|
||||||
column = OBIWrapper.new(column_class, column_pp)
|
column = OBIWrapper.new(column_class, column_pp)
|
||||||
|
|
||||||
column._view = view
|
column._view = view
|
||||||
column._alias = column_name_b
|
column._alias = column_name_b
|
||||||
view.register(column)
|
view.register(column)
|
||||||
@ -240,7 +242,7 @@ cdef class Column(OBIWrapper) :
|
|||||||
return self._alias
|
return self._alias
|
||||||
@name.setter
|
@name.setter
|
||||||
def name(self, new_alias): # @DuplicatedSignature
|
def name(self, new_alias): # @DuplicatedSignature
|
||||||
self._view.change_column_alias(self._alias, new_alias)
|
self._view.rename_column(self._alias, new_alias)
|
||||||
|
|
||||||
# elements_names property getter
|
# elements_names property getter
|
||||||
@property
|
@property
|
||||||
|
Reference in New Issue
Block a user