
    Wi
                        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    f/home/sietch6/trending-topics-pipeline/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   _with_callabler   r*   s     r   uniquezDuckDBExprListNamespace.unique   s    	' ~~,,T22r   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   r5   s    `r   containsz DuckDBExprListNamespace.contains"   s    ~~//<
 	
r   c                @    | j                   j                  fd      S )Nc                6    t        d| t        dz               S )Nlist_extractr    r4   )r   indexs    r   r   z-DuckDBExprListNamespace.get.<locals>.<lambda>)   s    >4UQY@ r   r   )r   r:   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/   rA   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   rA   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    	 ~~,,T22r   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_sortr4   )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   )r5   r   r,   r   )r:   intr,   r   )r`   boolra   rd   r,   r   )__name__
__module____qualname__r   r   backend_versionr0   r6   r;   r@   rE   rI   rM   rX   rb    r   r   r   r      sq    M Xf%3 &3



RRRU Xf%	3 &	3
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   ri   r   r   <module>rs      s?    "   1 ; A A $!008
l#]<%@8
r   