
    .i
                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ erd dlmZ d dlmZ d d	lmZ  G d
 ded   ed         Zy)    )annotations)TYPE_CHECKING)LazyExprNamespace)ListNamespace)Fcollambda_exprlitwhen)requires)
Expression)
DuckDBExpr)NonNestedLiteralc                      e Zd ZddZ ej
                  d      dd       ZddZddZddZ	ddZ
ddZdd	Z ej
                  d
      dd       ZddZy)DuckDBExprListNamespacec                :    | j                   j                  d       S )Nc                    t        d|       S )Nlenr   exprs    W/opt/house_gps_flutter/.venv/lib/python3.12/site-packages/narwhals/_duckdb/expr_list.py<lambda>z-DuckDBExprListNamespace.len.<locals>.<lambda>   s    Qud^     	compliant_with_elementwiseselfs    r   r   zDuckDBExprListNamespace.len   s    ~~//0KLLr   )      c                @    dd}| j                   j                  |      S )Nc           
         t        d|       }t        t        d| t        d             j                         t        d|t        d                   j	                  |      S )Nlist_distinctarray_positionlist_append)r   r   r
   	isnotnull	otherwise)r   expr_distincts     r   funcz,DuckDBExprListNamespace.unique.<locals>.func   sQ    ot4M"D#d)4>>@-D	: i&'r   r   r   returnr   r   r   r*   s     r   uniquezDuckDBExprListNamespace.unique   s    	' ~~//55r   c                @    | j                   j                  fd      S )Nc                0    t        d| t                    S )Nlist_containsr   r
   )r   items    r   r   z2DuckDBExprListNamespace.contains.<locals>.<lambda>$   s    ?D#d)< r   r   )r   r3   s    `r   containsz DuckDBExprListNamespace.contains"   s    ~~//<
 	
r   c                @    | j                   j                  fd      S )Nc                6    t        d| t        dz               S )Nlist_extractr    r2   )r   indexs    r   r   z-DuckDBExprListNamespace.get.<locals>.<lambda>)   s    >4UQY@ r   r   )r   r8   s    `r   getzDuckDBExprListNamespace.get'   s    ~~//@
 	
r   c                :    | j                   j                  d       S )Nc                    t        d|       S )Nlist_minr   r   s    r   r   z-DuckDBExprListNamespace.min.<locals>.<lambda>-       Qz4=P r   r   r   s    r   minzDuckDBExprListNamespace.min,       ~~//0PQQr   c                :    | j                   j                  d       S )Nc                    t        d|       S )Nlist_maxr   r   s    r   r   z-DuckDBExprListNamespace.max.<locals>.<lambda>0   r=   r   r   r   s    r   maxzDuckDBExprListNamespace.max/   r?   r   c                :    | j                   j                  d       S )Nc                    t        d|       S )Nlist_avgr   r   s    r   r   z.DuckDBExprListNamespace.mean.<locals>.<lambda>3   r=   r   r   r   s    r   meanzDuckDBExprListNamespace.mean2   r?   r   c                :    | j                   j                  d       S )Nc                    t        d|       S )Nlist_medianr   r   s    r   r   z0DuckDBExprListNamespace.median.<locals>.<lambda>6   s    Q}d=S r   r   r   s    r   medianzDuckDBExprListNamespace.median5   s    ~~//0STTr   )r       c                @    dd}| j                   j                  |      S )Nc           	         t        d      }t        d| t        ||j                                     }t        d|      }t	        t        d|      t        d      k(  t        d            j                  |      S )N_list_filterlist_sumarray_lengthr   )r   r   r	   r'   r   r
   r(   )r   elemexpr_no_nullsexpr_sums       r   r*   z)DuckDBExprListNamespace.sum.<locals>.func:   sd    s8DmT;tT^^EU3VWM]3H.-8CFBCFKUU r   r+   r   r-   s     r   sumzDuckDBExprListNamespace.sum8   s    	 ~~//55r   c               \    |rdnd|rdnd| j                   j                  fd      S )NDESCASCz
NULLS LASTzNULLS FIRSTc                D    t        d| t              t                    S )N	list_sortr2   )r   nulls_positionsort_directions    r   r   z.DuckDBExprListNamespace.sort.<locals>.<lambda>H   s    ;c..A3~CVW r   r   )r   
descending
nulls_lastr\   r]   s      @@r   sortzDuckDBExprListNamespace.sortD   s/    #-5)3~~//W
 	
r   N)r,   r   )r3   r   r,   r   )r8   intr,   r   )r^   boolr_   rb   r,   r   )__name__
__module____qualname__r   r   backend_versionr.   r4   r9   r>   rC   rG   rK   rV   r`    r   r   r   r      sq    M Xf%6 &6



RRRU Xf%	6 &	6
r   r   r   N)
__future__r   typingr   narwhals._compliantr   !narwhals._compliant.any_namespacer   narwhals._duckdb.utilsr   r   r	   r
   r   narwhals._utilsr   duckdbr   narwhals._duckdb.exprr   narwhals.typingr   r   rg   r   r   <module>rq      s?    "   1 ; A A $!008
l#]<%@8
r   