
    Lpj>                       % S SK Jr  S SKrS SKJrJrJrJr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JrJrJrJr  S S	KJr  S S
KJrJrJrJr  \(       ar  S SKJrJ r J!r!J"r"  S SKJ#r#  S SK$J%r%  S SK&J'r'J(r(  S SK)J*r*  S SK+J,r,  S SK-J.r.J/r/J0r0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7  S SKJ8r8  S SK9J:r:J;r;J<r<J=r=  \S   r>S\?S'   \1\3\%4   r@\,\%   rA " S S\S   5      rBg)    )annotationsN)TYPE_CHECKINGAnyClassVarLiteralcastSparkLikeExprDateTimeNamespaceSparkLikeExprListNamespaceSparkLikeExprStringNamespaceSparkLikeExprStructNamespace)import_functionsimport_native_dtypesimport_windownarwhals_to_native_dtypetrue_divide)SQLExpr)
NO_DEFAULTImplementationVersionextend_bool)CallableIteratorMappingSequence)	TypeAlias)Column)Window
WindowSpec)Self)WindowInputs)
AliasNames	EvalNames
EvalSeriesWindowFunction)SparkLikeLazyFrameSparkLikeNamespace)	NoDefault)_LimitedContext)FillNullStrategy	IntoDType
RankMethodRollingInterpolationMethod)rank
dense_rank
row_numberr   NativeRankMethodc                     \ rS rSr%  S1             S2S jjrSSSSSS.rS\S	'   S3S
 jr    S4SSS.               S5S jjjrS6S jr	S6S jr
S7S jrS8S jr\S 5       r\S 5       r\S9S j5       rSSS.       S:S jjrS;S jrS<S jr\S=S j5       r\        S>S j5       r\S?S j5       rS@S jrS@S jrS@S jrS@S jrS8S jrS8S jrSAS  jrS8S! jrS8S" jr S8S# jr!SBS$ jr"S8S% jr#S8S& jr$S8S' jr%S8S( jr&        SCS) jr'          SDS* jr(\SES+ j5       r)\SFS, j5       r*\SGS- j5       r+\SHS. j5       r,      SIS/ jr-S0r.g)JSparkLikeExpr3   Nc               L    Xl         X0l        X@l        XPl        X`l        X l        g N)_call_evaluate_output_names_alias_output_names_version_implementation_window_function)selfcallwindow_functionevaluate_output_namesalias_output_namesversionimplementations          U/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_spark_like/expr.py__init__SparkLikeExpr.__init__4   s&     
&;##5 -<K    r2   r3   r4   )minmaxaveragedenseordinalz/ClassVar[Mapping[RankMethod, NativeRankMethod]]_REMAP_RANK_METHODc                8    U R                   R                  S5      $ N*_FcountrA   s    rH   _count_starSparkLikeExpr._count_starM   s    ww}}S!!rK   
descending
nulls_lastc               b   U R                   " U6 nU(       a  UR                  " U R                  " X6US.66 nUb  Ub  UR                  XE5      nORUb'  UR                  U R                  R
                  U5      nO(Ub%  UR                  X@R                  R                  5      nUR                  U5      $ )Nr[   )partition_byorderBy_sortrowsBetween_WindowunboundedPrecedingunboundedFollowingover)	rA   exprr_   order_by
rows_startrows_endr\   r]   windows	            rH   _window_expression SparkLikeExpr._window_expressionP   s     ""L1^^XTF !h&:''
=F!''(G(GRF#''
LL4S4STFyy  rK   c                    Sn[        U5      e)Nz%`first` is not supported for PySpark.NotImplementedErrorrA   rg   rh   msgs       rH   _firstSparkLikeExpr._firsth   s    5!#&&rK   c                    Sn[        U5      e)Nz$`last` is not supported for PySpark.ro   rq   s       rH   _lastSparkLikeExpr._lastm   s    4!#&&rK   c               4    U R                   R                  XS9$ )NignoreNulls)rV   	any_value)rA   rg   ignore_nullss      rH   
_any_valueSparkLikeExpr._any_valuer   s    ww   @@rK   c                Z    U R                  U R                  R                  S5      // 5      $ )N   )rf   rV   litrX   s    rH   	broadcastSparkLikeExpr.broadcastu   s"    yy$''++a.)2..rK   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )	functions)r   sqlframe.baser   r   r?   )rA   r   s     rH   rV   SparkLikeExpr._Fx   s!    =/ 4 455rK   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )types)r   r   r   r   r?   )rA   r   s     rH   _native_dtypesSparkLikeExpr._native_dtypes   s     =+L#D$8$899rK   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )r!   )r   sqlframe.base.windowr!   r   r?   )rA   r!   s     rH   rc   SparkLikeExpr._Window   s     =3MT1122rK   c             '  ,  ^#    U R                   n[        U5      n[        U=(       d    SU5      n[        U=(       d    SU5      nUR                  UR                  UR
                  UR                  S.mU4S j[        X1USS9 5        S h  vN   g  N7f)NF))FF)FT)TF)TTc              3  B   >#    U  H  u  pnTX#4   " U5      v   M     g 7fr:    ).0col_desc_nulls_lastmappings       rH   	<genexpr>&SparkLikeExpr._sort.<locals>.<genexpr>   s-      
+Y'K U()#..+Ys   Tstrict)rV   lenr   asc_nulls_firstasc_nulls_lastdesc_nulls_firstdesc_nulls_lastzip)rA   r\   r]   colsFnr   s         @rH   ra   SparkLikeExpr._sort   s      GGI !4ua8
 !4ua8
--++--++	

+.tTX+Y
 	
 	
s   B	BBBc                z    U R                   R                  " U=(       d    U R                  R                  S5      /6 $ )zGWraps `Window().partitionBy`, with default and `WindowInputs` handling.r   )rc   partitionByrV   r   )rA   r   s     rH   r_   SparkLikeExpr.partition_by   s+    ||'')A$''++a.1ABBrK   c                D    SSK Jn  U" U R                  U R                  S9$ )Nr   r*   )rF   rG   )narwhals._spark_like.namespacer+   r>   r?   )rA   r+   s     rH   __narwhals_namespace__$SparkLikeExpr.__narwhals_namespace__   s!    E!MM$2F2F
 	
rK   c                $    UR                  U5      $ r:   )alias)clsrg   names      rH   _alias_nativeSparkLikeExpr._alias_native   s    zz$rK   c              P   ^ SU4S jjnU " UTS UR                   UR                  S9$ )Nc                p   > T" U 5       Vs/ s H  oR                   R                  U5      PM     sn$ s  snf r:   )rV   r   )dfcol_nameevaluate_column_namess     rH   func-SparkLikeExpr.from_column_names.<locals>.func   s-    8Mb8QR8QHEEIIh'8QRRRs   $3rD   rE   rF   rG   r   r)   returnzlist[Column])r>   r?   )r   r   contextr   s    `  rH   from_column_namesSparkLikeExpr.from_column_names   s3    	S "7#$$"22
 	
rK   c               n   ^ SU4S jjnU " UU R                  T5      S UR                  UR                  S9$ )Nc                   > U R                   nT Vs/ s H  o R                  R                  X   5      PM!     sn$ s  snf r:   )columnsrV   r   )r   r   icolumn_indicess      rH   r   /SparkLikeExpr.from_column_indices.<locals>.func   s1    jjG3AB>aEEIIgj)>BBBs   &;r   r   )_eval_names_indicesr>   r?   )r   r   r   r   s     ` rH   from_column_indices!SparkLikeExpr.from_column_indices   s>    	C "%"9"9."I#$$"22
 	
rK   c                6   ^  SU 4S jjnT R                  X!5      $ )Nc                0   > [        TR                  X5      $ r:   r   rV   rg   otherrA   s     rH   _truediv+SparkLikeExpr.__truediv__.<locals>._truediv   s    tww44rK   rg   r    r   r    r   r    _with_binary)rA   r   r   s   `  rH   __truediv__SparkLikeExpr.__truediv__   s    	5   11rK   c                T   ^  SU 4S jjnT R                  X!5      R                  S5      $ )Nc                0   > [        TR                  X5      $ r:   r   r   s     rH   	_rtruediv-SparkLikeExpr.__rtruediv__.<locals>._rtruediv   s    tww44rK   literalr   r   r   )rA   r   r   s   `  rH   __rtruediv__SparkLikeExpr.__rtruediv__   s&    	5   288CCrK   c                6   ^  SU 4S jjnT R                  X!5      $ )Nc           
        > TR                   nUR                  XR                  S5      :g  UR                  [	        X U5      5      5      R                  UR                  S 5      5      $ Nr   rV   whenr   floorr   	otherwiserg   r   r   rA   s      rH   	_floordiv-SparkLikeExpr.__floordiv__.<locals>._floordiv   sO    A66q!177;q+F#Gid$%rK   r   r   )rA   r   r   s   `  rH   __floordiv__SparkLikeExpr.__floordiv__   s    	%   22rK   c                T   ^  SU 4S jjnT R                  X!5      R                  S5      $ )Nc           
        > TR                   nUR                  XR                  S5      :g  UR                  [	        X!U 5      5      5      R                  UR                  S 5      5      $ r   r   r   s      rH   
_rfloordiv/SparkLikeExpr.__rfloordiv__.<locals>._rfloordiv   sO    A66a !''+a*E"Fid$%rK   r   r   r   )rA   r   r   s   `  rH   __rfloordiv__SparkLikeExpr.__rfloordiv__   s&    	%   399)DDrK   c                X    [        S[        R                  5      nU R                  U5      $ NzCallable[..., Column])r   operatorinvert_with_elementwise)rA   r   s     rH   
__invert__SparkLikeExpr.__invert__   s$    -x?%%f--rK   c                X    [        S[        R                  5      nU R                  U5      $ r   )r   r   negr   )rA   r   s     rH   __neg__SparkLikeExpr.__neg__   s$    *HLL9%%c**rK   c           	        ^ ^ SUU 4S jjn      SUU 4S jjnT R                  UUT R                  T R                  T R                  T R                  S9$ )Nc                   > [        TTR                  TR                  U R                  R                  5      nT" U 5       Vs/ s H  o"R                  U5      PM     sn$ s  snf r:   )r   r>   r   nativesparkSessionr   )r   spark_dtyperg   dtyperA   s      rH   r    SparkLikeExpr.cast.<locals>.func   sO    2t}}d&9&9299;Q;QK 8<Bx@xtIIk*x@@@s   Ac                   > [        TTR                  TR                  U R                  R                  5      nTR                  X5       Vs/ s H  o3R                  U5      PM     sn$ s  snf r:   )r   r>   r   r   r   rC   r   )r   inputsr   rg   r   rA   s       rH   window_f$SparkLikeExpr.cast.<locals>.window_f  sZ     3t}}d&9&9299;Q;QK 8<7K7KB7WX7WtIIk*7WXXXs   A(r   )r   r)   r   Sequence[Column]r   r)   r  SparkWindowInputsr   r  )	__class__r<   r=   r>   r?   )rA   r   r   r  s   ``  rH   r   SparkLikeExpr.cast   sv    	A 	A	Y"	Y,=	Y	Y 	Y ~~"&"="=#77MM//  
 	
rK   c                6   ^  SU 4S jjnT R                  U5      $ )Nc                0  > TR                   [        R                  [        R                  1;   aM  [        R                  R	                  5       S:  a+  TR
                  R                  U R                  S5      S5      $ TR
                  R                  U 5      $ )N)      doubleg      ?)	r?   r   PYSPARKPYSPARK_CONNECT_backend_versionrV   percentile_approxr   medianrg   rA   s    rH   _median%SparkLikeExpr.median.<locals>._median  st    ##&&..(  !((99;fDww0081DcJJ77>>$''rK   rg   r    r   r    _with_callable)rA   r  s   ` rH   r  SparkLikeExpr.median  s    	( ""7++rK   c                6   ^  SU 4S jjnT R                  U5      $ )Nc                l   > TR                   R                  TR                   R                  U 5      5      $ r:   )rV   count_ifisnullr  s    rH   _null_count-SparkLikeExpr.null_count.<locals>._null_count!  s%    77##DGGNN4$899rK   r  r  )rA   r  s   ` rH   
null_countSparkLikeExpr.null_count   s    	: "";//rK   c                6   ^  SU 4S jjnT R                  U5      $ )Nc                f  > TR                   R                  U 5      ) U TR                   R                  [        S5      5      :g  -  U TR                   R                  [        S5      5      :g  -  nTR                   R	                  TR                   R                  U 5      ) U5      R                  S 5      $ )Ninfz-inf)rV   isnanr   floatr   r  r   )rg   is_finite_conditionrA   s     rH   
_is_finite+SparkLikeExpr.is_finite.<locals>._is_finite'  s     t$$477;;uU|446477;;uV}557  
 77<<!5 57JKUU rK   r  r   )rA   r(  s   ` rH   	is_finiteSparkLikeExpr.is_finite&  s    
	 %%j11rK   c                r   ^ ^ U Vs/ s H	  o"c  M  UPM     snmSU U4S jjnT R                  U5      $ s  snf )Nc                   > T(       a  U R                  T5      OTR                  R                  S5      nTR                  R                  TR                  R	                  U 5      S 5      R                  U5      $ )NF)isinrV   r   r   r  r   )rg   matchesrA   valuess     rH   _is_in#SparkLikeExpr.is_in.<locals>._is_in8  sO    +1dii'tww{{57IG77<<t 4d;EEgNNrK   r  r*  )rA   r   vr2  r1  s   `   @rH   is_inSparkLikeExpr.is_in5  s;    "4U!U4	O 	O %%f-- 5s   44c                6   ^  SU 4S jjnT R                  U5      $ )Nc                :   > TR                   R                  S5      $ rS   rU   )_exprrA   s    rH   _lenSparkLikeExpr.len.<locals>._len?  s    77==%%rK   )r9  r    r   r    r  )rA   r:  s   ` rH   r   SparkLikeExpr.len>  s    	& ""4((rK   c                L    U R                  U R                  R                  5      $ r:   )r  rV   skewnessrX   s    rH   skewSparkLikeExpr.skewE      ""477#3#344rK   c                L    U R                  U R                  R                  5      $ r:   )r  rV   kurtosisrX   s    rH   rC  SparkLikeExpr.kurtosisH  rA  rK   c                6   ^  SU 4S jjnT R                  U5      $ )Nc                   > TR                   R                  TR                   R                  U 5      S 5      R                  TR                   R	                  U 5      5      $ r:   )rV   r   r  r   r%  r  s    rH   _is_nan%SparkLikeExpr.is_nan.<locals>._is_nanL  s>    77<<t 4d;EEdggmmTXFYZZrK   r  r*  )rA   rG  s   ` rH   is_nanSparkLikeExpr.is_nanK  s    	[ %%g..rK   c                   ^ ^^ Tb!        SUU U4S jjnT R                  U5      $ SU 4S jjnUc   eT R                  USU0S9$ )Nc           
     4  > TS:X  a  TR                   R                  OTR                   R                  nTS:X  a3  Tc  TR                  R                  OT* nTR                  R
                  nO1TR                  R
                  nTc  TR                  R                  OTnT" U 5       Vs/ s Hc  nU" USS9R                  TR                  " UR                  6 R                  " TR                  " UR                  6 6 R                  X45      5      PMe     sn$ s  snf )NforwardTry   )rV   
last_valuefirst_valuerc   rd   
currentRowre   rf   r_   r`   ra   rh   rb   )	r   r  fnstartendrg   limitrA   strategys	         rH   _fill_with_strategy4SparkLikeExpr.fill_null.<locals>._fill_with_strategyV  s     ,4y+@TWW''dggFYFYy(?D}DLL;;SXRXE,,11C LL33E=B]$,,99PUC !%R !) t.33))6+>+>? !"&**foo">@$U0
 !)  s   (A*Dvaluec                :   > TR                   R                  X5      $ r:   )rV   ifnull)rg   rX  rA   s     rH   _fill_constant/SparkLikeExpr.fill_null.<locals>._fill_constantk  s    77>>$..rK   )expression_argsr  )rg   r    rX  r    r   r    )_with_window_functionr   )rA   rX  rU  rT  rV  r[  s   ` ``  rH   	fill_nullSparkLikeExpr.fill_nullQ  sp     &0A! & --.ABB	/    %%nwPUFV%WWrK   c          	       ^ ^^^
^ T[         L a  Sn[        U5      eT R                  [        R                  L a  ST R                   S3n[        U5      eSSKJn  T R                  m
[        [        X#SS95      nT
R                  U" UR                  5       6  Vs/ s H  nT
R                  U5      PM     sn5      mS
U
UUUU 4S jjn	T R                  U	S T R                  T R                   T R"                  T R                  S	9$ s  snf )NzU`replace_strict` requires an explicit value for `default` for any spark-like backend.z.`replace_strict` is not (yet) implemented for .r   )chainFr   c           
       > U R                  T5      nT" U 5       Vs/ s HF  nTR                  TR                  TR                  T	5      U5      T	U   5      R	                  U5      PMH     nnT
(       aY  U R
                  R                  n[        T
TR                  TR                  U5      nU Vs/ s H  ofR                  U5      PM     sn$ U$ s  snf s  snf r:   )_evaluate_single_output_exprr   array_containsmap_keysr   r   r   r   r>   r   r   )r   default_colrg   resultssessionr   resultr   defaultmapping_exprreturn_dtyperA   s          rH   r   *SparkLikeExpr.replace_strict.<locals>.func  s    99'BK !H	 %D $$QZZ%=tDlSWFX)K() %	   ))006 $--1D1Dg @GGwVK0wGGN Hs   AC/Cr   r   )r   
ValueErrorr?   r   r  rp   	itertoolsrc  rV   dictr   
create_mapitemsr   r  r<   r=   r>   )rA   rl  oldnewrn  rr   rc  r   xr   r   rm  s   ``  `     @@rH   replace_strictSparkLikeExpr.replace_strictq  s     j iCS/!>#A#AAB4CWCWBXXYZC%c**#GGs3E23||ugmmo7N$O7N!QUU1X7N$OP	 	" ~~"&"="=#77MM//  
 	
' %Ps   Dc                    [        U 5      $ r:   r   rX   s    rH   strSparkLikeExpr.str      +D11rK   c                    [        U 5      $ r:   r	   rX   s    rH   dtSparkLikeExpr.dt  s    -d33rK   c                    [        U 5      $ r:   r   rX   s    rH   listSparkLikeExpr.list  s    )$//rK   c                    [        U 5      $ r:   r   rX   s    rH   structSparkLikeExpr.struct  r}  rK   c                `   ^ ^ US:w  a  Sn[        U5      eSUU 4S jjnT R                  U5      $ )NlinearzJOnly linear interpolation methods are supported for PySpark-like quantile.c                <   > TR                   R                  U T5      $ r:   )rV   
percentile)rg   quantilerA   s    rH   	_quantile)SparkLikeExpr.quantile.<locals>._quantile  s    77%%dH55rK   r  )rp   r  )rA   r  interpolationrr   r  s   ``   rH   r  SparkLikeExpr.quantile  s:     H$^C%c**	6 	6 ""9--rK   )r=   r;   r<   r?   r>   r@   r:   )rB   z&EvalSeries[SparkLikeLazyFrame, Column]rC   zSparkWindowFunction | NonerD   EvalNames[SparkLikeLazyFrame]rE   zAliasNames | NonerF   r   rG   r   r   None)r   r    )r   r   NN)rg   r    r_   Sequence[str | Column]rh   r  ri   
int | Nonerj   r  r\   Sequence[bool] | Noner]   r  r   r    )rg   r    rh   r{  r   r    )rg   r    r|   boolr   r    )r   r#   )r   ztype[Window])r   Column | strr\   r  r]   r  r   zIterator[Column])r   r  r   r"   )r   r+   )rg   r    r   r{  r   r    )r   z
type[Self]r   r  r   r-   r   r#   )r   intr   r-   r   r#   )r   r#   r   r#   )r   r/   r   r#   )r   Sequence[Any]r   r#   )rX  zSelf | NonerU  zFillNullStrategy | NonerT  r  r   r#   )
rl  zSparkLikeExpr | NoDefaultru  r  rv  r  rn  zIntoDType | Noner   r#   )r   r   )r   r
   )r   r   )r   r   )r  r&  r  r1   r   r#   )/__name__
__module____qualname____firstlineno__rI   rQ   __annotations__rY   rl   rs   rv   r}   r   propertyrV   r   rc   ra   r_   r   classmethodr   r   r   r   r   r   r   r   r   r   r  r   r+  r5  r   r?  rC  rI  r_  rx  r{  r  r  r  r  __static_attributes__r   rK   rH   r7   r7   3   s    7;L4L 4L
  =L .L L 'L 
L$ KG " 02+-!%#! -1,0!! -! )	!
 ! ! *! *! 
!0'
'
A/ 6 6 : : 3 3 -1,0	

 *
 *	

 

*C
     

<

 !
 

 
$ 
 
2D3E.+
0,02.)55/X X,CXLVX	X@/
*/
 /
 	/
 '/
 
/
b 2 2 4 4 0 0 2 2
.
..H
.	
.rK   r7   )r)   r    )C
__future__r   r   typingr   r   r   r   r   narwhals._spark_like.expr_dtr
   narwhals._spark_like.expr_listr   narwhals._spark_like.expr_strr    narwhals._spark_like.expr_structr   narwhals._spark_like.utilsr   r   r   r   r   narwhals._sql.exprr   narwhals._utilsr   r   r   r   collections.abcr   r   r   r   r   sqlframe.base.columnr    r   r!   r"   typing_extensionsr#   narwhals._compliantr$   narwhals._compliant.typingr%   r&   r'   r(   narwhals._spark_like.dataframer)   r   r+   narwhals._typingr,   r-   narwhals.typingr.   r/   r0   r1   r5   r  SparkWindowFunctionr  r7   r   rK   rH   <module>r     s    "  > > G E F I  ' L LEE +7&0  BA*/  #**L"MiM();V)CD$V,I.G:; I.rK   