
    Wh                    h    d dl mZ d dlmZmZmZmZ erd dlmZ  edd      Z	 G d dee	         Z
y	)
    )annotations)TYPE_CHECKINGCallableGenericTypeVar)ExprExprTr   )boundc                  D    e Zd Zd	dZd
dZddZddZddZd
dZd
dZ	y)ExprNameNamespacec                    || _         y N)_expr)selfexprs     L/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/expr_name.py__init__zExprNameNamespace.__init__   s	    
    c                @      j                   j                   fd      S )a  Keep the original root name of the expression.

        Notes:
            For Polars versions prior to 1.32, this will undo any previous renaming operations on the expression.

        Examples:
            >>> import pandas as pd
            >>> import narwhals as nw
            >>> df_native = pd.DataFrame({"foo": [1, 2], "BAR": [4, 5]})
            >>> df = nw.from_native(df_native)
            >>> df.select(nw.col("foo").alias("alias_for_foo").name.keep()).columns
            ['foo']
        c                j    j                   j                  |       j                  j                         S r   )r   _to_compliant_exprnamekeepplxr   s    r   <lambda>z(ExprNameNamespace.keep.<locals>.<lambda>   s%    

55c:??DDF r   r   _with_elementwiser   s   `r   r   zExprNameNamespace.keep   s     zz++F
 	
r   c                D      j                   j                   fd      S )a  Rename the output of an expression by mapping a function over the root name.

        Arguments:
            function: Function that maps a root name to a new name.

        Notes:
            For Polars versions prior to 1.32, this will undo any previous renaming operations on the expression.

        Examples:
            >>> import pandas as pd
            >>> import narwhals as nw
            >>> df_native = pd.DataFrame({"foo": [1, 2], "BAR": [4, 5]})
            >>> df = nw.from_native(df_native)
            >>> renaming_func = lambda s: s[::-1]  # reverse column name
            >>> df.select(nw.col("foo", "BAR").name.map(renaming_func)).columns
            ['oof', 'RAB']
        c                l    j                   j                  |       j                  j                        S r   )r   r   r   map)r   functionr   s    r   r   z'ExprNameNamespace.map.<locals>.<lambda>4   s'    

55c:??CCHM r   r   )r   r#   s   ``r   r"   zExprNameNamespace.map!   s    $ zz++M
 	
r   c                D      j                   j                   fd      S )aj  Add a prefix to the root column name of the expression.

        Arguments:
            prefix: Prefix to add to the root column name.

        Notes:
            For Polars versions prior to 1.32, this will undo any previous renaming operations on the expression.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"foo": [1, 2], "BAR": [4, 5]})
            >>> df = nw.from_native(df_native)
            >>> df.select(nw.col("foo", "BAR").name.prefix("with_prefix")).columns
            ['with_prefixfoo', 'with_prefixBAR']
        c                l    j                   j                  |       j                  j                        S r   )r   r   r   prefix)r   r&   r   s    r   r   z*ExprNameNamespace.prefix.<locals>.<lambda>I   '    

55c:??FFvN r   r   )r   r&   s   ``r   r&   zExprNameNamespace.prefix7       " zz++N
 	
r   c                D      j                   j                   fd      S )am  Add a suffix to the root column name of the expression.

        Arguments:
            suffix: Suffix to add to the root column name.

        Notes:
            For Polars versions prior to 1.32, this will undo any previous renaming operations on the expression.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"foo": [1, 2], "BAR": [4, 5]})
            >>> df = nw.from_native(df_native)
            >>> df.select(nw.col("foo", "BAR").name.suffix("_with_suffix")).columns
            ['foo_with_suffix', 'BAR_with_suffix']
        c                l    j                   j                  |       j                  j                        S r   )r   r   r   suffix)r   r   r+   s    r   r   z*ExprNameNamespace.suffix.<locals>.<lambda>^   r'   r   r   )r   r+   s   ``r   r+   zExprNameNamespace.suffixL   r(   r   c                @      j                   j                   fd      S )a  Make the root column name lowercase.

        Notes:
            For Polars versions prior to 1.32, this will undo any previous renaming operations on the expression.

        Examples:
            >>> import pyarrow as pa
            >>> import narwhals as nw
            >>> df_native = pa.table({"foo": [1, 2], "BAR": [4, 5]})
            >>> df = nw.from_native(df_native)
            >>> df.select(nw.col("foo", "BAR").name.to_lowercase()).columns
            ['foo', 'bar']
        c                j    j                   j                  |       j                  j                         S r   )r   r   r   to_lowercaser   s    r   r   z0ExprNameNamespace.to_lowercase.<locals>.<lambda>p   %    

55c:??LLN r   r   r   s   `r   r.   zExprNameNamespace.to_lowercasea        zz++N
 	
r   c                @      j                   j                   fd      S )a  Make the root column name uppercase.

        Notes:
            For Polars versions prior to 1.32, this will undo any previous renaming operations on the expression.

        Examples:
            >>> import pyarrow as pa
            >>> import narwhals as nw
            >>> df_native = pa.table({"foo": [1, 2], "BAR": [4, 5]})
            >>> df = nw.from_native(df_native)
            >>> df.select(nw.col("foo", "BAR").name.to_uppercase()).columns
            ['FOO', 'BAR']
        c                j    j                   j                  |       j                  j                         S r   )r   r   r   to_uppercaser   s    r   r   z0ExprNameNamespace.to_uppercase.<locals>.<lambda>   r/   r   r   r   s   `r   r3   zExprNameNamespace.to_uppercases   r0   r   N)r   r	   returnNone)r4   r	   )r#   zCallable[[str], str]r4   r	   )r&   strr4   r	   )r+   r6   r4   r	   )
__name__
__module____qualname__r   r   r"   r&   r+   r.   r3    r   r   r   r      s%    
$
,
*
*
$
r   r   N)
__future__r   typingr   r   r   r   narwhals.exprr   r	   r   r:   r   r   <module>r>      s2    " < <"v&x
 x
r   