
    -Phb                    ~   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 d dlmZ d dlmZ d dlmZmZmZ d d	lmZmZ d d
lmZ d dlmZmZmZ d dlmZ erGd dl m!c m"Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dlmZm/Z/ d dlm0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8  G d de
d         ed                   Z9dS )    )annotationsN)TYPE_CHECKINGAnyCallableLiteralSequence)LazyExpr)DepthTrackingExprDaskExprDateTimeNamespaceDaskExprStringNamespace)add_row_indexmaybe_evaluate_exprnarwhals_to_native_dtype)ExprKind!evaluate_output_names_and_aliases)native_to_narwhals_dtype)Implementationgenerate_temporary_column_namenot_implementedInvalidOperationError)Self)
AliasNames	EvalNames
EvalSeriesScalarKwargs)DaskLazyFrameDaskNamespace)r   ExprMetadata)Version_FullContext)FillNullStrategy	IntoDTypeNonNestedLiteralNumericLiteralRollingInterpolationMethodTemporalLiteralc                  6   e Zd ZU ej        Zded<   ddddZddZddZ	ddZ
dd"Zed#d$dd*            Zedd,            Z	 	 ddd1Zdd3Zdd6Zdd7Zdd8Zdd9Zdd:Zdd;Zdd<Zdd=Zdd>Zdd?Zdd@ZddAZddBZddCZddEZddFZ ddGZ!ddHZ"ddIZ#ddJZ$ddKZ%ddLZ&ddMZ'ddNZ(ddOZ)ddQZ*ddRZ+ddSZ,ddUZ-ddXZ.ddYZ/ddZZ0dd[Z1dd\Z2dd`Z3ddaZ4ddbZ5ddcZ6dddZ7ddeZ8ddgZ9ddhZ:ddiZ;ddjZ<ddkZ=ddlZ>ddsZ?ddwZ@ddxZAddyZBddzZCdd{ZDdd|ZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPeQdd            ZReQdd            ZS eT            ZU eT            ZV eT            ZW eT            ZX eT            ZYdS )DaskExprr   _implementationNscalar_kwargscall$EvalSeries[DaskLazyFrame, dx.Series]depthintfunction_namestrevaluate_output_namesEvalNames[DaskLazyFrame]alias_output_namesAliasNames | Nonebackend_versiontuple[int, ...]versionr#   r/   ScalarKwargs | NonereturnNonec                   || _         || _        || _        || _        || _        || _        || _        |pi | _        d | _        d S N)	_call_depth_function_name_evaluate_output_names_alias_output_names_backend_version_version_scalar_kwargs	_metadata)	selfr0   r2   r4   r6   r8   r:   r<   r/   s	            S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_dask/expr.py__init__zDaskExpr.__init__1   sQ     
+&;##5  /+1r.2    dfr   Sequence[dx.Series]c                ,    |                      |          S rA   )rB   )rK   rO   s     rL   __call__zDaskExpr.__call__G   s    zz"~~rN   c                    d S rA    rK   s    rL   __narwhals_expr__zDaskExpr.__narwhals_expr__J   s      rN   r!   c                <    ddl m}  || j        | j                  S )Nr   r    )r:   r<   )narwhals._dask.namespacer!   rG   rH   )rK   r!   s     rL   __narwhals_namespace__zDaskExpr.__narwhals_namespace__L   s.    ::::::}T-BDMZZZZrN   kind/Literal[ExprKind.AGGREGATION, ExprKind.LITERAL]r   c           
          d fd}                      | j         j         j         j         j         j         j                  S )NrO   r   r>   list[dx.Series]c                .    d  |           D             S )Nc                4    g | ]}|j         d          d          S )r   )loc).0results     rL   
<listcomp>z4DaskExpr.broadcast.<locals>.func.<locals>.<listcomp>V   s#    <<<FJqM!$<<<rN   rT   )rO   rK   s    rL   funcz DaskExpr.broadcast.<locals>.funcS   s!     =<4488<<<<rN   r2   r4   r6   r8   r:   r<   r/   rO   r   r>   r]   )	__class__rC   rD   rE   rF   rG   rH   rI   )rK   rZ   rd   s   `  rL   	broadcastzDaskExpr.broadcastR   si    	= 	= 	= 	= 	= 	=
 ~~+-"&"=#7 1M-  	
 	
 		
rN    )r4   cls
type[Self]evaluate_column_namescontextr$   c         	     H    dfd} | |d|d |j         |j                  S )	NrO   r   r>   r]   c                     	  fd            D             S # t           $ r)}                                           x}r|| d }~ww xY w)Nc                *    g | ]}j         |         S rT   )_native_frame)ra   column_namerO   s     rL   rc   z<DaskExpr.from_column_names.<locals>.func.<locals>.<listcomp>n   s1       # $[1  rN   )KeyError_check_columns_exist)rO   eerrorrl   s   `  rL   rd   z(DaskExpr.from_column_names.<locals>.funcl   s       '<'<R'@'@       334I4I"4M4MNNN5 'Q&s    
A$A		Ar   r2   r4   r6   r8   r:   r<   rf   )rG   rH   )rj   rl   rm   r4   rd   s    `   rL   from_column_nameszDaskExpr.from_column_namesc   sW    		 		 		 		 		 		 s'"7##4$
 
 
 	
rN   column_indicesc          	     n    d	fd} | |dd|                                d |j        |j                  S )
NrO   r   r>   r]   c                "      fdD             S )Nc                <    g | ]}j         j        d d |f         S rA   )nativeiloc)ra   irO   s     rL   rc   z>DaskExpr.from_column_indices.<locals>.func.<locals>.<listcomp>   s*    AAAQBIN111a4(AAArN   rT   )rO   ry   s   `rL   rd   z*DaskExpr.from_column_indices.<locals>.func   s    AAAA.AAAArN   r   nthrw   rf   )_eval_names_indicesrG   rH   )rj   rm   ry   rd   s     ` rL   from_column_indiceszDaskExpr.from_column_indices   sk    	B 	B 	B 	B 	B 	B s"%"9"9."I"I##4$
 
 
 	
rN   	expr_nameCallable[..., dx.Series]expressifiable_args
Self | Anyc          
          d	 fd}                      | j        dz    j         d|  j         j         j         j        |          S )
NrO   r   r>   r]   c                     g }                                } fd                                D             }|D ] } |fi |}|                    |           !|S )Nc                8    i | ]\  }}|t          |          S rT   )r   )ra   keyvaluerO   s      rL   
<dictcomp>z9DaskExpr._with_callable.<locals>.func.<locals>.<dictcomp>   s:     # # #C (U33# # #rN   )rB   itemsappend)	rO   native_resultsnative_series_listother_native_seriesnative_seriesresult_nativer0   r   rK   s	   `     rL   rd   z%DaskExpr._with_callable.<locals>.func   s    .0N!%B# # # #"5";";"="=# # # "4 5 5 $] J J6I J J%%m4444!!rN      z->re   rf   )rg   rC   rD   rE   rF   rG   rH   )rK   r0   r   r/   r   rd   s   ``  ` rL   _with_callablezDaskExpr._with_callable   s    
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" ~~+/!0??I??"&"=#7 1M'  	
 	
 		
rN   rd   c          
          t          |           | j        | j        | j        | j        || j        | j        | j                  S )N)r0   r2   r4   r6   r8   r:   r<   r/   )typerB   rC   rD   rE   rG   rH   rI   rK   rd   s     rL   _with_alias_output_namesz!DaskExpr._with_alias_output_names   sK    tDzz+-"&"=# 1M-	
 	
 	
 		
rN   otherr   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__add__exprr   s     rL   <lambda>z"DaskExpr.__add__.<locals>.<lambda>       U 3 3 rN   r   r   r   rK   r   s     rL   r   zDaskExpr.__add__   )    ""33Ye # 
 
 	
rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__sub__r   s     rL   r   z"DaskExpr.__sub__.<locals>.<lambda>   r   rN   r   r   r   r   s     rL   r   zDaskExpr.__sub__   r   rN   c                Z    |                      d d|                              d          S )Nc                    || z
  S rA   rT   r   s     rL   r   z#DaskExpr.__rsub__.<locals>.<lambda>   
     rN   __rsub__r   literalr   aliasr   s     rL   r   zDaskExpr.__rsub__   6    "",,j # 
 

%	

	rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__mul__r   s     rL   r   z"DaskExpr.__mul__.<locals>.<lambda>   r   rN   r   r   r   r   s     rL   r   zDaskExpr.__mul__   r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__truediv__r   s     rL   r   z&DaskExpr.__truediv__.<locals>.<lambda>   s     0 0 7 7 rN   r   r   r   r   s     rL   r   zDaskExpr.__truediv__   s)    ""77e # 
 
 	
rN   c                Z    |                      d d|                              d          S )Nc                    || z  S rA   rT   r   s     rL   r   z'DaskExpr.__rtruediv__.<locals>.<lambda>   r   rN   __rtruediv__r   r   r   r   s     rL   r   zDaskExpr.__rtruediv__   s6    "",,nE # 
 

%	

	rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__floordiv__r   s     rL   r   z'DaskExpr.__floordiv__.<locals>.<lambda>   s     1 1% 8 8 rN   r   r   r   r   s     rL   r   zDaskExpr.__floordiv__   s*    ""88.PU # 
 
 	
rN   c                Z    |                      d d|                              d          S )Nc                    || z  S rA   rT   r   s     rL   r   z(DaskExpr.__rfloordiv__.<locals>.<lambda>   s
     rN   __rfloordiv__r   r   r   r   s     rL   r   zDaskExpr.__rfloordiv__   s6    ""--e # 
 

%	

	rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__pow__r   s     rL   r   z"DaskExpr.__pow__.<locals>.<lambda>   r   rN   r   r   r   r   s     rL   r   zDaskExpr.__pow__   r   rN   c                Z    |                      d d|                              d          S )Nc                    || z  S rA   rT   r   s     rL   r   z#DaskExpr.__rpow__.<locals>.<lambda>   s
    t rN   __rpow__r   r   r   r   s     rL   r   zDaskExpr.__rpow__   s6    ""++Zu # 
 

%	

	rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__mod__r   s     rL   r   z"DaskExpr.__mod__.<locals>.<lambda>   r   rN   r   r   r   r   s     rL   r   zDaskExpr.__mod__   r   rN   c                Z    |                      d d|                              d          S )Nc                    || z  S rA   rT   r   s     rL   r   z#DaskExpr.__rmod__.<locals>.<lambda>   r   rN   __rmod__r   r   r   r   s     rL   r   zDaskExpr.__rmod__   r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__eq__r   s     rL   r   z!DaskExpr.__eq__.<locals>.<lambda>       E 2 2 rN   r   r   r   r   s     rL   r   zDaskExpr.__eq__   )    ""22HE # 
 
 	
rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__ne__r   s     rL   r   z!DaskExpr.__ne__.<locals>.<lambda>   r   rN   r   r   r   r   s     rL   r   zDaskExpr.__ne__   r   rN   DaskExpr | Anyc                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__ge__r   s     rL   r   z!DaskExpr.__ge__.<locals>.<lambda>  r   rN   r   r   r   r   s     rL   r   zDaskExpr.__ge__  r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__gt__r   s     rL   r   z!DaskExpr.__gt__.<locals>.<lambda>	  r   rN   r   r   r   r   s     rL   r   zDaskExpr.__gt__  r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__le__r   s     rL   r   z!DaskExpr.__le__.<locals>.<lambda>  r   rN   r   r   r   r   s     rL   r   zDaskExpr.__le__  r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__lt__r   s     rL   r   z!DaskExpr.__lt__.<locals>.<lambda>  r   rN   r   r   r   r   s     rL   r   zDaskExpr.__lt__  r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__and__r   s     rL   r   z"DaskExpr.__and__.<locals>.<lambda>  r   rN   r   r   r   r   s     rL   r   zDaskExpr.__and__  r   rN   c                4    |                      d d|          S )Nc                ,    |                      |          S rA   )__or__r   s     rL   r   z!DaskExpr.__or__.<locals>.<lambda>  r   rN   r   r   r   r   s     rL   r   zDaskExpr.__or__  r   rN   c                0    |                      d d          S )Nc                *    |                                  S rA   )
__invert__r   s    rL   r   z%DaskExpr.__invert__.<locals>.<lambda>!  s    0A0A rN   r   r   rU   s    rL   r   zDaskExpr.__invert__   s    ""#A#A<PPPrN   c                0    |                      d d          S )Nc                N    |                                                                  S rA   )mean	to_seriesr   s    rL   r   zDaskExpr.mean.<locals>.<lambda>$      		0E0E0G0G rN   r   r   rU   s    rL   r   zDaskExpr.mean#      ""#G#GPPPrN   c                L     ddl m d fd}                     |d          S )	Nr   r   s	dx.Seriesr>   c                    t          | j        j        t          j                  }|                                sd} |          |                                                                 S )Nz<`median` operation not supported for non-numeric input type.)r   dtyperH   r   DASK
is_numericmedian_approximater   )r   r   msgr   rK   s      rL   rd   zDaskExpr.median.<locals>.func)  sc    ,QWdm^EXYYE##%% 1T++C000''))33555rN   median)r   r   r>   r   )narwhals.exceptionsr   r   )rK   rd   r   s   ` @rL   r   zDaskExpr.median&  sQ    ======	6 	6 	6 	6 	6 	6 	6 ""4222rN   c                0    |                      d d          S )Nc                N    |                                                                  S rA   )minr   r   s    rL   r   zDaskExpr.min.<locals>.<lambda>3      

0D0D0F0F rN   r   r   rU   s    rL   r   zDaskExpr.min2      ""#F#FNNNrN   c                0    |                      d d          S )Nc                N    |                                                                  S rA   )maxr   r   s    rL   r   zDaskExpr.max.<locals>.<lambda>6  r   rN   r  r   rU   s    rL   r  zDaskExpr.max5  r   rN   ddofc                >    |                      fdddi          S )Nc                T    |                                                                S N)r  )stdr   r   r  s    rL   r   zDaskExpr.std.<locals>.<lambda>:  !    t,,6688 rN   r  r  r.   r   rK   r  s    `rL   r  zDaskExpr.std8  6    ""8888!4. # 
 
 	
rN   c                >    |                      fdddi          S )Nc                T    |                                                                S r  )varr   r	  s    rL   r   zDaskExpr.var.<locals>.<lambda>A  r
  rN   r  r  r.   r   r  s    `rL   r  zDaskExpr.var?  r  rN   c                0    |                      d d          S )Nc                N    |                                                                  S rA   )skewr   r   s    rL   r   zDaskExpr.skew.<locals>.<lambda>G  r   rN   r  r   rU   s    rL   r  zDaskExpr.skewF  r   rN   nc                6    |                      fdd          S )Nc                .    |                                S rA   )shift)r   r  s    rL   r   z DaskExpr.shift.<locals>.<lambda>J  s    

1 rN   r  r   )rK   r  s    `rL   r  zDaskExpr.shiftI  s#    ""#=#=#=#=wGGGrN   reverseboolc               V    |rd}t          |          |                     d d          S )Nz:`cum_sum(reverse=True)` is not supported with Dask backendc                *    |                                  S rA   )cumsumr   s    rL   r   z"DaskExpr.cum_sum.<locals>.<lambda>R       rN   cum_sumNotImplementedErrorr   rK   r  r   s      rL   r  zDaskExpr.cum_sumL  s7     	+NC%c***""#=#=yIIIrN   c               V    |rd}t          |          |                     d d          S )Nz<`cum_count(reverse=True)` is not supported with Dask backendc                    |                                                       t                                                    S rA   )isnaastyper3   r  r   s    rL   r   z$DaskExpr.cum_count.<locals>.<lambda>Z  s*    499;;,..s33::<< rN   	cum_countr  r   s      rL   r%  zDaskExpr.cum_countT  s=     	+PC%c***""<<k
 
 	
rN   c               V    |rd}t          |          |                     d d          S )Nz:`cum_min(reverse=True)` is not supported with Dask backendc                *    |                                  S rA   )cumminr   s    rL   r   z"DaskExpr.cum_min.<locals>.<lambda>b  r  rN   cum_minr  r   s      rL   r)  zDaskExpr.cum_min]  7     	+NC%c***""#=#=yIIIrN   c               V    |rd}t          |          |                     d d          S )Nz:`cum_max(reverse=True)` is not supported with Dask backendc                *    |                                  S rA   )cummaxr   s    rL   r   z"DaskExpr.cum_max.<locals>.<lambda>i  r  rN   cum_maxr  r   s      rL   r.  zDaskExpr.cum_maxd  r*  rN   c               V    |rd}t          |          |                     d d          S )Nz;`cum_prod(reverse=True)` is not supported with Dask backendc                *    |                                  S rA   )cumprodr   s    rL   r   z#DaskExpr.cum_prod.<locals>.<lambda>p  s     rN   cum_prodr  r   s      rL   r2  zDaskExpr.cum_prodk  s7     	+OC%c***""#>#>
KKKrN   window_sizemin_samplescenterc               >    |                      fdd          S )Nc                X    |                                                                S N)windowmin_periodsr5  )rollingsumr   r5  r4  r3  s    rL   r   z&DaskExpr.rolling_sum.<locals>.<lambda>t  s-    "F &  cee rN   rolling_sumr   rK   r3  r4  r5  s    ```rL   r>  zDaskExpr.rolling_sumr  s@    ""      	
 
 	
rN   c               >    |                      fdd          S )Nc                X    |                                                                S r8  )r;  r   r=  s    rL   r   z'DaskExpr.rolling_mean.<locals>.<lambda>|  s-    "F &  dff rN   rolling_meanr   r?  s    ```rL   rB  zDaskExpr.rolling_meanz  s@    ""      	
 
 	
rN   c               l    |dk    r|                      fdd          S d}t          |          )Nr   c                X    |                                                                S r8  )r;  r  r=  s    rL   r   z&DaskExpr.rolling_var.<locals>.<lambda>  -    T\\&K *  #%% rN   rolling_varz5Dask backend only supports `ddof=1` for `rolling_var`r   r  rK   r3  r4  r5  r  r   s    ```  rL   rF  zDaskExpr.rolling_var  a     199&&      	   JC%c***rN   c               l    |dk    r|                      fdd          S d}t          |          )Nr   c                X    |                                                                S r8  )r;  r  r=  s    rL   r   z&DaskExpr.rolling_std.<locals>.<lambda>  rE  rN   rolling_stdz5Dask backend only supports `ddof=1` for `rolling_std`rG  rH  s    ```  rL   rL  zDaskExpr.rolling_std  rI  rN   c                0    |                      d d          S )Nc                N    |                                                                  S rA   )r<  r   r   s    rL   r   zDaskExpr.sum.<locals>.<lambda>  r   rN   r<  r   rU   s    rL   r<  zDaskExpr.sum  r   rN   c                0    |                      d d          S )Nc                N    |                                                                  S rA   )countr   r   s    rL   r   z DaskExpr.count.<locals>.<lambda>  s    

0F0F0H0H rN   rQ  r   rU   s    rL   rQ  zDaskExpr.count  s    ""#H#H'RRRrN   decimalsc                6    |                      fdd          S )Nc                .    |                                S rA   )round)r   rR  s    rL   r   z DaskExpr.round.<locals>.<lambda>  s    

80D0D rN   rU  r   )rK   rR  s    `rL   rU  zDaskExpr.round  s#    ""#D#D#D#DgNNNrN   c                0    |                      d d          S )Nc                *    |                                  S rA   )uniquer   s    rL   r   z!DaskExpr.unique.<locals>.<lambda>  r  rN   rX  r   rU   s    rL   rX  zDaskExpr.unique  s    ""#=#=xHHHrN   c                0    |                      d d          S )Nc                *    |                                  S rA   dropnar   s    rL   r   z%DaskExpr.drop_nulls.<locals>.<lambda>  r  rN   
drop_nullsr   rU   s    rL   r]  zDaskExpr.drop_nulls  s    ""#=#=|LLLrN   c                0    |                      d d          S )Nc                *    |                                  S rA   )absr   s    rL   r   zDaskExpr.abs.<locals>.<lambda>  s    

 rN   r`  r   rU   s    rL   r`  zDaskExpr.abs  s    ""#:#:EBBBrN   c                0    |                      d d          S )Nc                X    |                      d ddd                                           S )NTF)axisskipnasplit_everyout)allr   r   s    rL   r   zDaskExpr.all.<locals>.<lambda>  s.    $Et "  ikk rN   rg  r   rU   s    rL   rg  zDaskExpr.all  s)    ""  	
 
 	
rN   c                0    |                      d d          S )Nc                V    |                      ddd                                          S )Nr   TF)rc  rd  re  )anyr   r   s    rL   r   zDaskExpr.any.<locals>.<lambda>  s$    q5IISSUU rN   rj  r   rU   s    rL   rj  zDaskExpr.any  s#    ""UU
 
 	
rN   r   Self | NonNestedLiteralstrategyFillNullStrategy | Nonelimit
int | Nonec                D    dfd}|                      |d          S )Nr   r   r>   c                    |                                }n2dk    r|                               n|                               }|S )Nforward)rn  )fillnaffillbfill)r   res_serrn  rl  r   s     rL   rd   z DaskExpr.fill_null.<locals>.func  s\     ++e,,  9,, JJUJ+++%00 
 NrN   rs  r   r   r>   r   r   )rK   r   rl  rn  rd   s    ``` rL   	fill_nullzDaskExpr.fill_null  sE    		 		 		 		 		 		 		 		 ""4222rN   lower_bound.Self | NumericLiteral | TemporalLiteral | Noneupper_boundc                6    |                      d d||          S )Nc                0    |                      ||          S )N)lowerupper)clip)r   ry  r{  s      rL   r   zDaskExpr.clip.<locals>.<lambda>  s    499! 4= 4 4 rN   r  )ry  r{  r   )rK   ry  r{  s      rL   r  zDaskExpr.clip  s6    
 ""  ## # 
 
 	
rN   c                0    |                      d d          S )Nc                *    |                                  S rA   )diffr   s    rL   r   zDaskExpr.diff.<locals>.<lambda>      		 rN   r  r   rU   s    rL   r  zDaskExpr.diff  s    ""#;#;VDDDrN   c                0    |                      d d          S )Nc                R    |                      d                                          S )NFr[  )nuniquer   r   s    rL   r   z#DaskExpr.n_unique.<locals>.<lambda>  s     U33==?? rN   n_uniquer   rU   s    rL   r  zDaskExpr.n_unique  s"    ""??
 
 	
rN   c                0    |                      d d          S )Nc                *    |                                  S rA   )r#  r   s    rL   r   z"DaskExpr.is_null.<locals>.<lambda>  r  rN   is_nullr   rU   s    rL   r  zDaskExpr.is_null  s    ""#;#;YGGGrN   c                <     d fd}                      |d          S )Nr   r   r>   c                    t          | j        j        j                  }|                                r| | k    S d| d}t          |          )Nz4`.is_nan` only supported for numeric dtypes and not z, did you mean `.is_null`?)r   r   rH   r-   r   r   )r   r   r   rK   s      rL   rd   zDaskExpr.is_nan.<locals>.func  s^    ,
DM4+? E !! $t|#jjjjC',,,rN   r  rw  r   r   s   ` rL   is_nanzDaskExpr.is_nan  s9    	- 	- 	- 	- 	- 	- ""4333rN   c                0    |                      d d          S )Nc                4    | j                                         S rA   )sizer   r   s    rL   r   zDaskExpr.len.<locals>.<lambda>  s    	0C0C0E0E rN   lenr   rU   s    rL   r  zDaskExpr.len  s    ""#E#EuMMMrN   quantilefloatinterpolationr)   c                h    |dk    rd
d}|                      |d|          S d	}t          |          )Nlinearr   r   r  r  r>   c                    | j         dk    rd}t          |          |                     |d                                          S )Nr   zK`Expr.quantile` is not supported for Dask backend with multiple partitions.dask)qmethod)npartitionsr  r  r   )r   r  r   s      rL   rd   zDaskExpr.quantile.<locals>.func  sL    #a''gC-c222}}v %  )++rN   )r  zx`higher`, `lower`, `midpoint`, `nearest` - interpolation methods are not supported by Dask. Please use `linear` instead.)r   r   r  r  r>   r   rG  )rK   r  r  rd   r   s        rL   r  zDaskExpr.quantile  sV     H$$    &&tZ(&KKK MC%c***rN   c                <     d fd}                      |d          S )Nr   r   r>   c                (   | j         }t          d|g          }t          |                                 |j        j                  }|                    |                              |di          |         }||                             |          S )N   n_bytescolumnsr   	namer   r   to_framerG   r-   groupbyaggisin)r   _name	col_tokenframefirst_distinct_indexrK   s        rL   rd   z(DaskExpr.is_first_distinct.<locals>.func  s    IE6q5'RRRI!D,A4CW E $)==#7#7#;#;Y<N#O#OPY#Z #(()=>>>rN   is_first_distinctrw  r   r   s   ` rL   r  zDaskExpr.is_first_distinct  s:    	? 	? 	? 	? 	? 	? ""4)<===rN   c                <     d fd}                      |d          S )Nr   r   r>   c                (   | j         }t          d|g          }t          |                                 |j        j                  }|                    |                              |di          |         }||                             |          S )Nr  r  r  r  )r   r  r  r  last_distinct_indexrK   s        rL   rd   z'DaskExpr.is_last_distinct.<locals>.func  s    IE6q5'RRRI!D,A4CW E #(--"6"6":":Iu;M"N"Ny"Y#(()<===rN   is_last_distinctrw  r   r   s   ` rL   r  zDaskExpr.is_last_distinct  s:    	> 	> 	> 	> 	> 	> ""4);<<<rN   c                6    dd}|                      |d          S )Nr   r   r>   c                    | j         }|                                                     |d                              d|t          f          dk    S )NFr[  r  )metar   )r  r  r  	transformr3   )r   r  s     rL   rd   z DaskExpr.is_unique.<locals>.func$  sG    IEu--655rN   	is_uniquerw  r   r   s     rL   r  zDaskExpr.is_unique#  s.    	 	 	 	 ""4555rN   c                6    |                      fdd          S )Nc                .    |                                S rA   )r  r   s    rL   r   z DaskExpr.is_in.<locals>.<lambda>0  s    		%0@0@ rN   is_inr   r   s    `rL   r  zDaskExpr.is_in/  s#    ""#@#@#@#@'JJJrN   c                0    |                      d d          S )Nc                r    |                                                                                                  S rA   )r#  r<  r   r   s    rL   r   z%DaskExpr.null_count.<locals>.<lambda>4  s$    **4466 rN   
null_countr   rU   s    rL   r  zDaskExpr.null_count2  s"    ""66
 
 	
rN   partition_bySequence[str]order_byc           	         ddl m} ssJ d fd}n                                 sd}t          |          rd	}t          |          |                               }	 |j        |         n?# t          $ r2 d
| dd                    |j                   d}t          |          d w xY wd fd}                     | j	        dz    j
        dz    j         j         j         j                  S )Nr   )PandasLikeGroupByrO   r   r>   rP   c                2      | j         ddd          S )NF)
descending
nulls_last)sort)rO   r  rK   s    rL   rd   zDaskExpr.over.<locals>.func@  s&    tGBGX%ERRRSSSrN   zOnly elementary expressions are supported for `.over` in dask.

Please see: https://narwhals-dev.github.io/narwhals/concepts/improve_group_by_operation/z4`over` with `order_by` is not yet supported in Dask.zUnsupported function: z- in `over` context.

Supported functions are z, 
c           
        t          	| g           \  }}t          j                    5  t          j        ddt                     | j                                      }dk    rQt          |          dk    rd}t          |           |j	        fi 	j
                            |d                   }n& |t          |                   j	        fi 	j
        }d d d            n# 1 swxY w Y   |                     |                    t          t!          ||                                        j        fd	|D             S )
Nignorez.*`meta` is not specified)messagecategoryr  r   z)Safety check failed, please report a bug.r   )r  c                     g | ]
}|         S rT   rT   )ra   r  result_frames     rL   rc   z/DaskExpr.over.<locals>.func.<locals>.<listcomp>r  s    ???tT*???rN   )r   warningscatch_warningsfilterwarningsUserWarningr}   r  r  AssertionErrorr  rI   r  list_with_nativerenamedictzip)
rO   output_namesaliasesgroupedr   
res_nativer  dask_function_namer  rK   s
         @rL   rd   zDaskExpr.over.<locals>.funcY  s   (I$PRTV(W(W%g,..  +  ;!,   
 !i//==G)V33|,,11"MC"0"5"55%6W%6.& &262E& &"(<?33 #
 &KWT,-?-?%@%J.& &262E& &
!              &  "%%d3|W3M3M.N.N%OO     @???w????s   B4C**C.1C.r   z->overrw   rO   r   r>   rP   )narwhals._pandas_like.group_byr  _is_elementaryr  
_leaf_name_REMAP_AGGSrs   joinrg   rC   rD   rE   rF   rG   rH   )rK   r  r  r  rd   r   r4   r  s   ```    @rL   overzDaskExpr.over7  s   DDDDDD 7	@OOOT T T T T T T T$$&& 0	@_ 
 &c*** )	@HC%c***-88>>M9%6%B=%Q"" 9 9 9\] \ \/3yy9J9V/W/W\ \ \  *#..D89@ @ @ @ @ @ @ @6 ~~+/-8"&"=#7 1M  
 
 	
s   'A5 5<B1r   r&   c                @     d fd}                      |d          S )Nr   r   r>   c                X    t          j                  }|                     |          S rA   )r   rH   r$  )r   native_dtyper   rK   s     rL   rd   zDaskExpr.cast.<locals>.func  s&    3E4=IIL;;|,,,rN   castrw  r   )rK   r   rd   s   `` rL   r  zDaskExpr.cast~  s?    	- 	- 	- 	- 	- 	- 	- ""4000rN   c                D    dd l m} |                     |j        d          S )Nr   	is_finite)
dask.arrayarrayr   isfiniterK   das     rL   r  zDaskExpr.is_finite  s,    ""2;<<<rN   basec                L    dd l m dfd}|                     |d          S )Nr   r   r   r>   c                Z                         |                                          z  S rA   )log)r   r  r  s    rL   _logzDaskExpr.log.<locals>._log  s"    66$<<"&&,,..rN   r  rw  )r  r  r   )rK   r  r  r  s    ` @rL   r  zDaskExpr.log  sQ    	/ 	/ 	/ 	/ 	/ 	/ 	/ ""4///rN   c                D    dd l m} |                     |j        d          S )Nr   exp)r  r  r   r  r  s     rL   r  zDaskExpr.exp  s,    ""265111rN   r   c                     t          |           S rA   r   rU   s    rL   r5   zDaskExpr.str  s    &t,,,rN   r   c                     t          |           S rA   r   rU   s    rL   dtzDaskExpr.dt  s    (...rN   )r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r#   r/   r=   r>   r?   r  )r>   r?   )r>   r!   )rZ   r[   r>   r   )
rj   rk   rl   r7   rm   r$   r4   r5   r>   r   )ry   r3   rm   r$   r>   r   )ri   N)
r   r5   r/   r=   r0   r   r   r   r>   r   )rd   r9   r>   r   )r   r   r>   r   )r   r,   r>   r   )r   r   r>   r   )r>   r   )r  r3   r>   r   )r  r3   r>   r   )r  r  r>   r   )r3  r3   r4  r3   r5  r  r>   r   )
r3  r3   r4  r3   r5  r  r  r3   r>   r   )rR  r3   r>   r   )r   rk  rl  rm  rn  ro  r>   r   )ry  rz  r{  rz  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   )Z__name__
__module____qualname__r   r   r-   __annotations__rM   rR   rV   rY   rh   classmethodrx   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  r  r  r  r  r  r%  r)  r.  r2  r>  rB  rF  rL  r<  rQ  rU  rX  r]  r`  rg  rj  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  propertyr5   r  r   r  structrank_alias_nativewindow_functionrT   rN   rL   r,   r,   +   s         '5&9O9999 .23 3 3 3 3 3,    -,,,[ [ [ [
 
 
 
"   
 
 
 
 
 [
: 
 
 
 [
& -1
 
 
 
 
@

 

 

 


 
 
 


 
 
 

   

 
 
 


 
 
 

   

 
 
 

   

 
 
 

   

 
 
 

   

 
 
 


 
 
 


 
 
 


 
 
 


 
 
 


 
 
 


 
 
 


 
 
 

Q Q Q QQ Q Q Q
3 
3 
3 
3O O O OO O O O
 
 
 

 
 
 
Q Q Q QH H H HJ J J J
 
 
 
J J J JJ J J JL L L L
 
 
 

 
 
 
+ + + ++ + + +O O O OS S S SO O O OI I I IM M M MC C C C
 
 
 

 
 
 
3 3 3 3&
 
 
 
E E E E
 
 
 

H H H H
4 
4 
4 
4N N N N+ + + +$
> 
> 
> 
>
= 
= 
= 
=
6 
6 
6 
6K K K K
 
 
 

E
 E
 E
 E
N1 1 1 1= = = =
0 0 0 02 2 2 2
 - - - X- / / / X/ ?D_F?D#O%%M%o''OOOrN   r,   )r   r   ):
__future__r   r  typingr   r   r   r   r   narwhals._compliantr	   narwhals._compliant.exprr
   narwhals._dask.expr_dtr   narwhals._dask.expr_strr   narwhals._dask.utilsr   r   r   narwhals._expression_parsingr   r   narwhals._pandas_like.utilsr   narwhals._utilsr   r   r   r   r   dask.dataframe.dask_expr	dataframe	dask_exprdxtyping_extensionsr   narwhals._compliant.typingr   r   r   r   narwhals._dask.dataframer   rX   r!   r"   r#   r$   narwhals.typingr%   r&   r'   r(   r)   r*   r,   rT   rN   rL   <module>r     s   " " " " " "  B B B B B B B B B B B B B B ( ( ( ( ( ( 6 6 6 6 6 6 < < < < < < ; ; ; ; ; ;         
 U T T T T T T T @ @ @ @ @ @         
 6 5 5 5 5 5 )))))))))&&&&&&ZZZZZZZZZZZZ666666666666CCCCCCCC55555555               x	( x	( x	( x	( x	()*23x	( x	( x	( x	( x	(rN   