
    ei                    ,   d dl mZ d dlZd dlmZmZmZmZ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 d dlmZmZ d dlmZ d d	lmZmZmZmZ er0d d
lmZ d dl m!Z! d dlmZ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+  G d deeef   e	eef         Z,y)    )annotationsN)TYPE_CHECKINGAnyCallableLiteralProtocol)LazyExpr)
AliasNames	EvalNames
EvalSeriesNativeExprTWindowFunction)WindowInputs)combine_alias_output_namescombine_evaluate_output_names)SQLLazyFrameT)ImplementationVersionextend_boolnot_implemented)Sequence)Self)r
   r   )SQLExprDateTimeNamesSpace)SQLExprStringNamespace)SQLNamespace)ModeKeepStrategyPythonLiteral
RankMethodc                     e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   	 dlej
                  d	 	 	 	 	 	 	 	 	 	 	 	 	 dmdZdndZ	 	 dodZ	 	 	 	 	 	 dpdZ		 	 	 	 	 	 dqdZ
	 	 	 	 drdZ	 dl	 	 	 	 	 	 	 dsdZ	 	 	 	 	 	 dtdZdudZdvdZedwd       ZdxdZdydZdzdZd{dZd|dZd|dZd}d Z	 dl	 	 	 	 	 	 	 d~d!Z	 	 	 	 dddd"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd#Z	 	 	 	 	 	 dd$Z	 dl	 	 	 	 	 	 	 	 	 	 	 dd%Zedd&       Zedd'       Ze	 	 	 	 	 	 dd(       Z dd)Z!dd*Z"dd+Z#dd,Z$dd-Z%dd.Z&dd/Z'dd0Z(dd1Z)dd2Z*dd3Z+dd4Z,dd5Z-dd6Z.dd7Z/dd8Z0dd9Z1dd:Z2dd;Z3dd<Z4dd=Z5dd>Z6dd?Z7dd@Z8ddAZ9ddBZ:ddCZ;ddDZ<ddEZ=ddFZ>ddGZ?ddHZ@ddIZAddJZBddKZCddLZDddMZEddNZFddOZGddPZHddQZIddRZJddSZKddTZLddUZMddVZNddWZOddXZPddYZQddZZRdd[ZSdd\ZT	 	 	 	 	 	 	 	 	 	 dd]ZU	 	 	 	 	 	 	 	 	 	 dd^ZVdd_ZWdd`ZXddaZYddbZZddcZ[dddZ\ddeZ]ddfZ^ddgZ_	 	 	 	 	 	 ddhZ`ddiZaeddj       Zbeddk       Zc ed       Ze ed       Zf ed       Zgy)SQLExpr&EvalSeries[SQLLazyFrameT, NativeExprT]_callEvalNames[SQLLazyFrameT]_evaluate_output_namesAliasNames | None_alias_output_namesr   _versionr   _implementation1WindowFunction[SQLLazyFrameT, NativeExprT] | None_window_functionN)implementationc                    y N )selfcallwindow_functionevaluate_output_namesalias_output_namesversionr+   s          T/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/narwhals/_sql/expr.py__init__zSQLExpr.__init__*   s         c                $    | j                  |      S r-   )r"   )r/   dfs     r5   __call__zSQLExpr.__call__5   s    zz"~r7   c                     y r-   r.   r/   s    r5   __narwhals_namespace__zSQLExpr.__narwhals_namespace__8   s    >Ar7   c                    d fd}|S )Nc                     |       }j                         D ci c]  \  }}|| j                  |       }}}|D cg c]  } |fi | c}S c c}}w c c}w r-   )items_evaluate_single_output_expr)	r9   native_series_listkeyvalueother_native_seriesnative_seriesr0   expressifiable_argsr/   s	         r5   funcz.SQLExpr._callable_to_eval_series.<locals>.func?   s|    !%b #6";";"=#C R44U;;# # &8! ]:&9: 	#s   A A)r9   r   returnzlist[NativeExprT]r.   )r/   r0   rG   rH   s   ``` r5   _callable_to_eval_seriesz SQLExpr._callable_to_eval_series<   s    		 r7   c               (     	 	 	 	 	 	 d fd}|S )Nc           	         	j                  | |      }j                         D ci c]  \  }}|| j                  ||       }}}|D cg c]  } |fi | c}S c c}}w c c}w r-   )r1   r@   _evaluate_window_expr)
r9   window_inputsrB   rC   rD   rE   rF   r0   rG   r/   s
          r5   window_fz4SQLExpr._push_down_window_function.<locals>.window_fO   s     "&!5!5b-!H #6";";"=#C R--e]CC# # &8! ]:&9: 	#s   AA$r9   r   rN   WindowInputs[NativeExprT]rI   Sequence[NativeExprT]r.   )r/   r0   rG   rO   s   ``` r5   _push_down_window_functionz"SQLExpr._push_down_window_functionL   s'    		.G	"	$ r7   c                    | j                  | j                  || j                  | j                  | j                  | j
                        S Nr2   r3   r4   r+   )	__class__r"   r$   r&   r'   r(   )r/   r1   s     r5   _with_window_functionzSQLExpr._with_window_functionc   sF     ~~JJ"&"="=#77MM//  
 	
r7   c                   | j                   | j                  |fi ||| j                  | j                  | j                  | j
                        S rU   )rW   rJ   r$   r&   r'   r(   )r/   r0   window_funcrG   s       r5   _with_callablezSQLExpr._with_callableo   sU     ~~)D))$F2EF"&"="=#77MM//  
 	
r7   c                   | j                   | j                  |fi | | j                  |fi || j                  | j                  | j
                  | j                        S rU   rW   rJ   rS   r$   r&   r'   r(   )r/   r0   rG   s      r5   _with_elementwisezSQLExpr._with_elementwise   sh     ~~)D))$F2EF+D++DH4GH"&"="=#77MM//  
 	
r7   c                    | j                  | j                  ||      | j                  ||      | j                  | j                  | j
                  | j                        S )NotherrV   r]   )r/   opra   s      r5   _with_binaryzSQLExpr._with_binary   s`    ~~))"E):++Be+<"&"="=#77MM//  
 	
r7   c                   | j                   d n	nfd} t        |       | j                  | j                  | j                  || j
                  | j                        S )Nc                       |             S r-   r.   )output_namescurrent_alias_output_namesrH   s    r5   <lambda>z2SQLExpr._with_alias_output_names.<locals>.<lambda>   s    d+El+S&T r7   rV   )r&   typer"   r*   r$   r'   r(   )r/   rH   r3   rg   s    ` @r5   _with_alias_output_namesz SQLExpr._with_alias_output_names   sq    %)%=%=" |  *1 T 	 tDzJJ!!"&"="=1MM//
 	
r7   c                <     	 	 	 	 	 	 d fd} j                   xs |S )Nc                    |j                   rJ  |       D cg c]  }j                  ||j                          c}S c c}w r-   )order_by_window_expressionpartition_byr9   inputsexprr/   s      r5   default_window_funcz4SQLExpr.window_function.<locals>.default_window_func   sG     &&OSTVxGK''f.A.AB  s   #A r9   r   rq   rQ   rI   rR   )r*   )r/   rs   s   ` r5   r1   zSQLExpr.window_function   s4    		'@	"	 $$;(;;r7   c                D     | j                         j                  |g| S r-   )r=   	_function)r/   nameargss      r5   rv   zSQLExpr._function   s#    6t**,66tCdCCr7   c                @    | j                         j                  |      S r-   )r=   _lit)r/   rD   s     r5   rz   zSQLExpr._lit   s    **,11%88r7   c                <     | j                         j                  | S r-   )r=   	_coalesce)r/   rr   s     r5   r|   zSQLExpr._coalesce   s    6t**,66==r7   c                     y r-   r.   r<   s    r5   _count_starzSQLExpr._count_star       r7   c                     y r-   r.   r/   rr   rm   s      r5   _firstzSQLExpr._first   r   r7   c                     y r-   r.   r   s      r5   _lastzSQLExpr._last   r   r7   c                    y r-   r.   )r/   rr   ignore_nullss      r5   
_any_valuezSQLExpr._any_value   r   r7   c                D    | j                         j                  |||      S r-   )r=   _when)r/   	conditionrD   	otherwises       r5   r   zSQLExpr._when   s"     **,229eYOOr7   
descending
nulls_lastc                    y r-   r.   )r/   rr   ro   rm   
rows_startrows_endr   r   s           r5   rn   zSQLExpr._window_expression   s     r7   c               (     	 	 	 	 	 	 d fd}|S )Nc                ,   t        t        |j                              } |       D cg c]^  }j                  j	                  d|       j                  j	                  |      |j                  |j                  ||d            ` c}S c c}w )Nisnullr   r   r   r   )r   lenrm   r   rv   rn   ro   )r9   rq   flagsrr   	func_namereverser/   s       r5   rH   z&SQLExpr._cum_window_func.<locals>.func   s      V__)=>E !H  

^^Hd33++y$7++#(#(!" , 
  s   A#Brt   r.   )r/   r   r   rH   s   ``` r5   _cum_window_funczSQLExpr._cum_window_func   s'    		'@	"	& r7   c                   	
 g d|r|dz
  dz  }|dz
  dz  }||z    
|	n|dz
   
d		 	 	 	 	 	 d	 
fd}|S )N)summeanstdvar      r   c                   dv r}n\dk(  rdk(  rd}nOdv rdk(  rd}nCdk(  rdk(  rd}n6dk(  rdk(  rd	}n)d
v rd d}t        |      d d d}t        |      |j                  |j                  d} 
|       D cg c]h  }
j                   
j                  
j                  d|      fi |
j                  	      k\   
j                  
j                  ||      fi |      j c}S c c}w )N>   r   r   r   r   var_popr   var_sampr   
stddev_popstddev_samp>   r   r   z;Only ddof=0 and ddof=1 are currently supported for rolling_.z,Only the following functions are supported: z.
Got: )ro   rm   r   r   count)
ValueErrorro   rm   r   rn   rv   rz   )r9   rq   func_msgwindow_kwargsrr   ddofendr   min_samplesr/   startsupported_funcss         r5   rH   z*SQLExpr._rolling_window_func.<locals>.func   sM    O+&e#	!e#	"e#	$e#	%n,ST]S^^_` o%D_DUU]^g]hhij o% & 3 3"OO#	"M !H	  

+D++w59F yy-. ,D++DNN5$,GY=Y	 	 	s   
A-C:rt   r.   )r/   r   window_sizer   r   centerhalf	remainderrH   r   r   r   s   `` ``    @@@r5   _rolling_window_funczSQLExpr._rolling_window_func   sv     8!O)D$qA-IY&'EC!Ao&EC"	"	'@"	""	 "	H r7   c                6    | j                   j                         S r-   )r(   _backend_versionr<   s    r5   r   zSQLExpr._backend_version%  s    ##4466r7   c                    y r-   r.   )clsrr   rw   s      r5   _alias_nativezSQLExpr._alias_native)  s    LOr7   c                    dfd}	 	 	 	 	 	 dfd}d   } | ||t         t         |j                  |j                        S )Nc           	     \     D cg c]  } ||       D ]  }|  c}}      gS c c}}w r-   r.   )r9   rr   eexprsrH   s      r5   r0   z5SQLExpr._from_elementwise_horizontal_op.<locals>.call0  s/    @tBx@!!@!@ABB@s   (
c                r    D cg c]  }|j                  | |      D ]  }|  }}} |      gS c c}}w r-   )r1   )r9   rN   rr   r   lstr   rH   s        r5   r1   z@SQLExpr._from_elementwise_horizontal_op.<locals>.window_function3  sC     "'X0D0DR0WX11X1XCXI; Ys    3r   )r1   r2   r3   r4   r+   r9   r   rI   rR   rP   )r   r   r'   r(   )r   rH   r   r0   r1   contexts    ``   r5   _from_elementwise_horizontal_opz'SQLExpr._from_elementwise_horizontal_op,  sf    	C		.G	"	 (+"?"G95A$$"22
 	
r7   c                J    | j                   j                  j                         S )a	  Return `True` for multi-output aggregations without names.

        For example, column `'a'` only appears in the output as a grouping key:

            df.group_by('a').agg(nw.all().sum())

        It does not get included in:

            nw.all().sum().
        )	_metadataexpansion_kindis_multi_unnamedr<   s    r5   _is_multi_output_unnamedz SQLExpr._is_multi_output_unnamedC  s     ~~,,==??r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__eq__rr   ra   s     r5   rh   z SQLExpr.__eq__.<locals>.<lambda>R      T[[5G r7   rc   r/   ra   s     r5   r   zSQLExpr.__eq__Q        !GOOr7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__ne__r   s     r5   rh   z SQLExpr.__ne__.<locals>.<lambda>U  r   r7   r   r   s     r5   r   zSQLExpr.__ne__T  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__add__r   s     r5   rh   z!SQLExpr.__add__.<locals>.<lambda>X      T\\%5H r7   r   r   s     r5   r   zSQLExpr.__add__W        !H%PPr7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__sub__r   s     r5   rh   z!SQLExpr.__sub__.<locals>.<lambda>[  r   r7   r   r   s     r5   r   zSQLExpr.__sub__Z  r   r7   c                F    | j                  d |      j                  d      S )Nc                    || z
  S r-   r.   r   s     r5   rh   z"SQLExpr.__rsub__.<locals>.<lambda>^  
    UT\ r7   literalrc   aliasr   s     r5   __rsub__zSQLExpr.__rsub__]  "      !A5IOOPYZZr7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__mul__r   s     r5   rh   z!SQLExpr.__mul__.<locals>.<lambda>a  r   r7   r   r   s     r5   r   zSQLExpr.__mul__`  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__truediv__r   s     r5   rh   z%SQLExpr.__truediv__.<locals>.<lambda>d  s    T5E5Ee5L r7   r   r   s     r5   r   zSQLExpr.__truediv__c  s      !LeTTr7   c                F    | j                  d |      j                  d      S )Nc                    || z  S r-   r.   r   s     r5   rh   z&SQLExpr.__rtruediv__.<locals>.<lambda>g  r   r7   r   r   r   s     r5   __rtruediv__zSQLExpr.__rtruediv__f  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__pow__r   s     r5   rh   z!SQLExpr.__pow__.<locals>.<lambda>j  r   r7   r   r   s     r5   r   zSQLExpr.__pow__i  r   r7   c                F    | j                  d |      j                  d      S )Nc                    || z  S r-   r.   r   s     r5   rh   z"SQLExpr.__rpow__.<locals>.<lambda>m  s
    UD[ r7   r   r   r   s     r5   __rpow__zSQLExpr.__rpow__l  s!      !@%HNNyYYr7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__mod__r   s     r5   rh   z!SQLExpr.__mod__.<locals>.<lambda>p  r   r7   r   r   s     r5   r   zSQLExpr.__mod__o  r   r7   c                F    | j                  d |      j                  d      S )Nc                    || z  S r-   r.   r   s     r5   rh   z"SQLExpr.__rmod__.<locals>.<lambda>s  r   r7   r   r   r   s     r5   __rmod__zSQLExpr.__rmod__r  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__ge__r   s     r5   rh   z SQLExpr.__ge__.<locals>.<lambda>v  r   r7   r   r   s     r5   r   zSQLExpr.__ge__u  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__gt__r   s     r5   rh   z SQLExpr.__gt__.<locals>.<lambda>y  r   r7   r   r   s     r5   r   zSQLExpr.__gt__x  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__le__r   s     r5   rh   z SQLExpr.__le__.<locals>.<lambda>|  r   r7   r   r   s     r5   r  zSQLExpr.__le__{  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__lt__r   s     r5   rh   z SQLExpr.__lt__.<locals>.<lambda>  r   r7   r   r   s     r5   r  zSQLExpr.__lt__~  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__and__r   s     r5   rh   z!SQLExpr.__and__.<locals>.<lambda>  r   r7   r   r   s     r5   r  zSQLExpr.__and__  r   r7   c                (    | j                  d |      S )Nc                $    | j                  |      S r-   )__or__r   s     r5   rh   z SQLExpr.__or__.<locals>.<lambda>  r   r7   r   r   s     r5   r  zSQLExpr.__or__  r   r7   c                6     d fd} j                  ||      S )Nc                    j                  |j                  d      k7  t        j                  | |      j                  d             S Nr   r   rz   rb   floordivrr   ra   r/   s     r5   rH   z"SQLExpr.__floordiv__.<locals>.func  s;    ::1%r{{4'?4 r7   r`   rr   r   ra   r   rI   r   r   r/   ra   rH   s   `  r5   __floordiv__zSQLExpr.__floordiv__  s     	
   U 33r7   c                T     d fd} j                  ||      j                  d      S )Nc                    j                  | j                  d      k7  t        j                  ||       j                  d             S r  r  r  s     r5   rH   z#SQLExpr.__rfloordiv__.<locals>.func  s;    ::		!$bkk%&>		$ r7   r`   r   r  r   r  s   `  r5   __rfloordiv__zSQLExpr.__rfloordiv__  s+    	
   U 399)DDr7   c                L     d fd}	 	 	 	 	 	 d fd} j                  ||      S )Nc                f    j                  j                  d|       j                  d            S Nbool_andTr|   rv   rz   rr   r/   s    r5   fzSQLExpr.all.<locals>.f  s'    >>$..T"BDIIdOTTr7   c                     |       D cg c]M  }j                  j                  j                  d|      |j                        j	                  d            O c}S c c}w r  r|   rn   rv   ro   rz   rp   s      r5   rO   zSQLExpr.all.<locals>.window_f  se     !H  ++z48&:M:M IIdO	     AA!rr   r   rI   r   rt   r[   r/   r  rO   s   `  r5   allzSQLExpr.all  ;    	U		'@	"	 ""1h//r7   c                L     d fd}	 	 	 	 	 	 d fd} j                  ||      S )Nc                f    j                  j                  d|       j                  d            S Nbool_orFr  r  s    r5   r  zSQLExpr.any.<locals>.f  s(    >>$..D"A499UCSTTr7   c                     |       D cg c]M  }j                  j                  j                  d|      |j                        j	                  d            O c}S c c}w r)  r   rp   s      r5   rO   zSQLExpr.any.<locals>.window_f  sf     !H  ++y$79L9L IIe$	  r!  r"  rt   r#  r$  s   `  r5   anyzSQLExpr.any  r&  r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nmaxrv   r  s    r5   rh   zSQLExpr.max.<locals>.<lambda>      ud0K r7   r#  r<   s   `r5   r/  zSQLExpr.max      ""#KLLr7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nr   r0  r  s    r5   rh   zSQLExpr.mean.<locals>.<lambda>      vt0L r7   r#  r<   s   `r5   r   zSQLExpr.mean  s    ""#LMMr7   c               6     d fd} j                  |      S )Nc                F   dk(  rj                  d|       S dk(  rj                  d|       S j                  d|       }t        j                  j                  d|       j                  dt        j                  |d      t        j                  |      z              S )Nr   r   r   r   r   sqrtrv   rb   mulsubrr   	n_samplesr   r/   s     r5   rH   zSQLExpr.std.<locals>.func  s    qy~~lD99qy~~mT::w5I66}d3vy!(<yRV@W'WX r7   r"  r#  r/   r   rH   s   `` r5   r   zSQLExpr.std      		 ""4((r7   c               6     d fd} j                  |      S )Nc                &   dk(  rj                  d|       S dk(  rj                  d|       S j                  d|       }t        j                  j                  d|       t        j                  |d      t        j                  |      z        S )Nr   r   r   r   r   r9  r<  s     r5   rH   zSQLExpr.var.<locals>.func  s    qy~~i66qy~~j$77w5I66z40y!$rvvi'>> r7   r"  r#  r>  s   `` r5   r   zSQLExpr.var  r?  r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nmedianr0  r  s    r5   rh   z SQLExpr.median.<locals>.<lambda>  s    x0N r7   r#  r<   s   `r5   rD  zSQLExpr.median  s    ""#NOOr7   c                6     d fd} j                  |      S )Nc                h    j                  j                  d|       j                        |       S )Nisnan)r   rv   rz   )rr   r/   rD   s    r5   	_fill_nanz#SQLExpr.fill_nan.<locals>._fill_nan  s*    ::dnnWd;TYYu=MtTTr7   r"  r^   )r/   rD   rH  s   `` r5   fill_nanzSQLExpr.fill_nan  s    	U %%i00r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nminr0  r  s    r5   rh   zSQLExpr.min.<locals>.<lambda>  r1  r7   r#  r<   s   `r5   rM  zSQLExpr.min  r2  r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nr   r0  r  s    r5   rh   zSQLExpr.count.<locals>.<lambda>  s    w0M r7   r#  r<   s   `r5   r   zSQLExpr.count  s    ""#MNNr7   c                L     d fd}	 	 	 	 	 	 d fd} j                  ||      S )Nc                f    j                  j                  d|       j                  d            S Nr   r   r  r  s    r5   r  zSQLExpr.sum.<locals>.f  s'    >>$.."=tyy|LLr7   c                    |j                   rJ  |       D cg c]M  }j                  j                  j                  d|      |j                        j                  d            O c}S c c}w rR  )rm   r|   rn   rv   ro   rz   rp   s      r5   rO   zSQLExpr.sum.<locals>.window_f  st     && !H  ++ud3V5H5H IIaL	  s   AA/r"  rt   r#  r$  s   `  r5   r   zSQLExpr.sum  s;    	M		'@	"	 ""1h//r7   c                      j                    j                   j                  d       j                  d      cd fd}	 	 	 	 	 	 d fd} j                  ||      S )Nr   r   c                |    t        j                   d|        dj                   d|                         S Ncount_distinctr/  r   )rb   addr   )rr   Foner/   zeros    r5   rH   zSQLExpr.n_unique.<locals>.func  s=    66"D)%Ah$5sDAB r7   c                     |       D cg c]`  }t        j                    d|      |j                          dj                   d|                  |j                              b c}S c c}w rV  )rb   rX  ro   r   )r9   rq   rr   rY  WrZ  r/   r[  s      r5   rO   z"SQLExpr.n_unique.<locals>.window_f  s{     !H	  a($/1D1DE%Ah,=sD!IJ++	 	 	s   A%A4r"  rt   )rv   rn   rz   r[   )r/   rH   rO   rY  r]  rZ  r[  s   `  @@@@r5   n_uniquezSQLExpr.n_unique  ss    NN##IIaL$))A,	c	 			'@	"	 	 ""422r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nabsr0  r  s    r5   rh   zSQLExpr.abs.<locals>.<lambda>       4>>%3N r7   rI  r<   s   `r5   ra  zSQLExpr.abs      %%&NOOr7   c                H     	 	 	 	 	 	 	 	 d fd} j                  |||      S )Nc                L    j                  dj                  d| |      |      S )Ngreatestleastr0  )rr   lower_boundupper_boundr/   s      r5   _clipzSQLExpr.clip.<locals>._clip#  s*     >>DNN7D+F r7   )rh  ri  )rr   r   rh  r   ri  r   rI   r   rI  )r/   rh  ri  rj  s   `   r5   clipzSQLExpr.clip"  sI    		,7	FQ		 %%{ & 
 	
r7   c                6     d fd} j                  ||      S )Nc                *    j                  d| |      S )Nrf  r0  )rr   rh  r/   s     r5   rj  z!SQLExpr.clip_lower.<locals>._clip/  s    >>*dK@@r7   )rh  )rr   r   rh  r   rI   r   rI  )r/   rh  rj  s   `  r5   
clip_lowerzSQLExpr.clip_lower.  s!    	A %%e%EEr7   c                6     d fd} j                  ||      S )Nc                *    j                  d| |      S )Nrg  r0  )rr   ri  r/   s     r5   rj  z!SQLExpr.clip_upper.<locals>._clip5  s    >>'4==r7   )ri  )rr   r   ri  r   rI   r   rI  )r/   ri  rj  s   `  r5   
clip_upperzSQLExpr.clip_upper4  s     	> %%e%EEr7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nr   r0  r  s    r5   rh   z!SQLExpr.is_null.<locals>.<lambda>;  s    4>>(D3Q r7   rI  r<   s   `r5   is_nullzSQLExpr.is_null:  s    %%&QRRr7   c                0      j                   fd      S )Nc                H    j                  d| j                              S )Nround)rv   rz   )rr   decimalsr/   s    r5   rh   zSQLExpr.round.<locals>.<lambda>?  s    tyy7JK r7   rI  )r/   rx  s   ``r5   rw  zSQLExpr.round=  s    %%K
 	
r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nfloorr0  r  s    r5   rh   zSQLExpr.floor.<locals>.<lambda>C  s    4>>'43P r7   rI  r<   s   `r5   r{  zSQLExpr.floorB  s    %%&PQQr7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nceilr0  r  s    r5   rh   zSQLExpr.ceil.<locals>.<lambda>F  s    4>>&$3O r7   rI  r<   s   `r5   r~  zSQLExpr.ceilE  s    %%&OPPr7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nsinr0  r  s    r5   rh   zSQLExpr.sin.<locals>.<lambda>I  rb  r7   rI  r<   s   `r5   r  zSQLExpr.sinH  rc  r7   c                2     d fd} j                  |      S )Nc                    j                  | j                  d      k  j                  t        d            j                  d|             S )Nr   nanr8  )r   rz   floatrv   r  s    r5   _sqrtzSQLExpr.sqrt.<locals>._sqrtL  sA    ::tyy|#TYYuU|%<dnnVUY>Z r7   r"  rI  )r/   r  s   ` r5   r8  zSQLExpr.sqrtK  s    	
 %%e,,r7   c                ,      j                   fd      S )Nc                (    j                  d|       S )Nexpr0  r  s    r5   rh   zSQLExpr.exp.<locals>.<lambda>T  rb  r7   rI  r<   s   `r5   r  zSQLExpr.expS  rc  r7   c                6     d fd} j                  |      S )Nc                n   j                   }j                  | j                  d      k  j                  t        d            j                  | j                  d      k(  j                  t        d            t	        j
                   |d|        |dj                                                S )Nr   r  z-inflog)rv   r   rz   r  rb   truediv)rr   rY  baser/   s     r5   _logzSQLExpr.log.<locals>._logW  s    A::tyy|#		%,'

DIIaL(IIeFm,JJq~q		$/HI r7   r"  rI  )r/   r  r  s   `` r5   r  zSQLExpr.logV  s    
	 %%d++r7   c               F    | j                  | j                  d|            S )Nr   r   rX   r   r/   r   s     r5   cum_sumzSQLExpr.cum_sumf  #    ))$*?*?w*?*WXXr7   c               F    | j                  | j                  d|            S )Nr/  r  r  r  s     r5   cum_maxzSQLExpr.cum_maxi  r  r7   c               F    | j                  | j                  d|            S )NrM  r  r  r  s     r5   cum_minzSQLExpr.cum_minl  r  r7   c               B     	 	 	 	 	 	 d fd} j                  |      S )Nc                    t        t        |j                              } |       D cg c]=  }j                  j	                  d|      |j
                  |j                  ||d      ? c}S c c}w )Nr   r   r   )r   r   rm   rn   rv   ro   )r9   rq   r   rr   r   r/   s       r5   rH   zSQLExpr.cum_count.<locals>.funcp  sy      V__)=>E !H
  ''NN7D1''OO$$ ( 
 
 
s   AA0rt   rX   )r/   r   rH   s   `` r5   	cum_countzSQLExpr.cum_counto  s3    		'@	"	  ))$//r7   c               F    | j                  | j                  d|            S )Nproductr  r  r  s     r5   cum_prodzSQLExpr.cum_prod  s(    ))!!)W!=
 	
r7   c               J    | j                  | j                  d|||            S )Nr   r   rX   r   r/   r   r   r   s       r5   rolling_sumzSQLExpr.rolling_sum  s,    ))%%e[+f%U
 	
r7   c               J    | j                  | j                  d|||            S )Nr   r  r  r  s       r5   rolling_meanzSQLExpr.rolling_mean  s,    ))%%fk;v%V
 	
r7   c          	     L    | j                  | j                  d||||            S )Nr   r   r   r  r/   r   r   r   r   s        r5   rolling_varzSQLExpr.rolling_var  5     ))%%{Kd6 & 
 	
r7   c          	     L    | j                  | j                  d||||            S )Nr   r  r  r  s        r5   rolling_stdzSQLExpr.rolling_std  r  r7   c                >     	 	 	 	 	 	 d fd} j                  |      S )Nc                    j                   }j                  } |       D cg c];  }t        j                  | | |d|      |j                  |j
                              = c}S c c}w Nlag)rv   rn   rb   r;  ro   rm   )r9   rq   rY  windowrr   r/   s        r5   rH   zSQLExpr.diff.<locals>.func  sc     A,,F !H tVAeTNF4G4GYZ  s   A A'rt   r  r/   rH   s   ` r5   diffzSQLExpr.diff  3    		'@	"	 ))$//r7   c                B     	 	 	 	 	 	 d fd} j                  |      S )Nc           
          |       D cg c]:  }j                  j                  d|      |j                  |j                        < c}S c c}w r  )rn   rv   ro   rm   )r9   rq   rr   nr/   s      r5   rH   zSQLExpr.shift.<locals>.func  sT     !H	  ''NN5$2F4G4G  s   ?Art   r  )r/   r  rH   s   `` r5   shiftzSQLExpr.shift  s3    		'@	"	 ))$//r7   c                >     	 	 	 	 	 	 d fd} j                  |      S )Nc                     |       D cg c]O  }j                  j                  d      g |j                  ||j                        j	                  d      k(  Q c}S c c}w )N
row_numberr   )rn   rv   ro   rm   rz   rp   s      r5   rH   z'SQLExpr.is_first_distinct.<locals>.func  sn     !H  ''NN<00f))040OO
 99Q<   s   AA#rt   r  r  s   ` r5   is_first_distinctzSQLExpr.is_first_distinct  s3    		'@	"	 ))$//r7   c                >     	 	 	 	 	 	 d fd} j                  |      S )Nc           
        t        dt        |j                              } |       D cg c]R  }j                  j	                  d      g |j
                  ||j                  ||      j                  d      k(  T c}S c c}w )NTr  r   r   )r   r   rm   rn   rv   ro   rz   )r9   rq   r   rr   r/   s       r5   rH   z&SQLExpr.is_last_distinct.<locals>.func  s      c&//&:;E !H
  ''NN<00f))040OO$$ (  99Q< 
 
 
s   ABrt   r  r  s   ` r5   is_last_distinctzSQLExpr.is_last_distinct  s3    		'@	"	  ))$//r7   c                >     	 	 	 	 	 	 d fd} j                  |      S )Nc           	          |       D cg c]9  }j                   j                  |g|j                   |j                        ; c}S c c}w r-   )rn   r   rm   ro   rp   s      r5   rH   zSQLExpr.first.<locals>.func  sU     !H	  ''DKK7v79L9L     >Art   r  r  s   ` r5   firstzSQLExpr.first  r  r7   c                >     	 	 	 	 	 	 d fd} j                  |      S )Nc           	          |       D cg c]9  }j                   j                  |g|j                   |j                        ; c}S c c}w r-   )rn   r   rm   ro   rp   s      r5   rH   zSQLExpr.last.<locals>.func  sU     !H	  ''DJJt6foo68K8K  r  rt   r  r  s   ` r5   lastzSQLExpr.last  r  r7   c               0      j                   fd      S )Nc                *    j                  |       S )N)r   )r   )rr   r   r/   s    r5   rh   z#SQLExpr.any_value.<locals>.<lambda>  s    LI r7   r#  )r/   r   s   ``r5   	any_valuezSQLExpr.any_value  s    ""I
 	
r7   c                    dv r j                  d      n(dk(  r j                  d      n j                  d      	 d		 	 	 	 	 	 	 d
 fddfd}	 	 	 	 	 	 d fd} j                  ||      S )N>   r/  rM  averagerankdense
dense_rankr  c               :   j                         }|| f|gdgd}dg || i}j                  }j                  }
dk(  rHt        j                  t        j
                   |	fi | ||fi |      j                  d            }ny
dk(  rkt        j
                   |	fi |t        j                  t        j                   ||fi |j                  d            j                  d                  }n	 |	fi |}j                   |d|        |      S )	NT)ro   rm   r   r   ro   r/  r   r  g       @r   )	r~   rn   rv   rb   r;  rX  rz   r  r   )rr   ro   r   
count_exprr   count_window_kwargsr  rY  	rank_exprrH   methodr/   s            r5   _rankzSQLExpr.rank.<locals>._rank
  s-    ))+J ,!G)l#f	-M 4BCX\CXSWCX2Y,,FAFFFFt5}5zA-@A IIaL	 9$FF41=1JJvjH4GH$))TU,W		#	 #49=9	::q400)<<r7   c                     |       S )Nr   r.   )rr   r  r   s    r5   _unpartitioned_rankz)SQLExpr.rank.<locals>._unpartitioned_rank.  s    *55r7   c                    |j                   rd}t        |       |       D cg c]  } ||j                         c}S c c}w )Nz[`rank` followed by `over` with `order_by` specified is not supported for SQL-like backends.r  )rm   NotImplementedErrorro   )r9   rq   r   rr   r  r   r/   s       r5   _partitioned_rankz'SQLExpr.rank.<locals>._partitioned_rank1  sQ     s)#.. !H dF//JG  s   A)r.   )rr   r   ro   Sequence[str | NativeExprT]r   boolrI   r   r"  rt   )rv   r[   )r/   r  r   r  r  r  rH   s   ```  @@r5   r  zSQLExpr.rank  s    ..>>&)Dw>>,/D>>,/D 9;"	="	=5"	= 	"	=
 "	=H	6				'@		"		 ""#68IJJr7   c                     	 	 	 	 	 	 d fddfd}	 	 	 	 	 	 d fd} j                  |      j                  |      S )Nc                p    j                  j                         | g|      j                  d      k(  S )Nr   )rn   r~   rz   )rr   ro   r/   s     r5   
_is_uniquez%SQLExpr.is_unique.<locals>._is_unique?  s>     **  "T$9L$91 r7   c                     |       S r-   r.   )rr   r  s    r5   _unpartitioned_is_uniquez3SQLExpr.is_unique.<locals>._unpartitioned_is_uniqueF  s    d##r7   c                x    |j                   rJ  |       D cg c]  } |g|j                    c}S c c}w r-   )rm   ro   )r9   rq   rr   r  r/   s      r5   _partitioned_is_uniquez1SQLExpr.is_unique.<locals>._partitioned_is_uniqueI  s:     &&GKBxPtJt:f&9&9:PPPs   7)rr   r   ro   zstr | NativeExprTrI   r   r"  rt   )r[   rX   )r/   r  r  r  s   `  @r5   	is_uniquezSQLExpr.is_unique>  sj    		.?			$	Q	Q'@	Q"	Q ""#;<RR"
 	
r7   c                     d fd} j                  | j                   j                   j                   j                        S )Nc                <    j                  | t                    S r-   )r1   r   )r9   rm   ro   r/   s    r5   rH   zSQLExpr.over.<locals>.funcW  s    ''Lx,PQQr7   rV   r   )rW   r$   r&   r'   r(   )r/   ro   rm   rH   s   ``` r5   overzSQLExpr.overT  sF    	R ~~"&"="=#77MM//  
 	
r7   c               r     |dk7  rd| d j                    d}t        |       j                   fd      S )Nr,  z`Expr.mode(keep='z#')` is not implemented for backend z3

Hint: Use `nw.col(...).mode(keep='any')` instead.c                (    j                  d|       S )Nmoder0  r  s    r5   rh   zSQLExpr.mode.<locals>.<lambda>j  r5  r7   )r(   r  r[   )r/   keepr   s   `  r5   r  zSQLExpr.modeb  sP    5=#D6)LTMaMaLb cD D  &c**""#LMMr7   c                     y r-   r.   r<   s    r5   strzSQLExpr.strm  s    36r7   c                     y r-   r.   r<   s    r5   dtz
SQLExpr.dtp  s    58r7   r-   )r0   r!   r1   r)   r2   r#   r3   r%   r4   r   r+   r   rI   Noner   )rI   z3SQLNamespace[SQLLazyFrameT, Self, Any, NativeExprT])r0   Callable[..., NativeExprT]rG   r   rI   r!   )r0   r  rG   r   rI   *WindowFunction[SQLLazyFrameT, NativeExprT])r1   r  rI   r   )r0   r  rZ   r)   rG   r   rI   r   )r0   r  rG   r   rI   r   )rb   r  ra   r   rI   r   )rH   r%   rI   r   )rI   r  )rw   r  rx   zNativeExprT | PythonLiteralrI   r   )rD   r   rI   r   r"  )rI   r   )rr   r   rm   r  rI   r   )rr   r   r   r  rI   r   )r   r   rD   r   r   zNativeExprT | NonerI   r   )r.   r.   NN)rr   r   ro   r  rm   r  r   
int | Noner   r  r   Sequence[bool] | Noner   r  rI   r   )r   z'Literal['sum', 'max', 'min', 'product']r   r  rI   r  )r   z$Literal['sum', 'mean', 'std', 'var']r   intr   r  r   r  r   r  rI   r  )rI   ztuple[int, ...])rr   r   rw   r  rI   r   )rH   z*Callable[[list[NativeExprT]], NativeExprT]r   r   rI   r   )rI   r  )ra   r   rI   r   )rI   r   )r   r  rI   r   )rD   zfloat | NonerI   r   )rh  r   ri  r   rI   r   )rh  r   rI   r   )ri  r   rI   r   )rx  r  rI   r   )r  r  rI   r   )r   r  rI   r   )r   r  r   r  r   r  rI   r   )
r   r  r   r  r   r  r   r  rI   r   )r  r  rI   r   )r   r  rI   r   )r  r   r   r  rI   r   )ro   r  rm   zSequence[str]rI   r   )r  r   rI   r   )rI   zSQLExprStringNamespace[Self])rI   zSQLExprDateTimeNamesSpace[Self])h__name__
__module____qualname____annotations__r   DUCKDBr6   r:   r=   rJ   rS   rX   r[   r^   rc   rj   propertyr1   rv   rz   r|   r~   r   r   r   r   rn   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r%  r,  r/  r   r   r   rD  rJ  rM  r   r   r^  ra  rk  rn  rq  rt  rw  r{  r~  r  r8  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   
drop_nullsfilteruniquer.   r7   r5   r    r    "   s   1144**##GG
 NR	 *8)>)>	4	 K	
  8	 .	 	 '	 
	B	<B.JN	/ .JN	3.

I

	

 JN
(
 G

  $
 

 

.

JN

	



$ 	< 	<D9> .KJV
 )-	PP P &	P
 
P 5702!%#
 -1,0

 2
 .	

 
 
 *
 *
 

@NR	3:  777 7 	7
 7 7 
47r 7 7 O O
=
GK
	
 
,@PPQQ[QU[QZQ[PPPPQP4E0&0&MN))P1MO0(38P

FFS

RQP-P, YYY0&






03
=A
IL
	


03
=A
IL
	
000"0&00

:Kx
,
7
CP
	
N 6 68 8 "JFFr7   r    )-
__future__r   operatorrb   typingr   r   r   r   r   narwhals._compliant.exprr	   narwhals._compliant.typingr
   r   r   r   r   narwhals._compliant.windowr   narwhals._expression_parsingr   r   narwhals._sql.typingr   narwhals._utilsr   r   r   r   collections.abcr   typing_extensionsr   narwhals._sql.expr_dtr   narwhals._sql.expr_strr   narwhals._sql.namespacer   narwhals.typingr   r   r   r    r.   r7   r5   <module>r     sr    "  B B -  4 / Q Q(&E?=4KKSh}k12H]K=W4X Sr7   