Cython API: fixed problems with Column class
This commit is contained in:
@ -63,24 +63,25 @@ cdef class Column(OBIWrapper) :
|
||||
object column_name,
|
||||
obitype_t data_type,
|
||||
index_t nb_elements_per_line=1,
|
||||
object elements_names=None,
|
||||
object comments=b""):
|
||||
list elements_names=None,
|
||||
object comments=b"",
|
||||
object alias=b""):
|
||||
# TODO indexer_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 char* elements_names_p
|
||||
|
||||
if not view.active() :
|
||||
raise OBIObjectClosedInstance()
|
||||
|
||||
if comments is not None:
|
||||
comments_b = tobytes(comments)
|
||||
else:
|
||||
comments_b = b''
|
||||
if alias_b == b"" :
|
||||
alias_b = column_name_b
|
||||
|
||||
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
|
||||
else:
|
||||
elements_names_p = NULL
|
||||
@ -88,7 +89,7 @@ cdef class Column(OBIWrapper) :
|
||||
if (obi_view_add_column(view = view.pointer(),
|
||||
column_name = column_name_b,
|
||||
version_number = -1,
|
||||
alias = NULL,
|
||||
alias = alias_b,
|
||||
data_type = <obitype_t>data_type,
|
||||
nb_lines = len(view),
|
||||
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),
|
||||
bytes2str(view.name)))
|
||||
|
||||
return Column.open(view, column_name)
|
||||
return Column.open(view, alias_b)
|
||||
|
||||
|
||||
@staticmethod
|
||||
@ -130,6 +131,7 @@ cdef class Column(OBIWrapper) :
|
||||
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 = OBIWrapper.new(column_class, column_pp)
|
||||
|
||||
column._view = view
|
||||
column._alias = column_name_b
|
||||
view.register(column)
|
||||
@ -240,7 +242,7 @@ cdef class Column(OBIWrapper) :
|
||||
return self._alias
|
||||
@name.setter
|
||||
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
|
||||
@property
|
||||
|
Reference in New Issue
Block a user