Skip to content
This repository was archived by the owner on Feb 2, 2024. It is now read-only.

Commit b674bb1

Browse files
SAT-2966 - SDC: test_series_operator_lt_str fails on Linux 3.6 (#884)
1 parent d1df408 commit b674bb1

File tree

4 files changed

+306
-270
lines changed

4 files changed

+306
-270
lines changed

sdc/functions/numpy_like.py

Lines changed: 46 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -528,26 +528,61 @@ def sdc_fillna_overload(self, inplace=False, value=None):
528528

529529
dtype = self.dtype
530530
isnan = get_isnan(dtype)
531+
531532
if (
532533
(isinstance(inplace, types.Literal) and inplace.literal_value == True) or # noqa
533534
(isinstance(inplace, bool) and inplace == True) # noqa
534535
):
536+
537+
def sdc_fillna_inplace_noop(self, inplace=False, value=None):
538+
return None
539+
540+
if isinstance(value, (types.NoneType, types.Omitted)) or value is None:
541+
return sdc_fillna_inplace_noop
542+
535543
if isinstance(dtype, (types.Integer, types.Boolean)):
536-
def sdc_fillna_inplace_int_impl(self, inplace=False, value=None):
544+
return sdc_fillna_inplace_noop
545+
546+
if isinstance(dtype, types.Float):
547+
def sdc_fillna_inplace_float_impl(self, inplace=False, value=None):
548+
_value = np.nan if value is None else value
549+
length = len(self)
550+
for i in prange(length):
551+
if isnan(self[i]):
552+
self[i] = _value
537553
return None
538554

539-
return sdc_fillna_inplace_int_impl
555+
return sdc_fillna_inplace_float_impl
540556

541-
def sdc_fillna_inplace_float_impl(self, inplace=False, value=None):
542-
length = len(self)
543-
for i in prange(length):
544-
if isnan(self[i]):
545-
self[i] = value
557+
if isinstance(dtype, types.UnicodeType):
558+
# TO-DO: not supported, since no generic setitem for StringArray
546559
return None
547560

548-
return sdc_fillna_inplace_float_impl
549-
550561
else:
562+
563+
def sdc_fillna_noop(self, inplace=False, value=None):
564+
return copy(self)
565+
566+
if isinstance(value, (types.NoneType, types.Omitted)) or value is None:
567+
return sdc_fillna_noop
568+
569+
if isinstance(dtype, (types.Integer, types.Boolean)):
570+
return sdc_fillna_noop
571+
572+
if isinstance(dtype, types.Float):
573+
def sdc_fillna_impl(self, inplace=False, value=None):
574+
_value = np.nan if value is None else value
575+
length = len(self)
576+
filled_data = numpy.empty(length, dtype=dtype)
577+
for i in prange(length):
578+
if isnan(self[i]):
579+
filled_data[i] = _value
580+
else:
581+
filled_data[i] = self[i]
582+
return filled_data
583+
584+
return sdc_fillna_impl
585+
551586
if isinstance(self.dtype, types.UnicodeType):
552587
def sdc_fillna_str_impl(self, inplace=False, value=None):
553588
n = len(self)
@@ -556,9 +591,9 @@ def sdc_fillna_str_impl(self, inplace=False, value=None):
556591
for i in prange(n):
557592
s = self[i]
558593
if sdc.hiframes.api.isna(self, i):
559-
num_chars += len(value)
594+
num_chars += get_utf8_size(value)
560595
else:
561-
num_chars += len(s)
596+
num_chars += get_utf8_size(s)
562597

563598
filled_data = pre_alloc_string_array(n, num_chars)
564599
for i in prange(n):
@@ -570,24 +605,6 @@ def sdc_fillna_str_impl(self, inplace=False, value=None):
570605

571606
return sdc_fillna_str_impl
572607

573-
if isinstance(dtype, (types.Integer, types.Boolean)):
574-
def sdc_fillna_int_impl(self, inplace=False, value=None):
575-
return copy(self)
576-
577-
return sdc_fillna_int_impl
578-
579-
def sdc_fillna_impl(self, inplace=False, value=None):
580-
length = len(self)
581-
filled_data = numpy.empty(length, dtype=dtype)
582-
for i in prange(length):
583-
if isnan(self[i]):
584-
filled_data[i] = value
585-
else:
586-
filled_data[i] = self[i]
587-
return filled_data
588-
589-
return sdc_fillna_impl
590-
591608

592609
def nanmin(a):
593610
pass

0 commit comments

Comments
 (0)