
    hf                       S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   \(       ai  S SK!J"s  J#r$  S SK%J&r&  S SK'J(r(  S SK'J)r)  S SK'J*r*  S SK+J,r,  S SK-J.r.  S SKJr  S SKJ/r/  S SK0J1r1  S SK2J3r3  S S K2J4r4  S S!K2J5r5  S S"K2J6r6  S S#K2J7r7  S S$KJ8r8  S S%KJ9r9   " S& S'\
S(   \S(   5      r:g))    )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)ColumnNotFoundErrorInvalidOperationError)Implementation)generate_temporary_column_name)not_implemented)Self)
AliasNames)	EvalNames)
EvalSeries)DaskLazyFrameDaskNamespace)ExprMetadata)DType)FillNullStrategy)NonNestedLiteral)NumericLiteral)RollingInterpolationMethod)TemporalLiteral)Version)_FullContextc                  8   \ rS rSr% \R
                  rS\S'   SS.                 SSS jjrSTS jr	SUS jr
SVS	 jrSWS
 jr\SS.         SXS jj5       r\        SYS j5       r  SZ         S[S jjrS\S jrS]S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS^S jrS_S jrS_S jr S`S  jr!S_S! jr"S_S" jr#S_S# jr$S`S$ jr%S_S% jr&SaS& jr'SaS' jr(SaS( jr)SaS) jr*SaS* jr+SbS+ jr,SbS, jr-SaS- jr.ScS. jr/SdS/ jr0SdS0 jr1SdS1 jr2SdS2 jr3SdS3 jr4SeS4 jr5SeS5 jr6          SfS6 jr7          SfS7 jr8SaS8 jr9SaS9 jr:SgS: jr;SaS; jr<SaS< jr=SaS= jr>SaS> jr?SaS? jr@        ShS@ jrA      SiSA jrBSaSB jrCSaSC jrDSaSD jrESaSE jrFSaSF jrG      SjSG jrHSaSH jrISaSI jrJSaSJ jrKS^SK jrLSaSL jrM      SkSM jrNSlSN jrOSaSO jrP\QSmSP j5       rR\QSnSQ j5       rS\T" 5       rU\T" 5       rV\T" 5       rWSRrXg)oDaskExpr/   r   _implementationNcall_kwargsc                   Xl         X l        X0l        X@l        XPl        X`l        Xpl        U=(       d    0 U l        S U l        g N)	_call_depth_function_name_evaluate_output_names_alias_output_names_backend_version_version_call_kwargs	_metadata)	selfcalldepthfunction_nameevaluate_output_namesalias_output_namesbackend_versionversionr0   s	            E/var/www/html/env/lib/python3.13/site-packages/narwhals/_dask/expr.py__init__DaskExpr.__init__5   s?     
+&;##5  /'-2.2    c                $    U R                  U5      $ r2   )r3   )r<   dfs     rD   __call__DaskExpr.__call__M   s    zz"~rG   c                    g r2    r<   s    rD   __narwhals_expr__DaskExpr.__narwhals_expr__P   s    rG   c                D    SSK Jn  U" U R                  U R                  S9$ )Nr   r    )rB   rC   )narwhals._dask.namespacer!   r8   r9   )r<   r!   s     rD   __narwhals_namespace__DaskExpr.__narwhals_namespace__R   s    :T-B-BDMMZZrG   c                   ^  SU 4S jjnT R                  UT R                  T R                  T R                  T R                  T R
                  T R                  T R                  S9$ )Nc                D   > T" U 5       Vs/ s H  oS   PM	     sn$ s  snf )Nr   rM   )rI   resultr<   s     rD   func DaskExpr.broadcast.<locals>.funcY   s!    ,0H5H&1IH555s   r>   r?   r@   rA   rB   rC   r0   rI   r   returnzlist[dx.Series])	__class__r4   r5   r6   r7   r8   r9   r:   )r<   kindrX   s   `  rD   	broadcastDaskExpr.broadcastX   s^    	6 ~~++--"&"="=#77 11MM))  	
 		
rG    )r?   c         
     T   ^ SU4S jjnU " USUTS UR                   UR                  S9$ )Nc                  >  T" U 5       Vs/ s H  nU R                   U   PM     sn$ s  snf ! [         aT  nT" U 5       Vs/ s H  o3U R                  ;  d  M  UPM     Os  snf nn[        R                  " UU R                  S9UeS nAff = f)N)missing_columnsavailable_columns)_native_frameKeyErrorcolumnsr   'from_missing_and_available_column_names)rI   column_nameexrd   evaluate_column_namess        rD   rX   (DaskExpr.from_column_names.<locals>.funcp   s     (=R'@'@ $$[1'@    4R8#8!RZZ<OA8# # *QQ$3&(jj 	s2   
. ). . 
B
BA A (BBr   r>   r?   r@   rA   rB   rC   r[   r8   r9   )clsrm   contextr?   rX   s    `   rD   from_column_namesDaskExpr.from_column_namesg   s8    	 '"7##44$$
 	
rG   c          
     \   ^ SU4S jjnU " USSU4S jS UR                   UR                  S9$ )Nc                h   > T Vs/ s H  oR                   R                  S S 2U4   PM!     sn$ s  snf r2   )rf   iloc)rI   column_indexcolumn_indicess     rD   rX   *DaskExpr.from_column_indices.<locals>.func   s7    KYKY<  %%ao6>  s   &/r   nthc                L   > T Vs/ s H  oR                   U   PM     sn$ s  snf r2   rh   )rI   iry   s     rD   <lambda>.DaskExpr.from_column_indices.<locals>.<lambda>   s    ^-T^jjm^-T-Ts   !ro   r[   rp   )rq   rr   ry   rX   s     ` rD   from_column_indicesDaskExpr.from_column_indices   s8    	
 "T##44$$
 	
rG   c                  ^ ^^ SUUU 4S jjnT R                  UT R                  S-   T R                   SU 3T R                  T R                  T R
                  T R                  US9$ )Nc           	        > / nT
R                  U 5      nT	R                  5        VVs0 s H  u  p4U[        X5      _M     nnnU H  nT" U40 UD6nUR                  U5        M     U$ s  snnf r2   )r3   itemsr   append)rI   native_resultsnative_series_listkeyvalueother_native_seriesnative_seriesresult_nativer=   expressifiable_argsr<   s           rD   rX   %DaskExpr._with_callable.<locals>.func   s    .0N!%B #6";";"=#"=JC (33"=   # "4 $] J6I J%%m4 "4 "!#s   A(   z->rZ   r[   )r]   r4   r5   r6   r7   r8   r9   )r<   r=   	expr_namer0   r   rX   s   ``  ` rD   _with_callableDaskExpr._with_callable   sm    
	" 
	" ~~++/!001I;?"&"="=#77 11MM#  	
 		
rG   c                   [        U 5      " U R                  U R                  U R                  U R                  UU R
                  U R                  U R                  S9$ )N)r=   r>   r?   r@   rA   rB   rC   r0   )typer3   r4   r5   r6   r8   r9   r:   r<   rX   s     rD   _with_alias_output_names!DaskExpr._with_alias_output_names   sO    Dz++--"&"="=# 11MM))	
 		
rG   c                   ^ SU4S jjnU R                  U R                  U R                  U R                  U R                  UU R
                  U R                  U R                  S9$ )Nc                H   > [        U 5      S:w  a  SU  3n[        U5      eT/$ )Nr   z:Expected function with single output, found output names: )len
ValueError)namesmsgnames     rD   rA   *DaskExpr.alias.<locals>.alias_output_names   s-    5zQRSXRYZ o%6MrG   rZ   )r   Sequence[str]r\   r   )r]   r3   r4   r5   r6   r8   r9   r:   )r<   r   rA   s    ` rD   aliasDaskExpr.alias   s\    	 ~~JJ++--"&"="=1 11MM))  	
 		
rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__add___inputothers     rD   r   "DaskExpr.__add__.<locals>.<lambda>       &.."7rG   r   r   r   r<   r   s     rD   r   DaskExpr.__add__   !    ""7% # 
 	
rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__sub__r   s     rD   r   "DaskExpr.__sub__.<locals>.<lambda>   r   rG   r   r   r   r   s     rD   r   DaskExpr.__sub__   r   rG   c                D    U R                  S SUS9R                  S5      $ )Nc                
    X-
  $ r2   rM   r   s     rD   r   #DaskExpr.__rsub__.<locals>.<lambda>       %.rG   __rsub__r   literalr   r   r   s     rD   r   DaskExpr.__rsub__   +    ""0*E # 

%	
	rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__mul__r   s     rD   r   "DaskExpr.__mul__.<locals>.<lambda>   r   rG   r   r   r   r   s     rD   r   DaskExpr.__mul__   r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__truediv__r   s     rD   r   &DaskExpr.__truediv__.<locals>.<lambda>   s    &"4"4U";rG   r   r   r   r   s     rD   r   DaskExpr.__truediv__   s"    "";]RW # 
 	
rG   c                D    U R                  S SUS9R                  S5      $ )Nc                
    X-  $ r2   rM   r   s     rD   r   'DaskExpr.__rtruediv__.<locals>.<lambda>   r   rG   __rtruediv__r   r   r   r   s     rD   r   DaskExpr.__rtruediv__   s+    ""0. # 

%	
	rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__floordiv__r   s     rD   r   'DaskExpr.__floordiv__.<locals>.<lambda>   s    &"5"5e"<rG   r   r   r   r   s     rD   r   DaskExpr.__floordiv__   s"    ""<nTY # 
 	
rG   c                D    U R                  S SUS9R                  S5      $ )Nc                
    X-  $ r2   rM   r   s     rD   r   (DaskExpr.__rfloordiv__.<locals>.<lambda>   s    %/rG   __rfloordiv__r   r   r   r   s     rD   r   DaskExpr.__rfloordiv__   s+    ""1?% # 

%	
	rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__pow__r   s     rD   r   "DaskExpr.__pow__.<locals>.<lambda>  r   rG   r   r   r   r   s     rD   r   DaskExpr.__pow__  r   rG   c                D    U R                  S SUS9R                  S5      $ )Nc                
    X-  $ r2   rM   r   s     rD   r   #DaskExpr.__rpow__.<locals>.<lambda>	  s    %-rG   __rpow__r   r   r   r   s     rD   r   DaskExpr.__rpow__  s+    ""/5 # 

%	
	rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__mod__r   s     rD   r   "DaskExpr.__mod__.<locals>.<lambda>  r   rG   r   r   r   r   s     rD   r   DaskExpr.__mod__  r   rG   c                D    U R                  S SUS9R                  S5      $ )Nc                
    X-  $ r2   rM   r   s     rD   r   #DaskExpr.__rmod__.<locals>.<lambda>  r   rG   __rmod__r   r   r   r   s     rD   r   DaskExpr.__rmod__  r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__eq__r   s     rD   r   !DaskExpr.__eq__.<locals>.<lambda>      &--"6rG   r   r   r   r   s     rD   r   DaskExpr.__eq__  !    ""6 # 
 	
rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__ne__r   s     rD   r   !DaskExpr.__ne__.<locals>.<lambda>  r   rG   r   r   r   r   s     rD   r   DaskExpr.__ne__  r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__ge__r   s     rD   r   !DaskExpr.__ge__.<locals>.<lambda>"  r   rG   r   r   r   r   s     rD   r   DaskExpr.__ge__   r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__gt__r   s     rD   r   !DaskExpr.__gt__.<locals>.<lambda>'  r   rG   r   r   r   r   s     rD   r   DaskExpr.__gt__%  r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__le__r   s     rD   r   !DaskExpr.__le__.<locals>.<lambda>,  r   rG   r  r   r   r   s     rD   r  DaskExpr.__le__*  r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__lt__r   s     rD   r   !DaskExpr.__lt__.<locals>.<lambda>1  r   rG   r	  r   r   r   s     rD   r	  DaskExpr.__lt__/  r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__and__r   s     rD   r   "DaskExpr.__and__.<locals>.<lambda>6  r   rG   r  r   r   r   s     rD   r  DaskExpr.__and__4  r   rG   c                &    U R                  S SUS9$ )Nc                $    U R                  U5      $ r2   )__or__r   s     rD   r   !DaskExpr.__or__.<locals>.<lambda>;  r   rG   r  r   r   r   s     rD   r  DaskExpr.__or__9  r   rG   c                (    U R                  S S5      $ )Nc                "    U R                  5       $ r2   )
__invert__r   s    rD   r   %DaskExpr.__invert__.<locals>.<lambda>?  s    &2C2C2ErG   r  r   rN   s    rD   r  DaskExpr.__invert__>  s    ""#E|TTrG   c                (    U R                  S S5      $ )Nc                >    U R                  5       R                  5       $ r2   )mean	to_seriesr  s    rD   r   DaskExpr.mean.<locals>.<lambda>B      &++-2I2I2KrG   r  r   rN   s    rD   r  DaskExpr.meanA      ""#KVTTrG   c                H   ^ ^ SSK Jm  SUU 4S jjnT R                  US5      $ )Nr   r   c                   > [        U R                  TR                  [        R                  5      nUR                  5       (       d
  SnT" U5      eU R                  5       R                  5       $ )Nz<`median` operation not supported for non-numeric input type.)r   dtyper9   r   DASK
is_numericmedian_approximater  )sr&  r   r   r<   s      rD   rX   DaskExpr.median.<locals>.funcG  sV    ,QWWdmm^EXEXYE##%%T+C00'')3355rG   median)r*  	dx.Seriesr\   r-  )narwhals.exceptionsr   r   )r<   rX   r   s   ` @rD   r,  DaskExpr.medianD  s%    =	6 	6 ""422rG   c                (    U R                  S S5      $ )Nc                >    U R                  5       R                  5       $ r2   )minr  r  s    rD   r   DaskExpr.min.<locals>.<lambda>Q      &**,2H2H2JrG   r2  r   rN   s    rD   r2  DaskExpr.minP      ""#JERRrG   c                (    U R                  S S5      $ )Nc                >    U R                  5       R                  5       $ r2   )maxr  r  s    rD   r   DaskExpr.max.<locals>.<lambda>T  r4  rG   r9  r   rN   s    rD   r9  DaskExpr.maxS  r6  rG   c                2   ^ U R                  U4S jSST0S9$ )Nc                >   > U R                  TS9R                  5       $ N)ddof)stdr  r   r?  s    rD   r   DaskExpr.std.<locals>.<lambda>X      6::4:0::<rG   r@  r?  r/   r   r<   r?  s    `rD   r@  DaskExpr.stdV  (    ""< # 
 	
rG   c                2   ^ U R                  U4S jSST0S9$ )Nc                >   > U R                  TS9R                  5       $ r>  )varr  rA  s    rD   r   DaskExpr.var.<locals>.<lambda>_  rC  rG   rI  r?  r/   r   rD  s    `rD   rI  DaskExpr.var]  rF  rG   c                (    U R                  S S5      $ )Nc                >    U R                  5       R                  5       $ r2   )skewr  r  s    rD   r   DaskExpr.skew.<locals>.<lambda>e  r!  rG   rN  r   rN   s    rD   rN  DaskExpr.skewd  r#  rG   c                0   ^ U R                  U4S jS5      $ )Nc                &   > U R                  T5      $ r2   )shift)r   ns    rD   r    DaskExpr.shift.<locals>.<lambda>h  s    &,,q/rG   rS  r   )r<   rT  s    `rD   rS  DaskExpr.shiftg  s    ""#A7KKrG   c               P    U(       a  Sn[        U5      eU R                  S S5      $ )Nz:`cum_sum(reverse=True)` is not supported with Dask backendc                "    U R                  5       $ r2   )cumsumr  s    rD   r   "DaskExpr.cum_sum.<locals>.<lambda>p  
    &--/rG   cum_sumNotImplementedErrorr   r<   reverser   s      rD   r\  DaskExpr.cum_sumj  s)    NC%c**""#A9MMrG   c               P    U(       a  Sn[        U5      eU R                  S S5      $ )Nz<`cum_count(reverse=True)` is not supported with Dask backendc                f    U R                  5       ) R                  [        5      R                  5       $ r2   )isnaastypeintrY  r  s    rD   r   $DaskExpr.cum_count.<locals>.<lambda>x  s     V[[]N2237>>@rG   	cum_countr]  r_  s      rD   rh  DaskExpr.cum_countr  s-    PC%c**""@+
 	
rG   c               P    U(       a  Sn[        U5      eU R                  S S5      $ )Nz:`cum_min(reverse=True)` is not supported with Dask backendc                "    U R                  5       $ r2   )cumminr  s    rD   r   "DaskExpr.cum_min.<locals>.<lambda>  r[  rG   cum_minr]  r_  s      rD   rn  DaskExpr.cum_min{  )    NC%c**""#A9MMrG   c               P    U(       a  Sn[        U5      eU R                  S S5      $ )Nz:`cum_max(reverse=True)` is not supported with Dask backendc                "    U R                  5       $ r2   )cummaxr  s    rD   r   "DaskExpr.cum_max.<locals>.<lambda>  r[  rG   cum_maxr]  r_  s      rD   ru  DaskExpr.cum_max  rp  rG   c               P    U(       a  Sn[        U5      eU R                  S S5      $ )Nz;`cum_prod(reverse=True)` is not supported with Dask backendc                "    U R                  5       $ r2   )cumprodr  s    rD   r   #DaskExpr.cum_prod.<locals>.<lambda>  s    &..2BrG   cum_prodr]  r_  s      rD   r{  DaskExpr.cum_prod  s)    OC%c**""#BJOOrG   c               8   ^^^ U R                  UUU4S jS5      $ )Nc                B   > U R                  TTTS9R                  5       $ N)windowmin_periodscenter)rollingsumr   r  min_sampleswindow_sizes    rD   r   &DaskExpr.rolling_sum.<locals>.<lambda>  s&    6>>"F * cerG   rolling_sumr   r<   r  r  r  s    ```rD   r  DaskExpr.rolling_sum  s     "" 	
 	
rG   c               8   ^^^ U R                  UUU4S jS5      $ )Nc                B   > U R                  TTTS9R                  5       $ r  )r  r  r  s    rD   r   'DaskExpr.rolling_mean.<locals>.<lambda>  s&    6>>"F * dfrG   rolling_meanr   r  s    ```rD   r  DaskExpr.rolling_mean  s     "" 	
 	
rG   c               ^   ^^^ US:X  a  U R                  UUU4S jS5      $ Sn[        U5      e)Nr   c                B   > U R                  TTTS9R                  5       $ r  )r  rI  r  s    rD   r   &DaskExpr.rolling_var.<locals>.<lambda>  &    v~~&K  .  #% rG   rolling_varz5Dask backend only supports `ddof=1` for `rolling_var`r   r^  r<   r  r  r  r?  r   s    ```  rD   r  DaskExpr.rolling_var  <     19&& 	  JC%c**rG   c               ^   ^^^ US:X  a  U R                  UUU4S jS5      $ Sn[        U5      e)Nr   c                B   > U R                  TTTS9R                  5       $ r  )r  r@  r  s    rD   r   &DaskExpr.rolling_std.<locals>.<lambda>  r  rG   rolling_stdz5Dask backend only supports `ddof=1` for `rolling_std`r  r  s    ```  rD   r  DaskExpr.rolling_std  r  rG   c                (    U R                  S S5      $ )Nc                >    U R                  5       R                  5       $ r2   )r  r  r  s    rD   r   DaskExpr.sum.<locals>.<lambda>  r4  rG   r  r   rN   s    rD   r  DaskExpr.sum  r6  rG   c                (    U R                  S S5      $ )Nc                >    U R                  5       R                  5       $ r2   )countr  r  s    rD   r    DaskExpr.count.<locals>.<lambda>  s    &,,.2J2J2LrG   r  r   rN   s    rD   r  DaskExpr.count  s    ""#LgVVrG   c                0   ^ U R                  U4S jS5      $ )Nc                &   > U R                  T5      $ r2   )round)r   decimalss    rD   r    DaskExpr.round.<locals>.<lambda>  s    &,,x2HrG   r  r   )r<   r  s    `rD   r  DaskExpr.round  s    ""#H'RRrG   c                (    U R                  S S5      $ )Nc                "    U R                  5       $ r2   )uniquer  s    rD   r   !DaskExpr.unique.<locals>.<lambda>  r[  rG   r  r   rN   s    rD   r  DaskExpr.unique  s    ""#A8LLrG   c                (    U R                  S S5      $ )Nc                "    U R                  5       $ r2   dropnar  s    rD   r   %DaskExpr.drop_nulls.<locals>.<lambda>  r[  rG   
drop_nullsr   rN   s    rD   r  DaskExpr.drop_nulls  s    ""#A<PPrG   c                (    U R                  S S5      $ )Nc                "    U R                  5       $ r2   )absr  s    rD   r   DaskExpr.abs.<locals>.<lambda>  s
    &**,rG   r  r   rN   s    rD   r  DaskExpr.abs  s    ""#>FFrG   c                (    U R                  S S5      $ )Nc                B    U R                  S SSS S9R                  5       $ )NTF)axisskipnasplit_everyout)allr  r  s    rD   r   DaskExpr.all.<locals>.<lambda>  s'    6::$Et & ikrG   r  r   rN   s    rD   r  DaskExpr.all  s    "" 	
 	
rG   c                (    U R                  S S5      $ )Nc                @    U R                  SSSS9R                  5       $ )Nr   TF)r  r  r  )anyr  r  s    rD   r   DaskExpr.any.<locals>.<lambda>  s    6::1Tu:MWWYrG   r  r   rN   s    rD   r  DaskExpr.any  s    ""Y
 	
rG   c                @   ^^^ SUUU4S jjnU R                  US5      $ )Nc                |   > Tb  U R                  T5      nU$ TS:X  a  U R                  TS9OU R                  TS9nU$ )Nforward)limit)fillnaffillbfill)r   res_serr  strategyr   s     rD   rX    DaskExpr.fill_null.<locals>.func  sR      --. N  9, LLuL-E2 
 NrG   r  r   r-  r\   r-  r   )r<   r   r  r  rX   s    ``` rD   	fill_nullDaskExpr.fill_null  s"    		 		 ""422rG   c                (    U R                  S SUUS9$ )Nc                     U R                  XS9$ )N)lowerupper)clip)r   lower_boundupper_bounds      rD   r   DaskExpr.clip.<locals>.<lambda>  s    V[[! 6A 6rG   r  )r  r  r   )r<   r  r  s      rD   r  DaskExpr.clip  s,    
 "" ## # 
 	
rG   c                (    U R                  S S5      $ )Nc                "    U R                  5       $ r2   )diffr  s    rD   r   DaskExpr.diff.<locals>.<lambda>  
    &++-rG   r  r   rN   s    rD   r  DaskExpr.diff  s    ""#?HHrG   c                (    U R                  S S5      $ )Nc                <    U R                  SS9R                  5       $ )NFr  )nuniquer  r  s    rD   r   #DaskExpr.n_unique.<locals>.<lambda>  s    6>>>7AACrG   n_uniquer   rN   s    rD   r  DaskExpr.n_unique   s    ""CZ
 	
rG   c                (    U R                  S S5      $ )Nc                "    U R                  5       $ r2   )rd  r  s    rD   r   "DaskExpr.is_null.<locals>.<lambda>  r  rG   is_nullr   rN   s    rD   r  DaskExpr.is_null  s    ""#?KKrG   c                8   ^  SU 4S jjnT R                  US5      $ )Nc                   > [        U R                  TR                  TR                  5      nUR	                  5       (       a  X :g  $ SU S3n[        U5      e)Nz4`.is_nan` only supported for numeric dtypes and not z, did you mean `.is_null`?)r   r&  r9   r.   r(  r   )r   r&  r   r<   s      rD   rX   DaskExpr.is_nan.<locals>.func	  sV    ,dmmT-A-AE !!''HOijC',,rG   r  r  r   r   s   ` rD   is_nanDaskExpr.is_nan  s    	- ""433rG   c                (    U R                  S S5      $ )Nc                6    U R                   R                  5       $ r2   )sizer  r  s    rD   r   DaskExpr.len.<locals>.<lambda>  s    &++2G2G2IrG   r   r   rN   s    rD   r   DaskExpr.len  s    ""#I5QQrG   c                T    US:X  a  SS jnU R                  USUS9$ Sn[        U5      e)Nlinearquantilec                x    U R                   S:  a  Sn[        U5      eU R                  USS9R                  5       $ )Nr   zK`Expr.quantile` is not supported for Dask backend with multiple partitions.dask)qmethod)npartitionsr^  r   r  )r   r   r   s      rD   rX   DaskExpr.quantile.<locals>.func  sB    %%)gC-c22v ' )+rG   )r   zx`higher`, `lower`, `midpoint`, `nearest` - interpolation methods are not supported by Dask. Please use `linear` instead.)r   r-  r   floatr\   r-  r  )r<   r   interpolationrX   r   s        rD   r   DaskExpr.quantile  s>     H$ &&tZ(&KK MC%c**rG   c                8   ^  SU 4S jjnT R                  US5      $ )Nc                  > U R                   n[        SU/S9n[        U R                  5       UTR                  TR
                  5      nUR                  U5      R                  US05      U   nX2   R                  U5      $ )N   n_bytesrh   r2  	r   r   r   to_framer8   r.   groupbyaggisin)r   _name	col_tokenframefirst_distinct_indexr<   s        rD   rX   (DaskExpr.is_first_distinct.<locals>.func*  s|    KKE6q5'RI!!9d.C.CTEYEYE $)==#7#;#;Y<N#OPY#Z #(()=>>rG   is_first_distinctr  r   r   s   ` rD   r  DaskExpr.is_first_distinct)  s    	? ""4)<==rG   c                8   ^  SU 4S jjnT R                  US5      $ )Nc                  > U R                   n[        SU/S9n[        U R                  5       UTR                  TR
                  5      nUR                  U5      R                  US05      U   nX2   R                  U5      $ )Nr  r  r9  r  )r   r  r  r  last_distinct_indexr<   s        rD   rX   'DaskExpr.is_last_distinct.<locals>.func6  s{    KKE6q5'RI!!9d.C.CTEYEYE #(--"6":":Iu;M"Ny"Y#(()<==rG   is_last_distinctr  r   r   s   ` rD   r  DaskExpr.is_last_distinct5  s    	> ""4);<<rG   c                0    SS jnU R                  US5      $ )Nc                    U R                   nU R                  5       R                  USS9R                  SU[        4S9S:H  $ )NFr  r  )metar   )r   r  r  	transformrf  )r   r  s     rD   rX    DaskExpr.is_unique.<locals>.funcB  sB    KKE!u-65rG   	is_uniquer  r   r   s     rD   r&  DaskExpr.is_uniqueA  s    	 ""455rG   c                0   ^ U R                  U4S jS5      $ )Nc                &   > U R                  T5      $ r2   )r  r   s    rD   r    DaskExpr.is_in.<locals>.<lambda>N  s    &++e2DrG   is_inr   r   s    `rD   r+  DaskExpr.is_inM  s    ""#DgNNrG   c                (    U R                  S S5      $ )Nc                Z    U R                  5       R                  5       R                  5       $ r2   )rd  r  r  r  s    rD   r   %DaskExpr.null_count.<locals>.<lambda>R  s    6;;=,,.88:rG   
null_countr   rN   s    rD   r0  DaskExpr.null_countP  s    "":L
 	
rG   c           
       ^ ^^^ SSK Jn  T(       d  Tc   eSUU 4S jjnOMT R                  5       (       d  Sn[        U5      eUR	                  T 5      n UR
                  U   mSUUU 4S	 jjnT R                  UT R                  S
-   T R                  S-   T R                  T R                  T R                  T R                  S9$ ! [         a/    SU SSR                  UR
                  5       S3n[        U5      S ef = f)Nr   )PandasLikeGroupByc                6   > T" U R                   " TSSS.65      $ )NF)
descending
nulls_last)sort)rI   order_byr<   s    rD   rX   DaskExpr.over.<locals>.funcb  s    BGGX%ERSSrG   zOnly elementary expressions are supported for `.over` in dask.

Please see: https://narwhals-dev.github.io/narwhals/pandas_like_concepts/improve_group_by_operation/zUnsupported function: z- in `over` context.

Supported functions are z, 
c           
       > [        T
U / 5      u  p[        R                  " 5          [        R                  " SS[        S9  U R
                  R                  T	5      nTS:X  aL  [        U5      S:w  a  Sn[        U5      eUR                  " T40 T
R                  D6R                  US   5      nO)U[        U5         R                  " T40 T
R                  D6nS S S 5        U R                  WR                  [        [!        X5      5      S95      R
                  nU Vs/ s H  ovU   PM	     sn$ ! , (       d  f       N]= fs  snf )	Nignorez.*`meta` is not specified)messagecategoryr  r   z)Safety check failed, please report a bug.r   r}   )r   warningscatch_warningsfilterwarningsUserWarningnativer  r   AssertionErrorr$  r:   r  list_with_nativerenamedictzip)rI   output_namesaliasesgroupedr   
res_nativeresult_framer   dask_function_namepartition_byr<   s           rD   rX   r9  w  s3   (I$PRTV(W%,,.++  ;!,
 !ii//=G)V3|,1"MC"0"55%,%6%6.&262C2C&"(<?3 # &-T,-?%@%J%J.&262C2C&
! /&  "%%d3|3M.N%O &  8??wtT*w??- /., @s   B1D.D?.
D<r   z->overro   rI   r   r\   zSequence[dx.Series])narwhals._pandas_like.group_byr3  _is_elementaryr^  
_leaf_name_REMAP_AGGSrg   joinr]   r4   r5   r6   r7   r8   r9   )r<   rP  r8  r3  rX   r   r?   rO  s   ```    @rD   overDaskExpr.overU  s&    	E'''T T$$&&k 
 &c**-88>M9%6%B%B=%Q"@ @6 ~~++/--8"&"="=#77 11MM  
 	
G  9 -]O <//3yy9J9V9V/W.XXZ\  *#.D89s   C 9C>c                <   ^ ^ SUU 4S jjnT R                  US5      $ )Nc                R   > [        TTR                  5      nU R                  U5      $ r2   )r   r9   re  )r   native_dtyper&  r<   s     rD   rX   DaskExpr.cast.<locals>.func  s"    3E4==IL==..rG   castr  r   )r<   r&  rX   s   `` rD   r]  DaskExpr.cast  s"    	/ 	/ ""400rG   c                F    SS K Jn  U R                  UR                  S5      $ )Nr   	is_finite)
dask.arrayarrayr   isfinite)r<   das     rD   r`  DaskExpr.is_finite  s    ""2;;<<rG   c                    [        U 5      $ r2   r   rN   s    rD   strDaskExpr.str  s    &t,,rG   c                    [        U 5      $ r2   r   rN   s    rD   dtDaskExpr.dt  s    (..rG   )	r7   r8   r3   r:   r4   r6   r5   r;   r9   )r=   z$EvalSeries[DaskLazyFrame, dx.Series]r>   rf  r?   rg  r@   EvalNames[DaskLazyFrame]rA   AliasNames | NonerB   ztuple[int, ...]rC   r)   r0   dict[str, Any] | Noner\   NonerQ  )r\   ro  )r\   r!   )r^   z/Literal[ExprKind.AGGREGATION, ExprKind.LITERAL]r\   r   )
rq   
type[Self]rm   rl  rr   r*   r?   rg  r\   r   )rq   rp  ry   rf  rr   r*   r\   r   )ra   N)
r   rg  r0   rn  r=   zCallable[..., dx.Series]r   z
Self | Anyr\   r   )rX   rm  r\   r   )r   rg  r\   r   )r   r   r\   r   )r   r,   r\   r   )r   zDaskExpr | Anyr\   r   )r\   r   )r?  rf  r\   r   )rT  rf  r\   r   )r`  boolr\   r   )r  rf  r  rf  r  rq  r\   r   )
r  rf  r  rf  r  rq  r?  rf  r\   r   )r  rf  r\   r   )r   zSelf | NonNestedLiteralr  zFillNullStrategy | Noner  z
int | Noner\   r   )r  .Self | NumericLiteral | TemporalLiteral | Noner  rr  r\   r   )r   r  r  r'   r\   r   )rP  r   r8  zSequence[str] | Noner\   r   )r&  zDType | type[DType]r\   r   )r\   r   )r\   r   )Y__name__
__module____qualname____firstlineno__r   r'  r.   __annotations__rE   rJ   rO   rS   r_   classmethodrs   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  r9  r@  rI  rN  rS  r\  rh  rn  ru  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+  r0  rW  r]  r`  propertyrg  rj  r   rE  structrank__static_attributes__rM   rG   rD   r,   r,   /   s    '5&9&9O^9 .2323 	3
 3  83 .3 )3 3 +3 
30 -[
   

7

 
 
 

 
B 

*-
8D
	
 
. -1

 
 +
 '
  *
 

@


$


































UU
3SS

ULN
NNP

++03+=A+IL+	+++03+=A+IL+	+SWSMQG

3&3 *3 	3
 
3&
C
 D
 
	
I

L
4R++.H+	+$
>
=
6O

E
#E
 'E
 
	E
N1=
 - - / / DFDrG   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   r.  r   r   narwhals.utilsr   r   r   dask.dataframe.dask_expr	dataframe	dask_exprdxtyping_extensionsr   narwhals._compliant.typingr   r   r   narwhals._dask.dataframer   rR   r!   r"   narwhals.dtypesr#   narwhals.typingr$   r%   r&   r'   r(   r)   r*   r,   rM   rG   rD   <module>r     s    "        ( 6 < ; . 4 9 1 J @ 3 5 ) 9 *))&5456659%00.:/&+C
)*23C
rG   