
    WhN\                       U d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d d	lmZmZmZmZmZmZmZ d d
lm Z  erd 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+ d dl,Z-d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dlm@Z@ d dlAmBZB d dlmCZCmDZD d dlEmFZF d dlGmHZH d dlImJZJmKZK e1eeeeef   ZLeZMdeNd<   	  G d  d!ed"   e      ZOy)#    )annotations)reduce)and_)TYPE_CHECKINGAny)issue_warningis_native_spark_like)catch_pyspark_connect_exceptioncatch_pyspark_sql_exceptionevaluate_exprsimport_functionsimport_native_dtypesimport_windownative_to_narwhals_dtype)SQLLazyFrame)ImplementationValidateBackendVersiongenerate_temporary_column_namenot_implementedparse_columns_to_dropto_pyarrow_table
zip_strict)InvalidOperationError)IterableIteratorMappingSequence)BytesIO)Path)
ModuleTypeN)Column)BaseDataFrameWindow)Self	TypeAliasTypeIs)CompliantDataFrameAny)SparkLikeExprSparkLikeLazyGroupBySparkLikeNamespace)SparkSession)_EagerAllowedImpl)Version_LimitedContext)	LazyFrame)DType)JoinStrategyUniqueKeepStrategyr'   
Incompletec                     e Zd Zdd	 	 	 	 	 	 	 	 	 d.dZed/d       Zed        Zed        Zed0d       Ze	d1d       Z
ed2d	       Zd3d
Zd4dZd5dZd6dZd7dZd8dZd9dZd:dZd;dZed<d       Z	 	 	 	 	 	 d=dZ	 	 	 	 	 	 d=dZd>dZd?dZd?dZd?dZd@dZedAd       ZdAdZdBdZ dCdZ!	 	 	 	 	 	 dDdZ"dEd Z#dFd!Z$dGd"Z%dHd#Z&	 	 	 	 	 	 	 	 dId$Z'	 	 	 	 	 	 	 	 	 	 	 	 dJd%Z(dKd&Z)	 	 	 	 	 	 	 	 	 	 dLd'Z*dMd(Z+dNd)Z,e	 	 	 	 	 	 	 	 	 	 dOd*       Z- e.j^                  d+      Z0 e.       Z1 e.j^                  d,      Z2y-)PSparkLikeLazyFrameF)validate_backend_versionc               p    || _         || _        || _        d | _        d | _        |r| j                          y y N)_native_frame_implementation_version_cached_schema_cached_columns_validate_backend_version)selfnative_dataframeversionimplementationr:   s        X/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/_spark_like/dataframe.py__init__zSparkLikeLazyFrame.__init__?   s@     1A-7;15#**, $    c                6    | j                   j                         S r<   )r>   _backend_versionrC   s    rG   rK   z#SparkLikeLazyFrame._backend_versionO   s    ##4466rI   c                H    t         rddlm} |S t        | j                        S )Nr   )	functions)r   sqlframe.baserN   r   r>   )rC   rN   s     rG   _FzSparkLikeLazyFrame._FS   s    / 4 455rI   c                H    t         rddlm} |S t        | j                        S )Nr   )types)r   rO   rR   r   r>   )rC   rR   s     rG   _native_dtypesz!SparkLikeLazyFrame._native_dtypes[   s    +L#D$8$899rI   c                H    t         rddlm} |S t        | j                        S )Nr   r$   )r   sqlframe.base.windowr%   r   r>   )rC   r%   s     rG   _WindowzSparkLikeLazyFrame._Windowc   s    3MT1122rI   c                    t        |       S r<   r	   )objs    rG   
_is_nativezSparkLikeLazyFrame._is_nativek   s    #C((rI   c              @     | ||j                   |j                        S NrE   rF   )r?   r>   )clsdatacontexts      rG   from_nativezSparkLikeLazyFrame.from_nativeo   s    4!1!1'BYBYZZrI   c                <    | j                   j                  | d      S )Nlazy)level)r?   	lazyframerL   s    rG   to_narwhalszSparkLikeLazyFrame.to_narwhalss   s    }}&&t6&::rI   c                6    | j                   j                         S r<   )r>   to_native_namespacerL   s    rG   __native_namespace__z'SparkLikeLazyFrame.__native_namespace__v   s    ##7799rI   c                J    ddl m}  || j                  | j                        S )Nr   r-   r\   )narwhals._spark_like.namespacer.   r?   r>   )rC   r.   s     rG   __narwhals_namespace__z)SparkLikeLazyFrame.__narwhals_namespace__y   s!    E!MM$2F2F
 	
rI   c                    | S r<    rL   s    rG   __narwhals_lazyframe__z)SparkLikeLazyFrame.__narwhals_lazyframe__   s    rI   c                R    | j                  | j                  || j                        S r[   )	__class__nativer>   )rC   rE   s     rG   _with_versionz SparkLikeLazyFrame._with_version   s)    ~~KK9M9M  
 	
rI   c                R    | j                  || j                  | j                        S r[   )rp   r?   r>   )rC   dfs     rG   _with_nativezSparkLikeLazyFrame._with_native   s)    ~~d6J6J  
 	
rI   c                   dd l }ddlm} g }| j                         }| j                  j
                  }|j                         D ],  \  }}	  ||| j                        }|j                  ||f       .  |j
                  |      S # t        $ rs}	||   j                  }
| j                  j                  }t        |
|      st        d|
 d|	t               |j                  | |j                          f       Y d }	~	d }	~	ww xY w)Nr   )narwhals_to_native_dtypezCould not convert dtype z to PyArrow dtype, )pyarrownarwhals._arrow.utilsrw   collect_schemarq   schemaitemsr?   append	ExceptiondataTyperS   NullType
isinstancer   UserWarningnull)rC   parw   r{   	nw_schemanative_schemakeyvaluenative_dtypeexcnative_spark_dtype	null_types               rG   _to_arrow_schemaz#SparkLikeLazyFrame._to_arrow_schema   s    B02'')	**#//+ 	3JC37t}}M sL12!	3" ryy    0%23%7%@%@" !//88	!"4i@!23E2FFYZ]Y`a# sGBGGI.//0s   
B	D A)C;;D c                   | j                   j                         rG| j                  dk  r8dd l}	 |j                  j                  | j                  j                               S | j                   j                         rX| j                  dk  rIdd l}| j                         }|j                  j                  | j                  j                         |      S t!        | j                  j#                               S # t        $ re}dt        |      v rR| j                  D ci c]  }|g  nc c}w }}| j                         }|j                  j                  ||      cY d }~S  d }~ww xY w)N)   r   zat least one RecordBatchr{   )r>   
is_pysparkrK   rx   Tablefrom_batchesrq   _collect_as_arrow
ValueErrorstrcolumnsr   from_pydictis_pyspark_connectfrom_pandastoPandasr   toArrow)rC   r   r   kr^   	pa_schemas         rG   _collect_to_arrowz$SparkLikeLazyFrame._collect_to_arrow   s(   **,1F1F1M 	xx,,T[[-J-J-LMM !!4464;P;PSW;W --/I88''(<(<(>y'QQ#DKK$7$7$9::  -S9 BF1NA!R%1N1ND1N $ 5 5 7I88//Y/GGs/   2C7 7	E% E 
D&%4E E%E  E%c              #  h   K   | j                   D ]  }| j                  j                  |       ! y wr<   )r   rP   col)rC   r   s     rG   _iter_columnsz SparkLikeLazyFrame._iter_columns   s,     << 	#C''++c""	#s   02c                    | j                   <| j                  t        | j                        n| j                  j
                  | _         | j                   S r<   )rA   r@   listr{   rq   r   rL   s    rG   r   zSparkLikeLazyFrame.columns   sM    ' &&2 T[[![[((  
 ###rI   c                   |t         j                  u rCddlm}  || j                  j                         t         j                  d| j                  d      S ||t         j                  u r*ddlm	}  || j                         d| j                  d      S |t         j                  u r<dd l}ddlm}  ||j                  | j                               d| j                        S d	| }t!        |      )
Nr   )PandasLikeDataFrameT)rF   r:   rE   validate_column_names)ArrowDataFrame)r:   rE   r   )PolarsDataFrame)r:   rE   zUnsupported `backend` value: )r   PANDASnarwhals._pandas_like.dataframer   rq   r   r?   PYARROWnarwhals._arrow.dataframer   r   POLARSpolarsnarwhals._polars.dataframer   
from_arrowr   )rC   backendkwargsr   r   plr   msgs           rG   _collectzSparkLikeLazyFrame._collect   s     n+++K&$$&-44)-&*  ?g)?)??@!&&()-&*	  n+++B"d4467)-  .gY7orI   c                    | j                   j                         r	  | j                  |fi |S  | j                  |fi |S # t        $ r}t	        |      d d }~ww xY wr<   )r>   r   r   r~   r   )rC   r   r   es       rG   collectzSparkLikeLazyFrame.collect   sk     224C$t}}W777 t}}W///  C5a8dBCs   A 	AAAc                R    | j                   | j                  j                  |       S r<   )ru   rq   select)rC   column_namess     rG   simple_selectz SparkLikeLazyFrame.simple_select   s%      !3!3!3\!BCCrI   c                ~   t        | g| }|D cg c]  \  }}|j                  |       }}}| j                  j                         r)	 | j	                   | j
                  j                  |       S | j	                   | j
                  j                  |       S c c}}w # t        $ r}t        ||       d d }~ww xY wr<   )	r   aliasr>   r   ru   rq   aggr~   r   rC   exprsnew_columnscol_namer   new_columns_listr   s          rG   	aggregatezSparkLikeLazyFrame.aggregate   s    $T2E2EPQMHcCIIh/QQ**,E((:J)KLL   2B!CDD R  E1!T:DE   B'B! !	B<*B77B<c                ~   t        | g| }|D cg c]  \  }}|j                  |       }}}| j                  j                         r)	 | j	                   | j
                  j                  |       S | j	                   | j
                  j                  |       S c c}}w # t        $ r}t        ||       d d }~ww xY wr<   )	r   r   r>   r   ru   rq   r   r~   r   r   s          rG   r   zSparkLikeLazyFrame.select
  s    $T2E2GRSOXsCIIh/SS**,E(();););=M)NOO   !3!3!35E!FGG T  E1!T:DEr   c                X   t        | g| }| j                  j                         r4	 | j                  | j                  j                  t        |                  S | j                  | j                  j                  t        |                  S # t        $ r}t        ||       d d }~ww xY wr<   )	r   r>   r   ru   rq   withColumnsdictr~   r   )rC   r   r   r   s       rG   with_columnszSparkLikeLazyFrame.with_columns  s    $T2E2**,E(()@)@kAR)STT   !8!8k9J!KLL  E1!T:DEs   2B 	B)B$$B)c                D   |j                  |       d   }| j                  j                         r+	 | j                  | j                  j                  |            S | j                  | j                  j                  |            S # t        $ r}t        ||       d d }~ww xY wNr   )_callr>   r   ru   rq   wherer~   r   )rC   	predicate	conditionr   s       rG   filterzSparkLikeLazyFrame.filter  s    OOD)!,	**,E(():):9)EFF   !2!29!=>>  E1!T:DEs   )B 	BBBc           
         | j                   r| j                  j                  D ci c]M  }|j                  t	        |j
                  | j                  | j                  | j                  j                        O c}| _         | j                   S c c}w r<   )	r@   rq   r{   namer   r   r?   rS   sparkSession)rC   fields     rG   r{   zSparkLikeLazyFrame.schema(  s    & "[[//#  

4NNMM''KK,,	 #D """#s   ABc                    | j                   S r<   r   rL   s    rG   rz   z!SparkLikeLazyFrame.collect_schema6  s    {{rI   c               n    t        | ||      }| j                   | j                  j                  |       S )N)strict)r   ru   rq   drop)rC   r   r   columns_to_drops       rG   r   zSparkLikeLazyFrame.drop9  s3    /gfM  !1!1!1?!CDDrI   c                V    | j                  | j                  j                  |            S r<   )ru   rq   limit)rC   ns     rG   headzSparkLikeLazyFrame.head=  s"      !2!21!566rI   c               $    ddl m}  || ||      S )Nr   r+   )drop_null_keys)narwhals._spark_like.group_byr,   )rC   keysr   r,   s       rG   group_byzSparkLikeLazyFrame.group_by@  s     	G#D$~NNrI   c                   t        |t              r|gt        |      z  }|r fd|D        }n fd|D        }t        ||      D cg c]  \  }} ||       }}} j	                    j
                  j                  |       S c c}}w )Nc              3  z   K   | ]2  }|rj                   j                  nj                   j                   4 y wr<   rP   desc_nulls_lastasc_nulls_last.0drC   s     rG   	<genexpr>z*SparkLikeLazyFrame.sort.<locals>.<genexpr>L  s4       ,-''$''2H2HH   8;c              3  z   K   | ]2  }|rj                   j                  nj                   j                   4 y wr<   )rP   desc_nulls_firstasc_nulls_firstr   s     rG   r   z*SparkLikeLazyFrame.sort.<locals>.<genexpr>Q  s4       -.((4773J3JJr   )r   boollenr   ru   rq   sort)rC   
descending
nulls_lastby
sort_funcsr   sort_f	sort_colss   `       rG   r   zSparkLikeLazyFrame.sortG  s    j$'$B/J#J
#J
 5?r:4NO[S&VC[O	O  !1!1!19!=>> Ps   	Bc               0    t        |      }t        |t              r|gt        |      z  } fd|D        }t	        ||      D cg c]  \  }} ||       }}} j                    j                  j                  | j                  |            S c c}}w )Nc              3  z   K   | ]2  }|sj                   j                  nj                   j                   4 y wr<   r   r   s     rG   r   z+SparkLikeLazyFrame.top_k.<locals>.<genexpr>]  s1      
MN1DGG##$''2H2HH
r   )	r   r   r   r   r   ru   rq   r   r   )rC   r   r   reverser   r   r   r   s   `       rG   top_kzSparkLikeLazyFrame.top_kY  s    "Xgt$i#b')G
RY

 5?r:4NO[S&VC[O	O  !1!1!19!=!C!CA!FGG Ps   Bc                v    |rt        |      nd }| j                  | j                  j                  |            S )N)subset)r   ru   rq   dropna)rC   r  s     rG   
drop_nullszSparkLikeLazyFrame.drop_nullsc  s2    !'fT  !3!36!3!BCCrI   c                R   | j                   D ci c]  }||j                  ||       }}| j                  | j                  j	                  |j                         D cg c]/  \  }}| j                  j                  |      j                  |      1 c}}            S c c}w c c}}w r<   )	r   getru   rq   r   r|   rP   r   r   )rC   mappingcolnamerename_mappingoldnews         rG   renamezSparkLikeLazyFrame.renameg  s    BF,,
7>GW[['22
 
   KK=K=Q=Q=STcS!'',T
 	


 Us   B4B#c                  |xs | j                   }| j                  |      x}r|t        d| j                         }| j                  j	                  |      }|r<|dk(  r7 |j
                  |D cg c]  }| j                  j                  |       c} }nc|r7 |j
                  |D cg c]  }| j                  j                  |       c} }n*|j                  | j                  j                  d            }|dk(  r+| j                  j                  d      j                  |      }	n)| j                  j                         j                  |      }	| j                  j                  ||	      j                  | j                  j!                  |      | j                  j                  d      k(        j#                  |      }
| j%                  |
      S c c}w c c}w )N   last   none*)r   _check_columns_existr   rV   partitionByorderByrP   r   r   litcountover
row_numberrq   
withColumnr   r   r   ru   )rC   r  keeporder_bysubset_errortmp_namewindowxexprrt   s              rG   uniquezSparkLikeLazyFrame.uniqueq  sr    (DLL--g6656K1!T\\B))'2#V^^(%SQdgg&=&=a&@%STF#V^^(%SQdgg&=&=a&@%STF^^DGGKKN3F6>77==%**62D77%%',,V4DKK""8T2VDGGKK)TWW[[^;<T(^ 	
   $$ &T%Ss   ."G'"Gc          	          j                   }|j                   }|t        |      ng |t        |      ng }|dk7  r|D 	cg c]	  }	|	vs|	 c}	n|}
i t        t        |            |
D ci c]  }|||v r| | n| c}|j                  j                  j                         D cg c]/  \  }} j                  j                  |      j                  |      1 c}}      |j                         }|dv r|j                  fd|D               n$|dk(  r|j                  j                                D 	cg c]  }	|	   	 }}	|dk(  r$t        t         fdt        ||      D              n|dk(  rd n|}|dk(  rdn|} j!                   j                  j#                  ||      j                  |            S c c}	w c c}w c c}}w c c}	w )Nfull>   leftcrossinnerc              3  0   K   | ]  }|vr|     y wr<   rm   )r   r  r  	right_on_s     rG   r   z*SparkLikeLazyFrame.join.<locals>.<genexpr>  s&      )+ w's   c              3  j   K   | ]*  \  }}t        j                  |      t        |      k(   , y wr<   )getattrrq   )r   left_key	right_keyother_nativerC   s      rG   r   z*SparkLikeLazyFrame.join.<locals>.<genexpr>  s4      +) DKK2glI6VVs   03r&  
full_outer)onhow)r   r   r   ziprq   r   r|   rP   r   r   copyextendvaluesr   r   r   ru   join)rC   otherr1  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_nativer.  r  r)  s   `                 @@@rG   r6  zSparkLikeLazyFrame.join  s    ||191EtH~2	/6/Bd7m f} &<1));Q< 	
3y(+,
  4 L1HG9VH-gU
 ||**9G9M9M9OPXS#TWW[[##C(P
 !%%'	,, , 
 F]^22458AB1^A.BB f} /9(DU/V g~  	 &)F]\
  KK\czBII)T
 	
[ = Q" Cs   	G
G
1G14G
Gc                d     j                   j                  } j                         }|D ]'  }||   }||j                  k7  sd| d}t	        |        j
                  }t        |      dk7  rd}t        |       j                  j                         s j                  j                         r j                    j                  j                  |D cg c]^  }||d   k7  r* j                  j                  |      j!                  |      n) j                  j#                  |      j!                  |      ` c}       S  j                  j%                         r<d fd}	 j                    j                  j                  |D cg c]^  }||d   k7  r* j                  j                  |      j!                  |      n) j                  j'                  |      j!                  |      ` c} j)                    j                  j+                   |	|d               j                  |D cg c]^  }||d   k7  r* j                  j                  |      j!                  |      n) j                  j-                  d       j!                  |      ` c}             S d}t/        |      c c}w c c}w c c}w )	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    j                   j                  |       j                   j                  |       dk(  z  S r   )rP   isnull
array_size)r   rC   s    rG   null_conditionz2SparkLikeLazyFrame.explode.<locals>.null_condition  s0    ww~~h/4773E3Eh3OST3TUUrI   z[Unreachable code, please report an issue at https://github.com/narwhals-dev/narwhals/issues)r   r   returnr"   )r?   dtypesrz   Listr   r   r   NotImplementedErrorr>   r   r   ru   rq   r   rP   r   r   explode_outeris_sqlframeexplodeunionr   r  AssertionError)
rC   r   rJ  r{   col_to_explodedtyper   r   r   rH  s
   `         rG   rO  zSparkLikeLazyFrame.explode  s   %%$$&% 	1N>*E#CE7 K) )  ,C00	1 ||w<1^  &c****,0D0D0W0W0Y$$"""
 )5	 % $wqz1 H-33H=!WW228<BB8LM	 	 ++-V $$"""
 )5	 % $wqz1 H-33H=!WW__X6<<XFG %IDKK&&~gaj'ABII
 -9	 !)  (71:5 !GGKK177A!%T!2!8!8!BC	 & lS!!M(s   A#J#A#J('A#J-c                   | j                   j                         r$|dk(  rd}t        |      |dk(  rd}t        |      	 |rt        |      nd}|6t        t	        | j
                        j                  t	        |                  n
t        |      }| j                  j                  ||||      }| |j                  | }| j                  |      S )N z<`variable_name` cannot be empty string for sqlframe backend.z9`value_name` cannot be empty string for sqlframe backend.rm   )idsr5  variableColumnNamevalueColumnName)r>   rN  rL  tuplesetr   
differencerq   unpivotr   ru   )	rC   r0  indexvariable_name
value_namer   rV  r5  unpivoted_native_frames	            rG   r\  zSparkLikeLazyFrame.unpivot  s     ++-"T)#..RQ)#..#eEl=?ZE#dll#..s3x89USUY 	 "&!4!4,&	 "5 "
 =%@%;%@%@#%F"  !788rI   c                   |d}t        |      | j                  j                         j                   | j                  j                  | j                  j                  d            j                  |       dz
  j                  |      }| j                   | j                  j                  |g| j                         S )Nz;Cannot pass `order_by` to `with_row_index` for PySpark-liker  )	TypeErrorrP   r  r  rV   r  r  r  r   ru   rq   r   r   )rC   r   r  r   row_index_exprs        rG   with_row_indexz!SparkLikeLazyFrame.with_row_index4  s    OCC. GG %%@((Q8@@(K  %+ 	   !3!3!3N!RT\\!RSSrI   c                N    | j                   j                  j                  |       y r<   )rq   writeparquet)rC   files     rG   sink_parquetzSparkLikeLazyFrame.sink_parquet@  s    !!$'rI   c              $   ddl m} |}|j                          xr |j                         dk\  }|r|j	                         }n5 |d      r|j                         }nt        |j                  dd            } | |j                  |      ||d      S )	Nr   )	find_spec)r   r   r   pandasTi   )namedbuffer_size)rE   rF   r:   )	importlib.utilrk  rN  rK   to_arrow	to_pandasrY  	iter_rowscreateDataFrame)	r]   framesessionrF   rE   rk  implis_spark_v4r^   s	            rG   _from_compliant_dataframez,SparkLikeLazyFrame._from_compliant_dataframeC  s     	-++--W43H3H3Ji3W (Dx ??$DtEFD##D))%)	
 	
rI   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.N)
rD   SQLFrameDataFramerE   r1   rF   r   r:   r   rI  None)rI  ztuple[int, ...])rI  ztype[Window])rX   zSQLFrameDataFrame | AnyrI  zTypeIs[SQLFrameDataFrame])r^   ry  r_   r2   rI  r&   )rI  LazyFrame[SQLFrameDataFrame])rI  r!   )rI  r.   )rI  r&   )rE   r1   rI  r&   )rt   ry  rI  r&   )rI  z	pa.Schema)rI  zpa.Table)rI  zIterator[Column])rI  z	list[str])r   z_EagerAllowedImpl | Noner   r   rI  r)   )r   r   rI  r&   )r   r*   rI  r&   )r   r*   rI  r&   )rI  zdict[str, DType])r   Sequence[str]r   r   rI  r&   )r   intrI  r&   )r   z'Sequence[str] | Sequence[SparkLikeExpr]r   r   rI  r,   )r   r   r   bool | Sequence[bool]r   r   rI  r&   )r   r}  r   zIterable[str]r   r~  rI  r&   )r  Sequence[str] | NonerI  r&   )r  zMapping[str, str]rI  r&   )r  r  r  r6   r  r  rI  r&   )r7  r&   r1  r5   r8  r  r9  r  r:  r   rI  r&   )r   r|  rI  r&   )
r0  r  r]  r  r^  r   r_  r   rI  r&   )r   r   r  r|  rI  r&   )rh  zstr | Path | BytesIOrI  rz  )
rt  r)   ru  r/   rF   r   rE   r1   rI  r9   )3__name__
__module____qualname__rH   propertyrK   rP   rS   rV   staticmethodrY   classmethodr`   re   rh   rk   rn   rr   ru   r   r   r   r   r   r   r   r   r   r   r   r{   rz   r   r   r   r   r   r  r  r"  r6  rO  r\  rd  ri  rx  r   
deprecatedgather_every	join_asoftailrm   rI   rG   r9   r9   ;   s    */-+- 	-
 '- #'- 
-  7 7 6 6 : : 3 3 ) ) [ [;:




!6;,# $ $$/$;>$	$L0/0;>0	0D	EHM? # #E7O;OPTO	O?$HD
%$% !	%
 '% 
%:B
B
 	B

 &B
 'B
 B
 
B
H@"D9 9 $9 	9
 9 
9@
T( 
$

 
 '
 
 

 
: .?--YL  !I%?%%QDrI   r9   )r*   ry  r{  )P
__future__r   	functoolsr   operatorr   typingr   r   narwhals._exceptionsr   narwhals._namespacer
   narwhals._spark_like.utilsr   r   r   r   r   r   r   narwhals._sql.dataframer   narwhals._utilsr   r   r   r   r   r   r   narwhals.exceptionsr   collections.abcr   r   r   r   ior   pathlibr    rR   r!   rx   r   sqlframe.base.columnr"   sqlframe.base.dataframer#   rU   r%   typing_extensionsr&   r'   r(   narwhals._compliant.typingr)   narwhals._spark_like.exprr*   r   r,   rj   r.   r/   narwhals._typingr0   r1   r2   narwhals.dataframer3   narwhals.dtypesr4   narwhals.typingr5   r6   ry  r7   __annotations__r9   rm   rI   rG   <module>r     s    "   % . 4   1   6EE +5+99@7BA728,%@%c3S#&=>
I  7lUVlrI   