
    hYN                    P   % 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  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#  \(       ah  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.J0r0  S S"K.J1r1  S S#K2J3r3  S S$K4J5r5  S S%K6J7r7  S S&K8J9r9  S S'KJ:r:  S S(KJ;r;  S S)KJ<r<  S S*KJ=r=  \+\	\	\	\	\	4   r>\	r?S+\@S,'     " S- S.\S/   5      rAg)0    )annotationsN)reduce)and_)TYPE_CHECKING)Any)Iterator)Mapping)Sequenceis_native_spark_like)evaluate_exprs)import_functions)import_native_dtypes)import_window)native_to_narwhals_dtype)InvalidOperationError)CompliantDataFrame)CompliantLazyFrame)Implementation)check_column_exists)find_stacklevel)generate_temporary_column_name)import_dtypes_module)not_implemented)parse_columns_to_drop)parse_version)validate_backend_version)
ModuleType)Column)BaseDataFrameWindow)Self)	TypeAlias)TypeIs)SparkLikeExprSparkLikeLazyGroupBySparkLikeNamespace)DType)JoinStrategy)LazyUniqueKeepStrategy)Version)_FullContextr$   
Incompletec                  n   \ rS rSr          S&S jr\S 5       r\S 5       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S.S jrS/S jrS0S jr\S1S j5       r      S2S jrS3S jr    S4S jr    S4S jrS4S jrS5S jr\S6S j5       rS6S jrS7S jrS8S jrS9S 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&\'RP                  " S"5      r)\'" 5       r*\'RP                  " S#5      r+\'" 5       r,S$r-g%)ASparkLikeLazyFrame9   c                   Xl         X l        X@l        X0l        S U l        S U l        [        U R                  U R                  5        g N)_native_frame_backend_version_implementation_version_cached_schema_cached_columnsr   )selfnative_dataframebackend_versionversionimplementations        P/var/www/html/env/lib/python3.13/site-packages/narwhals/_spark_like/dataframe.py__init__SparkLikeLazyFrame.__init__:   sB     1A /-7;15 !5!5t7L7LM    c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )	functions)r   sqlframe.baserF   r   r8   )r<   rF   s     rA   _FSparkLikeLazyFrame._FJ   s!    =/#D$8$899rD   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )types)r   rG   rK   r   r8   )r<   rK   s     rA   _native_dtypes!SparkLikeLazyFrame._native_dtypesS   s     =+L'(<(<==rD   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   r!   )r   sqlframe.base.windowr"   r   r8   )r<   r"   s     rA   _WindowSparkLikeLazyFrame._Window\   s     =3M !5!566rD   c                    [        U 5      $ r5   r   )objs    rA   
_is_nativeSparkLikeLazyFrame._is_nativee   s    #C((rD   c              P    U " UUR                   UR                  UR                  S9$ Nr>   r?   r@   )r7   r9   r8   )clsdatacontexts      rA   from_nativeSparkLikeLazyFrame.from_nativei   s-    #44$$"22	
 	
rD   c                6    U R                   R                  5       $ r5   )r8   to_native_namespacer<   s    rA   __native_namespace__'SparkLikeLazyFrame.__native_namespace__r   s    ##7799rD   c                Z    SSK Jn  U" U R                  U R                  U R                  S9$ )Nr   r)   rX   )narwhals._spark_like.namespacer*   r7   r9   r8   )r<   r*   s     rA   __narwhals_namespace__)SparkLikeLazyFrame.__narwhals_namespace__u   s+    E! 11MM//
 	
rD   c                    U $ r5    r`   s    rA   __narwhals_lazyframe__)SparkLikeLazyFrame.__narwhals_lazyframe__~   s    rD   c                b    U R                  U R                  U R                  UU R                  S9$ rW   )	__class__nativer7   r8   )r<   r?   s     rA   _with_version SparkLikeLazyFrame._with_version   s4    ~~KK 11//	  
 	
rD   c                b    U R                  UU R                  U R                  U R                  S9$ rW   )rl   r7   r9   r8   )r<   dfs     rA   _with_nativeSparkLikeLazyFrame._with_native   s4    ~~ 11MM//	  
 	
rD   c           	        U R                   [        R                  L aH  U R                  S:  a8  SS Kn UR
                  R                  U R                  R                  5       5      $ U R                  R9                  5       $ ! [         GaF  nS[        U5      ;   Ga0  SSKJn  0 n/ nU R                  5       nUR                  5        H  u  px/ XG'    U" XR                  5      n	UR!                  Xy45        M0  ! ["         a  nU R                  R$                  U   R&                  n
U R(                  R*                  n[-        X5      (       d$  [.        R0                  " SU
 SU< 3[3        5       S9  UR!                  XqR4                  " 5       45         S nAM  S nAff = f   UR
                  R7                  XAR$                  " U5      S9s S nA$ e S nAff = f)	N)   r   zat least one RecordBatch)narwhals_to_native_dtypezCould not convert dtype z to PyArrow dtype, )
stacklevelschema)r8   r   PYSPARKr7   pyarrowTablefrom_batchesrm   _collect_as_arrow
ValueErrorstrnarwhals._arrow.utilsrv   collect_schemaitemsr9   append	Exceptionry   dataTyperL   NullType
isinstancewarningswarnr   nullfrom_pydicttoArrow)r<   paexcrv   rZ   ry   current_schemakeyvaluenative_dtypenative_spark_dtype	null_types               rA   _collect_to_arrow$SparkLikeLazyFrame._collect_to_arrow   s   >#9#99d>S>S W
 ?
 !xx,,T[[-J-J-LMM> ;;&&((=  -S9N13D<>F%)%8%8%:N&4&:&:&<
$&	?+CE==+YL #MM3*=>  ) <151C1CC1H1Q1Q. )-(;(;(D(DI#-.@#L#L (&>?Q>RRefiel$m/>/@!" #MM3	*:;;<	 '=$ 88//YYv=N/OO9sO   2B   GAGC5!G5
F?BFGF-GGGGc              #  l   #    U R                    H   nU R                  R                  U5      v   M"     g 7fr5   )columnsrH   col)r<   r   s     rA   _iter_columns SparkLikeLazyFrame._iter_columns   s&     <<C''++c""  s   24c                    U R                   c=  U R                  b  [        U R                  5      OU R                  R
                  U l         U R                   $ r5   )r;   r:   listry   rm   r   r`   s    rA   r   SparkLikeLazyFrame.columns   sM    ' &&2 T[[![[((  
 ###rD   c                (   U[         R                  L aM  SS KnSSKJn  U" U R
                  R                  5       [         R                  [        U5      U R                  SS9$ Ub  U[         R                  L a4  SS K
nSSKJn  U" U R                  5       [        U5      U R                  SS9$ U[         R                  L aF  SS KnSS K
nSSKJn  U" UR%                  U R                  5       5      [        U5      U R                  S9$ S	U 3n	['        U	5      e)
Nr   )PandasLikeDataFrameT)r@   r>   r?   validate_column_names)ArrowDataFrame)r>   r?   r   )PolarsDataFrame)r>   r?   zUnsupported `backend` value: )r   PANDASpandasnarwhals._pandas_like.dataframer   rm   toPandasr   r9   PYARROWr{   narwhals._arrow.dataframer   r   POLARSpolarsnarwhals._polars.dataframer   
from_arrowr   )
r<   backendkwargspdr   r   r   plr   msgs
             rA   collectSparkLikeLazyFrame.collect   s    
 n+++K&$$&-44 -b 1&*  _>+A+A A @!&&( -b 1&*	  --- B"d4467 -b 1  .gY7orD   c                R    U R                  U R                  R                  " U6 5      $ r5   )rr   rm   select)r<   column_namess     rA   simple_select SparkLikeLazyFrame.simple_select   s"      !3!3\!BCCrD   c                    [        U /UQ76 nU VVs/ s H  u  p4UR                  U5      PM     nnnU R                  U R                  R                  " U6 5      $ s  snnf r5   )r   aliasrr   rm   aggr<   exprsnew_columnscol_namer   new_columns_lists         rA   	aggregateSparkLikeLazyFrame.aggregate   sX     %T2E2EPQ[MHCIIh/[Q  2B!CDD R   Ac                    [        U /UQ76 nU VVs/ s H  u  p4UR                  U5      PM     nnnU R                  U R                  R                  " U6 5      $ s  snnf r5   )r   r   rr   rm   r   r   s         rA   r   SparkLikeLazyFrame.select   sZ     %T2E2GRS{OXCIIh/{S  !3!35E!FGG Tr   c                    [        U /UQ76 nU R                  U R                  R                  [	        U5      5      5      $ r5   )r   rr   rm   withColumnsdict)r<   r   r   s      rA   with_columnsSparkLikeLazyFrame.with_columns  s6    $T2E2  !8!8k9J!KLLrD   c                    UR                  U 5      S   nU R                  R                  U5      nU R                  U5      $ Nr   )_callrm   whererr   )r<   	predicate	conditionspark_dfs       rA   filterSparkLikeLazyFrame.filter  s:    OOD)!,	;;$$Y/  **rD   c           
         U R                   c^  U R                  R                   Vs0 s H7  nUR                  [	        UR
                  U R                  U R                  S9_M9     snU l         U R                   $ s  snf )N)dtyper?   spark_types)r:   rm   ry   namer   r   r9   rL   )r<   fields     rA   ry   SparkLikeLazyFrame.schema  sy    & "[[//# 0E 

4.. MM $ 3 3 
 0#D """#s   >A8c                    U R                   $ r5   rx   r`   s    rA   r   !SparkLikeLazyFrame.collect_schema  s    {{rD   c               f    [        XUS9nU R                  U R                  R                  " U6 5      $ )N)compliant_framer   strict)r   rr   rm   drop)r<   r   r   columns_to_drops       rA   r   SparkLikeLazyFrame.drop"  s3    / &
   !1!1?!CDDrD   c                R    U R                  U R                  R                  US95      $ )N)num)rr   rm   limit)r<   ns     rA   headSparkLikeLazyFrame.head(  s%      !2!2q!2!9::rD   c                   SSK Jn  U" XUS9$ )Nr   r'   )drop_null_keys)narwhals._spark_like.group_byr(   )r<   r   keysr(   s       rA   group_bySparkLikeLazyFrame.group_by+  s    F#D~NNrD   c               2  ^  [        U[        5      (       a  U/[        U5      -  nU(       a  U 4S jU 5       nOU 4S jU 5       n[        X45       VVs/ s H  u  pVU" U5      PM     nnnT R	                  T R
                  R                  " U6 5      $ s  snnf )Nc              3     >#    U  H8  nU(       a  TR                   R                  OTR                   R                  v   M:     g 7fr5   )rH   desc_nulls_lastasc_nulls_last.0dr<   s     rA   	<genexpr>*SparkLikeLazyFrame.sort.<locals>.<genexpr>:  s3      #A ,-''$''2H2HH#   A Ac              3     >#    U  H8  nU(       a  TR                   R                  OTR                   R                  v   M:     g 7fr5   )rH   desc_nulls_firstasc_nulls_firstr   s     rA   r   r   ?  s3      #A -.((4773J3JJ#r   )r   boollenziprr   rm   sort)r<   
descending
nulls_lastby
sort_funcsr   sort_f	sort_colss   `       rA   r   SparkLikeLazyFrame.sort0  s     j$''$B/J#J
#J
 584GH4G[SVC[4G	H  !1!19!=>> Is   Bc                z    U(       a  [        U5      OS nU R                  U R                  R                  US95      $ )Nsubset)r   rr   rm   dropna)r<   r
  s     rA   
drop_nullsSparkLikeLazyFrame.drop_nullsG  s2    !'fT  !3!36!3!BCCrD   c                X   U R                    Vs0 s H  o"UR                  X"5      _M     nnU R                  U R                  R	                  UR                  5        VVs/ s H/  u  pEU R                  R                  U5      R                  U5      PM1     snn5      5      $ s  snf s  snnf r5   )	r   getrr   rm   r   r   rH   r   r   )r<   mappingcolnamerename_mappingoldnews         rA   renameSparkLikeLazyFrame.renameK  s    BF,,
BNwW[[22, 	 
   KK=K=Q=Q=ST=SS!'',=ST
 	


 Us   B!6B&c               ^   [        U R                  U5        U(       a  [        U5      OS nUS:X  a  [        SU R                  5      nU R	                  5       R                  U=(       d    U R                  5      nU R                  R                  X0R                  R                  S5      R                  U5      5      R                  U R                  R                  U5      S:H  5      R                  U5      nU R                  U5      $ U R                  U R                  R                  US95      $ )Nnone   *   r	  )r   r   r   r   rP   partitionByrm   
withColumnrH   countoverr   r   r   rr   dropDuplicates)r<   r
  keeptmpwindowrq   s         rA   uniqueSparkLikeLazyFrame.uniqueU  s     	DLL&1!'fT6>0DLLAC\\^//0F$,,GF&&sGGMM#,>,C,CF,KLC(A-.c 
 $$R((  !;!;6!;!JKKrD   c           	       ^ ^^^ T R                   nUR                   nUb  [        U5      O/ mUb  [        U5      O/ nUS:w  a  U V	s/ s H  oT;  d  M
  U	PM     sn	OUn
0 [        [        TU5      5      EU
 Vs0 s H  nXU;   a  U U 3OU_M     snEmUR                  R                  TR                  5        VVs/ s H/  u  pT R                  R                  U5      R                  U5      PM1     snn5      mUR                  5       nUS;   a  UR                  UU4S jU 5       5        O%US:X  a  UR                  TR                  5       5        T V	s/ s H  n	TU	   PM
     nn	US:X  a$  [        [        UU 4S j[        X5       5       5      O	US:X  a  S OUnUS:X  a  SOUnT R                  T R                  R!                  TUUS9R                  U5      5      $ s  sn	f s  snf s  snnf s  sn	f )Nfull>   leftcrossinnerc              3  >   >#    U  H  nUT;  d  M  TU   v   M     g 7fr5   rh   )r   r  r  	right_on_s     rA   r   *SparkLikeLazyFrame.join.<locals>.<genexpr>  s'      ,G)+ (w',s   
c              3  n   >#    U  H*  u  p[        TR                  U5      [        TU5      :H  v   M,     g 7fr5   )getattrrm   )r   left_key	right_keyother_nativer<   s      rA   r   r-    s2      /O+ DKK2glI6VV/Os   25r)  
full_outer)onhow)r   r   r   r   rm   r   r   rH   r   r   copyextendvaluesr   r   rr   join)r<   otherr5  left_onright_onsuffixleft_columnsright_columnsleft_on_cright_cols_to_renamer  r  r  	col_orderright_on_remappedon_
how_nativer2  r  r,  s   `                 @@@rA   r9  SparkLikeLazyFrame.joine  s	    ||191EtH~2	/6/Bd7m f} &<1));Q< 	
3y(+,
  43G L1HG9VH-gU3
 ||**9G9M9M9OP9OXSTWW[[##C(9OP
 !%%'	,, , 
 F]^22458AB	1^A.	B f} /28/O g~  	 &)F]\
  KK\czBII)T
 	
[ = Q" Cs   	GG9G$=6G)
G/c                \  ^  [        T R                  5      nT R                  5       nU H'  nX4   nXRR                  :w  d  M  SU S3n[	        U5      e   T R
                  n[        U5      S:w  a  Sn[        U5      eT R                  R                  5       (       a  T R                  T R                  R                  " U Vs/ s H_  nXS   :w  a*  T R                  R                  U5      R                  U5      O)T R                  R!                  U5      R                  U5      PMa     sn6 5      $ T R                  R#                  5       (       GaD  SU 4S jjn	T R                  T R                  R                  " U Vs/ s H_  nXS   :w  a*  T R                  R                  U5      R                  U5      O)T R                  R%                  U5      R                  U5      PMa     sn6 R'                  T R                  R)                  U	" US   5      5      R                  " U Vs/ s H_  nXS   :w  a*  T R                  R                  U5      R                  U5      O)T R                  R+                  S 5      R                  U5      PMa     sn6 5      5      $ Sn[-        U5      es  snf s  snf s  snf )	Nz-`explode` operation not supported for dtype `z`, expected List typer  zExploding on multiple columns is not supported with SparkLike backend since we cannot guarantee that the exploded columns have matching element counts.r   c                x   > TR                   R                  U 5      TR                   R                  U 5      S:H  -  $ r   )rH   isnull
array_size)r   r<   s    rA   null_condition2SparkLikeLazyFrame.explode.<locals>.null_condition  s0    ww~~h/4773E3Eh3OST3TUUrD   z[Unreachable code, please report an issue at https://github.com/narwhals-dev/narwhals/issues)r   r   returnr   )r   r9   r   Listr   r   r   NotImplementedErrorr8   
is_pysparkrr   rm   r   rH   r   r   explode_outeris_sqlframeexplodeunionr   litAssertionError)
r<   r   dtypesry   col_to_exploder   r   r   r   rL  s
   `         rA   rT  SparkLikeLazyFrame.explode  s   %dmm4$$&%N*E#CE7 K) )  ,C00 & ||w<1^  &c****,,$$""
 )5	 )5H $qz1 H-33H=!WW228<BB8LM )5		 	 !!--//V $$""
 )5	 )5H $qz1 H-33H=!WW__X6<<XFG )5	 %KK&&~gaj'ABII
 -9	 -9  (1:5 !GGKK177A!%T!2!8!8!BC -9		 ( pC %%O(s    A&J;A&J$ A&J)c                   U R                   R                  5       (       a'  US:X  a  Sn[        U5      eUS:X  a  Sn[        U5      eO U(       a  [        U5      OSnUc6  [        [	        U R
                  5      R                  [	        U5      5      5      O
[        U5      nU R                  R                  UUUUS9nUc  UR                  " U6 nU R                  U5      $ )N z<`variable_name` cannot be empty string for sqlframe backend.z9`value_name` cannot be empty string for sqlframe backend.rh   )idsr8  variableColumnNamevalueColumnName)r8   rS  rP  tuplesetr   
differencerm   unpivotr   rr   )	r<   r4  indexvariable_name
value_namer   r]  r8  unpivoted_native_frames	            rA   rc  SparkLikeLazyFrame.unpivot  s     ++--"T)#..RQ)#..   #eEl=?ZE#dll#..s3x89USUY 	 "&!4!4,&	 "5 "
 =%;%@%@#%F"  !788rD   zO`LazyFrame.gather_every` is deprecated and will be removed in a future version.zG`LazyFrame.tail` is deprecated and will be removed in a future version.)r7   r;   r:   r8   r6   r9   N)
r=   SQLFrameDataFramer>   ztuple[int, ...]r?   r.   r@   r   rN  None)rN  ztype[Window])rS   zSQLFrameDataFrame | AnyrN  zTypeIs[SQLFrameDataFrame])rZ   ri  r[   r/   rN  r#   )rN  r   )rN  r*   )rN  r#   )r?   r.   rN  r#   )rq   ri  rN  r#   )rN  zpa.Table)rN  zIterator[Column])rN  z	list[str])r   z(ModuleType | Implementation | str | Noner   r   rN  z!CompliantDataFrame[Any, Any, Any])r   r   rN  r#   )r   r&   rN  r#   )r   r&   rN  r#   )rN  zdict[str, DType])r   Sequence[str]r   r   rN  r#   )r   intrN  r#   )r   r   r   r   rN  r(   )r  r   r  zbool | Sequence[bool]r  r   rN  r#   )r
  Sequence[str] | NonerN  r#   )r  zMapping[str, str]rN  r#   )r
  rm  r!  r-   rN  r#   )r:  r#   r5  r,   r;  rm  r<  rm  r=  r   rN  r#   )r   rk  rN  r#   )
r4  rm  rd  rm  re  r   rf  r   rN  r#   ).__name__
__module____qualname____firstlineno__rB   propertyrH   rL   rP   staticmethodrT   classmethodr\   ra   re   ri   rn   rr   r   r   r   r   r   r   r   r   r   ry   r   r   r   r   r   r  r  r$  r9  rT  rc  r   
deprecatedgather_every	join_asoftailwith_row_index__static_attributes__rh   rD   rA   r2   r2   9   s   N+N )	N
 N 'N 
N  : : > > 7 7 ) ) 
 
:


&)P# $ $+9+ + 
+	+ZDEE 
EHH 
HM+ 
# 
#E;O
?? *? 	?
 
?.D
L*L5KL	L A
A
 A
 &	A

 'A
 A
 
A
FA&F9 9 $9 	9
 9 
9@ #--YL  !I%%QD %&NrD   r2   )r&   ri  )B
__future__r   r   	functoolsr   operatorr   typingr   r   r   r	   r
   narwhals._namespacer   narwhals._spark_like.utilsr   r   r   r   r   narwhals.exceptionsr   narwhals.typingr   r   narwhals.utilsr   r   r   r   r   r   r   r   r   rK   r   r{   r   sqlframe.base.columnr   sqlframe.base.dataframer    rO   r"   typing_extensionsr#   r$   r%   narwhals._spark_like.exprr&   r   r(   rd   r*   narwhals.dtypesr+   r,   r-   r.   r/   ri  r0   __annotations__r2   rh   rD   rA   <module>r     s    "          4 5 7 ; 4 ? 5 . . ) . * 9 / * 0 ( 3 +5+&+(7BA%,6&+%c3S#&=>
I  7Y'+,PQ Y'rD   