o
    έρhΎ  γ                   @  sd   d dl mZ d dlmZ d dlmZ d dlmZ er d dlmZ edddZG d	d
 d
ee Z	dS )ι    )Ϊannotations)ΪTYPE_CHECKING)ΪGeneric)ΪTypeVar)ΪExprΪExprTr   )Ϊboundc                   @  s    e Zd ZdddZdd	d
ZdS )ΪExprStructNamespaceΪexprr   ΪreturnΪNonec                 C  s
   || _ d S ©N)Ϊ_expr)Ϊselfr
   © r   ϊH/var/www/vscode/kcb/lib/python3.10/site-packages/narwhals/expr_struct.pyΪ__init__   s   
zExprStructNamespace.__init__ΪnameΪstrc                   s   j   fddj j‘S )u  Retrieve a Struct field as a new expression.

        Arguments:
            name: Name of the struct field to retrieve.

        Returns:
            A new expression.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame(
            ...     {
            ...         "user": [
            ...             {"id": "0", "name": "john"},
            ...             {"id": "1", "name": "jane"},
            ...         ]
            ...     }
            ... )
            >>> df = nw.from_native(df_native)
            >>> df.with_columns(name=nw.col("user").struct.field("name"))
            βββββββββββββββββββββββββ
            |  Narwhals DataFrame   |
            |-----------------------|
            |shape: (2, 2)          |
            |ββββββββββββββββ¬βββββββ|
            |β user         β name β|
            |β ---          β ---  β|
            |β struct[2]    β str  β|
            |ββββββββββββββββͺβββββββ‘|
            |β {"0","john"} β john β|
            |β {"1","jane"} β jane β|
            |ββββββββββββββββ΄βββββββ|
            βββββββββββββββββββββββββ
        c                   s   j  | ‘j  ‘S r   )r   Ϊ_to_compliant_exprΪstructΪfield)Ϊplx©r   r   r   r   Ϊ<lambda>6   s    z+ExprStructNamespace.field.<locals>.<lambda>)r   Ϊ	__class__Ϊ	_metadata)r   r   r   r   r   r      s   $ώzExprStructNamespace.fieldN)r
   r   r   r   )r   r   r   r   )Ϊ__name__Ϊ
__module__Ϊ__qualname__r   r   r   r   r   r   r	      s    
r	   N)
Ϊ
__future__r   Ϊtypingr   r   r   Ϊnarwhals.exprr   r   r	   r   r   r   r   Ϊ<module>   s    