Path: blob/main/py-polars/tests/unit/operations/namespaces/string/test_concat.py
6940 views
from datetime import datetime12import pytest34import polars as pl5from polars.testing import assert_series_equal678def test_str_join() -> None:9s = pl.Series(["1", None, "2", None])10# propagate null11assert_series_equal(12s.str.join("-", ignore_nulls=False), pl.Series([None], dtype=pl.String)13)14# ignore null15assert_series_equal(s.str.join(), pl.Series(["12"]))1617# str None/null is ok18s = pl.Series(["1", "None", "2", "null"])19assert_series_equal(20s.str.join("-", ignore_nulls=False), pl.Series(["1-None-2-null"])21)22assert_series_equal(s.str.join("-"), pl.Series(["1-None-2-null"]))232425def test_str_join2() -> None:26df = pl.DataFrame({"foo": [1, None, 2, None]})2728out = df.select(pl.col("foo").str.join(ignore_nulls=False))29assert out.item() is None3031out = df.select(pl.col("foo").str.join())32assert out.item() == "12"333435def test_str_join_all_null() -> None:36s = pl.Series([None, None, None], dtype=pl.String)37assert_series_equal(38s.str.join(ignore_nulls=False), pl.Series([None], dtype=pl.String)39)40assert_series_equal(s.str.join(ignore_nulls=True), pl.Series([""]))414243def test_str_join_empty_list() -> None:44s = pl.Series([], dtype=pl.String)45assert_series_equal(s.str.join(ignore_nulls=False), pl.Series([""]))46assert_series_equal(s.str.join(ignore_nulls=True), pl.Series([""]))474849def test_str_join_empty_list2() -> None:50s = pl.Series([], dtype=pl.String)51df = pl.DataFrame({"foo": s})52result = df.select(pl.col("foo").str.join()).item()53expected = ""54assert result == expected555657def test_str_join_empty_list_agg_context() -> None:58df = pl.DataFrame(data={"i": [1], "v": [None]}, schema_overrides={"v": pl.String})59result = df.group_by("i").agg(pl.col("v").drop_nulls().str.join())["v"].item()60expected = ""61assert result == expected626364def test_str_join_datetime() -> None:65df = pl.DataFrame({"d": [datetime(2020, 1, 1), None, datetime(2022, 1, 1)]})66out = df.select(pl.col("d").str.join("|", ignore_nulls=True))67assert out.item() == "2020-01-01 00:00:00.000000|2022-01-01 00:00:00.000000"68out = df.select(pl.col("d").str.join("|", ignore_nulls=False))69assert out.item() is None707172def test_str_concat_deprecated() -> None:73s = pl.Series(["1", None, "2", None])74with pytest.deprecated_call():75result = s.str.concat()76expected = pl.Series(["1-2"])77assert_series_equal(result, expected)787980