Better handling of column lines with all values at NA
This commit is contained in:
@ -491,7 +491,7 @@ cdef class Column_multi_elts(Column) :
|
|||||||
cdef object values_iter
|
cdef object values_iter
|
||||||
if not self.active() :
|
if not self.active() :
|
||||||
raise OBIDeactivatedInstanceError()
|
raise OBIDeactivatedInstanceError()
|
||||||
if values is None or len(values) == 0 :
|
if values is None or len(values) == 0 or (isinstance(values, Column_line) and values.is_NA()):
|
||||||
for element_name in self._elements_names :
|
for element_name in self._elements_names :
|
||||||
self.set_item(line_nb, element_name, None)
|
self.set_item(line_nb, element_name, None)
|
||||||
else :
|
else :
|
||||||
@ -540,6 +540,10 @@ cdef class Column_line :
|
|||||||
return str(self._column.get_line(self._index))
|
return str(self._column.get_line(self._index))
|
||||||
|
|
||||||
|
|
||||||
|
def is_NA(self):
|
||||||
|
return self._column.get_line(self._index) is None
|
||||||
|
|
||||||
|
|
||||||
def __iter__(self) :
|
def __iter__(self) :
|
||||||
cdef list elements_names
|
cdef list elements_names
|
||||||
cdef bytes element_name
|
cdef bytes element_name
|
||||||
@ -569,6 +573,8 @@ cdef class Column_line :
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
cdef dict d
|
cdef dict d
|
||||||
cdef str s
|
cdef str s
|
||||||
|
if self.is_NA():
|
||||||
|
return ""
|
||||||
d = {}
|
d = {}
|
||||||
for k,v in self.items():
|
for k,v in self.items():
|
||||||
if type(v) == bytes:
|
if type(v) == bytes:
|
||||||
|
@ -56,9 +56,11 @@ cdef class HeaderFormat:
|
|||||||
for k in ktags:
|
for k in ktags:
|
||||||
if k in tags:
|
if k in tags:
|
||||||
value = data[k]
|
value = data[k]
|
||||||
if value is None:
|
if value is None or (isinstance(value, Column_line) and value.is_NA()):
|
||||||
if self.printNAKeys:
|
if self.printNAKeys:
|
||||||
value = self.NAString
|
value = self.NAString
|
||||||
|
else:
|
||||||
|
value = None
|
||||||
else:
|
else:
|
||||||
if type(value) == Column_line:
|
if type(value) == Column_line:
|
||||||
value = value.bytes()
|
value = value.bytes()
|
||||||
|
Reference in New Issue
Block a user