From b45c2ee653fab52d6de307365635bcbe9cf6457c Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Wed, 13 Mar 2019 11:13:55 +0100 Subject: [PATCH] Cython API: cleaner column rewriting API --- python/obitools3/commands/import.pyx | 3 ++- python/obitools3/dms/view/view.pxd | 3 ++- python/obitools3/dms/view/view.pyx | 8 ++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/python/obitools3/commands/import.pyx b/python/obitools3/commands/import.pyx index 2798d77..418a9a9 100755 --- a/python/obitools3/commands/import.pyx +++ b/python/obitools3/commands/import.pyx @@ -237,7 +237,8 @@ def run(config): dcols[tag] = (view.rewrite_column_with_diff_attributes(old_column.name, new_data_type=new_type, new_nb_elements_per_line=new_nb_elements_per_line, - new_elements_names=new_elements_names), + new_elements_names=new_elements_names, + rewrite_last_line=False), value_obitype) # Update the dictionary: diff --git a/python/obitools3/dms/view/view.pxd b/python/obitools3/dms/view/view.pxd index f1f2357..d83575b 100755 --- a/python/obitools3/dms/view/view.pxd +++ b/python/obitools3/dms/view/view.pxd @@ -32,7 +32,8 @@ cdef class View(OBIWrapper): object column_name, obitype_t new_data_type=*, index_t new_nb_elements_per_line=*, - list new_elements_names=*) + list new_elements_names=*, + bint rewrite_last_line=*) cpdef Line_selection new_selection(self, list lines=*) diff --git a/python/obitools3/dms/view/view.pyx b/python/obitools3/dms/view/view.pyx index 91fc8b3..5e1c720 100755 --- a/python/obitools3/dms/view/view.pyx +++ b/python/obitools3/dms/view/view.pyx @@ -267,13 +267,17 @@ cdef class View(OBIWrapper) : object column_name, obitype_t new_data_type=OBI_VOID, index_t new_nb_elements_per_line=0, - list new_elements_names=None) : + list new_elements_names=None, + bint rewrite_last_line=False) : cdef Column old_column cdef Column new_column - cdef index_t length = len(self) - 1 + cdef index_t length = len(self) # TODO because last line triggered error that triggered rewriting, but needs a cleaner way, or at least good documentation cdef column_name_b = tobytes(column_name) + if rewrite_last_line is False: + length-=1 + if not self.active() : raise OBIDeactivatedInstanceError()