Path: blob/main/py-polars/tests/unit/operations/namespaces/test_name.py
8422 views
from __future__ import annotations12from collections import OrderedDict34import pytest56import polars as pl7from polars.exceptions import ComputeError8from polars.testing import assert_frame_equal91011def test_name_change_case() -> None:12df = pl.DataFrame(13schema={"ColX": pl.Int32, "ColY": pl.String},14).with_columns(15pl.all().name.to_uppercase(),16pl.all().name.to_lowercase(),17)18assert df.schema == OrderedDict(19[20("ColX", pl.Int32),21("ColY", pl.String),22("COLX", pl.Int32),23("COLY", pl.String),24("colx", pl.Int32),25("coly", pl.String),26]27)282930def test_name_prefix_suffix() -> None:31df = pl.DataFrame(32schema={"ColX": pl.Int32, "ColY": pl.String},33).with_columns(34pl.all().name.prefix("#"),35pl.all().name.suffix("!!"),36)37assert df.schema == OrderedDict(38[39("ColX", pl.Int32),40("ColY", pl.String),41("#ColX", pl.Int32),42("#ColY", pl.String),43("ColX!!", pl.Int32),44("ColY!!", pl.String),45]46)474849def test_name_replace() -> None:50df = pl.DataFrame(51schema={"n_foo": pl.Int32, "n_bar": pl.String, "misc?": pl.Float64},52)5354assert df.select(55pl.all().name.replace("^n_", "col_"),56).schema == {57"col_foo": pl.Int32,58"col_bar": pl.String,59"misc?": pl.Float64,60}6162assert df.select(63pl.all().name.replace("(a|e|i|o|u)", "#"),64).schema == {65"n_f##": pl.Int32,66"n_b#r": pl.String,67"m#sc?": pl.Float64,68}6970with pytest.raises(ComputeError, match="repetition operator missing expression"):71df.select(72pl.all().name.replace("?", "!!"),73)7475assert df.select(76pl.all().name.replace("?", "!!", literal=True),77).schema == {78"n_foo": pl.Int32,79"n_bar": pl.String,80"misc!!": pl.Float64,81}828384def test_name_update_all() -> None:85df = pl.DataFrame(86schema={87"col1": pl.UInt32,88"col2": pl.Float64,89"other": pl.UInt64,90}91)92assert (93df.select(94pl.col("col2").append(pl.col("other")),95pl.col("col1").append(pl.col("other")).name.keep(),96pl.col("col1").append(pl.col("other")).name.prefix("prefix_"),97pl.col("col1").append(pl.col("other")).name.suffix("_suffix"),98)99).schema == OrderedDict(100[101("col2", pl.Float64),102("col1", pl.UInt64),103("prefix_col1", pl.UInt64),104("col1_suffix", pl.UInt64),105]106)107108109def test_name_map_chain_21164() -> None:110df = pl.DataFrame({"MyCol": [0, 1, 2]})111assert_frame_equal(112df.select(pl.all().name.to_lowercase().name.suffix("_suffix")),113df.select(mycol_suffix=pl.col("MyCol")),114)115116117def test_when_then_keep_map_13858() -> None:118df = pl.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})119120assert_frame_equal(121df.with_columns(122pl.when(True)123.then(pl.int_range(3))124.otherwise(pl.all())125.name.keep()126.name.suffix("_other")127),128df.with_columns(a_other=pl.int_range(3), b_other=pl.int_range(3)),129)130131132def test_keep_name_struct_field_23669() -> None:133df = pl.DataFrame(134[135pl.Series("foo", [{"x": 1}], pl.Struct({"x": pl.Int64})),136pl.Series("bar", [{"x": 2}], pl.Struct({"x": pl.Int64})),137]138)139assert_frame_equal(140df.select(pl.all().struct.field("x").name.keep()),141pl.DataFrame(142[143pl.Series("foo", [1], pl.Int64),144pl.Series("bar", [2], pl.Int64),145]146),147)148149150