
    }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dS )    )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dS )DuckDBExprListNamespacereturnr   c                8    | j                             d           S )Nc                "    t          d|           S )Nlenr   exprs    N/home/jrussi/.local/lib/python3.11/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    ~//0K0KLLLr   )      c                >    dd}| j                             |          S )Nr   r   r   c           
         t          d|           }t          t          d| t          d                                                     t          d|t          d                                                   |          S )Nlist_distinctarray_positionlist_append)r   r   r
   	isnotnull	otherwise)r   expr_distincts     r   funcz,DuckDBExprListNamespace.unique.<locals>.func   si    ot44M"D#d))44>>@@-D		::  i&&'r   r   r   r   r   r   r    r+   s     r   uniquezDuckDBExprListNamespace.unique   s.    	' 	' 	' 	' ~//555r   itemr   c                >    | j                             fd          S )Nc                @    t          d| t                              S )Nlist_containsr   r
   )r   r/   s    r   r   z2DuckDBExprListNamespace.contains.<locals>.<lambda>$   s    ?D#d))<< r   r   )r    r/   s    `r   containsz DuckDBExprListNamespace.contains"   s)    ~//<<<<
 
 	
r   indexintc                >    | j                             fd          S )Nc                F    t          d| t          dz                       S )Nlist_extractr!   r3   )r   r5   s    r   r   z-DuckDBExprListNamespace.get.<locals>.<lambda>)   s    >4UQY@@ r   r   )r    r5   s    `r   getzDuckDBExprListNamespace.get'   s)    ~//@@@@
 
 	
r   c                8    | j                             d           S )Nc                "    t          d|           S )Nlist_minr   r   s    r   r   z-DuckDBExprListNamespace.min.<locals>.<lambda>-       Qz4=P=P r   r   r   s    r   minzDuckDBExprListNamespace.min,       ~//0P0PQQQr   c                8    | 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                8    | 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                8    | j                             d           S )Nc                "    t          d|           S )Nlist_medianr   r   s    r   r   z0DuckDBExprListNamespace.median.<locals>.<lambda>6   s    Q}d=S=S r   r   r   s    r   medianzDuckDBExprListNamespace.median5   s    ~//0S0STTTr   )r!      c                >    dd}| j                             |          S )Nr   r   r   c           	     @   t          d          }t          d| t          ||                                                    }t          d|          }t	          t          d|          t          d          k    t          d                                        |          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:   s    s88DmT;tT^^EUEU3V3VWWM]33H.-88CFFBCFFKKUU  r   r,   r   r-   s     r   sumzDuckDBExprListNamespace.sum8   s.    	 	 	 	 ~//555r   
descendingbool
nulls_lastc               Z    |rdnd|rdnd| j                             fd          S )NDESCASCz
NULLS LASTzNULLS FIRSTc                \    t          d| t                    t                              S )N	list_sortr3   )r   nulls_positionsort_directions    r   r   z.DuckDBExprListNamespace.sort.<locals>.<lambda>H   s%    ;c..A.A3~CVCVWW r   r   )r    rX   rZ   r`   ra   s      @@r   sortzDuckDBExprListNamespace.sortD   sI    #-85)3F~//WWWWW
 
 	
r   N)r   r   )r/   r   r   r   )r5   r6   r   r   )rX   rY   rZ   rY   r   r   )__name__
__module____qualname__r   r   backend_versionr.   r4   r:   r?   rD   rH   rL   rW   rb    r   r   r   r      s$       M M M M Xf%%6 6 6 &%6
 
 
 


 
 
 

R R R RR R R RR R R RU U U U Xf%%	6 	6 	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 1 1 1 1 1 ; ; ; ; ; ; A A A A A A A A A A A A A A $ $ $ $ $ $ 1!!!!!!0000000000008
 8
 8
 8
 8
l#]<%@8
 8
 8
 8
 8
r   