Skip to content

Commit

Permalink
Merge pull request #11776 from rapidsai/branch-22.10
Browse files Browse the repository at this point in the history
[gpuCI] Forward-merge branch-22.10 to branch-22.12 [skip gpuci]
  • Loading branch information
GPUtester authored Sep 26, 2022
2 parents 7d40b30 + 11156cc commit a1cbb02
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 2 deletions.
7 changes: 6 additions & 1 deletion python/cudf/cudf/core/column/column.py
Original file line number Diff line number Diff line change
Expand Up @@ -518,7 +518,12 @@ def _scatter_by_slice(

self._check_scatter_key_length(num_keys, value)

if step == 1:
if step == 1 and not isinstance(
self, (cudf.core.column.StructColumn, cudf.core.column.ListColumn)
):
# NOTE: List & Struct dtypes aren't supported by both
# inplace & out-of-place fill. Hence we need to use scatter for
# these two types.
if isinstance(value, cudf.core.scalar.Scalar):
return self._fill(value, start, stop, inplace=True)
else:
Expand Down
6 changes: 5 additions & 1 deletion python/cudf/cudf/core/scalar.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,11 @@ def __call__(self, value, dtype=None):
# if an instance couldn't be found in the cache,
# construct it and add to cache:
obj = super().__call__(value, dtype=dtype)
self.__instances[cache_key] = obj
try:
self.__instances[cache_key] = obj
except TypeError:
# couldn't hash the arguments, don't cache:
return obj
if len(self.__instances) > self.__maxsize:
self.__instances.popitem(last=False)
return obj
Expand Down
55 changes: 55 additions & 0 deletions python/cudf/cudf/tests/test_setitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,3 +242,58 @@ def test_categorical_setitem_invalid():
"the categories first",
):
gs[0] = 5


def test_series_slice_setitem_list():
actual = cudf.Series([[[1, 2], [2, 3]], [[3, 4]], [[4, 5]], [[6, 7]]])
actual[slice(0, 3, 1)] = [[10, 11], [12, 23]]
expected = cudf.Series(
[
[[10, 11], [12, 23]],
[[10, 11], [12, 23]],
[[10, 11], [12, 23]],
[[6, 7]],
]
)
assert_eq(actual, expected)

actual = cudf.Series([[[1, 2], [2, 3]], [[3, 4]], [[4, 5]], [[6, 7]]])
actual[0:3] = cudf.Scalar([[10, 11], [12, 23]])

assert_eq(actual, expected)


def test_series_slice_setitem_struct():
actual = cudf.Series(
[
{"a": {"b": 10}, "b": 11},
{"a": {"b": 100}, "b": 5},
{"a": {"b": 50}, "b": 2},
{"a": {"b": 1000}, "b": 67},
{"a": {"b": 4000}, "b": 1090},
]
)
actual[slice(0, 3, 1)] = {"a": {"b": 5050}, "b": 101}
expected = cudf.Series(
[
{"a": {"b": 5050}, "b": 101},
{"a": {"b": 5050}, "b": 101},
{"a": {"b": 5050}, "b": 101},
{"a": {"b": 1000}, "b": 67},
{"a": {"b": 4000}, "b": 1090},
]
)
assert_eq(actual, expected)

actual = cudf.Series(
[
{"a": {"b": 10}, "b": 11},
{"a": {"b": 100}, "b": 5},
{"a": {"b": 50}, "b": 2},
{"a": {"b": 1000}, "b": 67},
{"a": {"b": 4000}, "b": 1090},
]
)
actual[0:3] = cudf.Scalar({"a": {"b": 5050}, "b": 101})

assert_eq(actual, expected)

0 comments on commit a1cbb02

Please sign in to comment.