
    Lpj5              	         S SK Jr  S SKrS SKJr  S SKJr  S SKJrJ	r	J
r
  S SK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JrJrJr  S SKJr  S SKJr  \(       a:  S SK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'J(r(  S SKJ)r)J*r*  S SK+J,r,J-r-J.r.J/r/J0r0  SSSSSS.r1\Rd                  \Rf                  \Rh                  \Rj                  \Rl                  S.r7 " S S\\\SS4   5      r8g)    )annotationsN)reduce)chain)TYPE_CHECKINGAnycast)combine_alias_output_namescombine_evaluate_output_names!evaluate_output_names_and_aliasesSparkLikeLazyFrameSparkLikeExpr)SparkLikeSelectorNamespace)import_functionsimport_native_dtypesnarwhals_to_native_dtypetrue_divide)SQLNamespace)validate_separators)CallableIterableMapping)Column)WindowInputs)SQLFrameDataFrame)SparkReaderSparkSession)ImplementationVersion)ConcatMethodCorrelationMethod	IntoDTypeNormalizedPathPythonLiteral
startswithendswithbtrimsplitregexp)starts_with	ends_withtrim	str_splitregexp_matches)addsubtractmultiplydivideandc                  p   \ rS rS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.       S!S	 jjr
S"S
 jr\S 5       r\S 5       rS#S jrS$S jr S%       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rg)/SparkLikeNamespace<   c                   Xl         X l        g N)_version_implementation)selfversionimplementations      Z/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_spark_like/namespace.py__init__SparkLikeNamespace.__init__?   s    -    c                .    [         R                  " U 5      $ r9   )r   from_namespacer<   s    r?   	selectorsSparkLikeNamespace.selectorsC   s    )88>>rB   c                    [         $ r9   r   rE   s    r?   _exprSparkLikeNamespace._exprG   s    rB   c                    [         $ r9   r   rE   s    r?   
_lazyframeSparkLikeNamespace._lazyframeK   s    !!rB   c                    UR                  SS 5      =nc  Sn[        U5      e[        SU5      R                  R	                  U5      $ )NsessionzFSpark like backends require a session object to be passed in `kwargs`.r   )pop
ValueErrorr   readformat)r<   fmtkwdsrO   msgs        r?   _session_reader"SparkLikeNamespace._session_readerO   sE    xx	400G9ZCS/!NG,1188==rB   ,)	separatorc               4   [        USU5        U R                  SU5      nU R                  R                  5       (       a  U R                  S:  a  UR                  XS9O"UR                  " SSU0UD6R                  U5      nU R                  R                  XPS9$ )N)sep	delimitercsv      )r\   r\   context )	r   rW   r;   is_sqlframe_backend_versionloadoptionsrL   from_native)r<   sourcerZ   rU   readernatives         r?   scan_csvSparkLikeNamespace.scan_csvV   s     	I';TB%%eT2 ##//11d6K6Kg6U KKK.6I66;;FC 	
 **6*@@rB   c                   U R                  SU5      nU R                  R                  5       (       a!  U R                  S:  a  UR	                  U5      O UR
                  " S0 UD6R	                  U5      nU R                  R                  X@S9$ )Nparquetr_   rb   rd   )rW   r;   re   rf   rg   rh   rL   ri   )r<   rj   rU   rk   rl   s        r?   scan_parquetSparkLikeNamespace.scan_parquetb   s    %%i6 ##//11d6K6Kg6U KK'$',,V4 	
 **6*@@rB   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )	functions)r   sqlframe.basert   r   r;   )r<   rt   s     r?   _FSparkLikeNamespace._Fk   s!    =/ 4 455rB   c                R    [         (       a  SSKJn  U$ [        U R                  5      $ )Nr   )types)r   ru   ry   r   r;   )r<   ry   s     r?   _native_dtypes!SparkLikeNamespace._native_dtypess   s     =+L#D$8$899rB   c                    U[         ;   a  [         U   " U6 $ US:X  a  US   R                  5       $ [        U R                  [        R                  X5      5      " U6 $ )N	isnotnullr   )_BINARY_OPS	isNotNullgetattrrv   FUNCTION_REMAPPINGSget)r<   nameargss      r?   	_functionSparkLikeNamespace._function{   sW    ;t$d++;7$$&&tww 3 7 7 CDdKKrB   c                8    U R                   R                  U5      $ r9   )rv   lit)r<   values     r?   _litSparkLikeNamespace._lit   s    ww{{5!!rB   Nc                    Uc  U R                   R                  X5      $ U R                   R                  X5      R                  U5      $ r9   )rv   when	otherwise)r<   	conditionr   r   s       r?   _whenSparkLikeNamespace._when   s;     77<<	11ww||I-77	BBrB   c                4    U R                   R                  " U6 $ r9   )rv   coalesce)r<   exprss     r?   	_coalesceSparkLikeNamespace._coalesce   s    ww''rB   c           	        ^ ^^^ SUU U4S jjm      SU4S jjnT R                  TUS S T R                  T R                  S9$ )Nc                  > U R                   n[        T[        [        45      (       aB  T Vs/ s H  o!R	                  U5      PM     nnUR	                  UR                  U5      5      nGO[        T[        5      (       a  T(       d  T
R                  nUR                  5       (       a  ST
R                   S3n[        U5      eUR                  5       S:  a9  UR                  UR	                  S5      U R                  R                  5       5      OUR                  / 5      nOcTR                  5        VVs/ s H%  u  prUR	                  U5      R!                  U5      PM'     nnnUR                  " U6 nOUR	                  T5      nT	(       aG  [#        T	T
R$                  U R                  U R&                  R(                  5      nUR+                  U5      nU/$ s  snf s  snnf )Nz'Cannot create an empty struct type for z backend)   r   z{})rv   
isinstancelisttupler   arraydictr;   re   NotImplementedErrorrf   	from_jsonrz   
StructTypestructitemsaliasr   r:   rl   sparkSessionr   )dfFv
lit_valuescolumnimplrV   knative_dtypedtyper<   r   s            r?   func$SparkLikeNamespace.lit.<locals>.func   s{   A%$//0561eeAh
6qwwz23E4((//D'')) GH\H\G]]ef1#66  002V; AEE$K1B1B1M1M1OPXXb\  AF!N!%%(.."3J!NXXz2Fu74=="*;*;RYY=S=S   \28O5 7 "Os   G5,Gc                   > T" U 5      $ r9   rd   )r   _window_inputsr   s     r?   window_func+SparkLikeNamespace.lit.<locals>.window_func   s     8OrB   c                    S/$ )Nliteralrd   _dfs    r?   <lambda>(SparkLikeNamespace.lit.<locals>.<lambda>   s    ykrB   evaluate_output_namesalias_output_namesr=   r>   r   r   returnlist[Column])r   r   r   WindowInputs[Column]r   r   rI   r:   r;   )r<   r   r   r   r   s   ``` @r?   r   SparkLikeNamespace.lit   s_    	 	@	"	4H		
 zz"9#MM//  
 	
rB   c                \    SS jnU R                  US S U R                  U R                  S9$ )Nc                :    U R                   R                  S5      /$ )N*)rv   count)r   s    r?   r   $SparkLikeNamespace.len.<locals>.func   s    EEKK$%%rB   c                    S/$ )Nlenrd   r   s    r?   r   (SparkLikeNamespace.len.<locals>.<lambda>   s    ugrB   r   r   r   )r<   r   s     r?   r   SparkLikeNamespace.len   s8    	& zz"5#MM//  
 	
rB   c                R   ^ ^ SUU 4S jjnT R                   R                  " U/TQ76 $ )Nc                   > [        U 5      n TS   R                  n[        [        R                  U4S jU  5       5      n[        [        R                  U4S jU  5       5      n[        XU5      $ )Nr   c              3     >#    U  H:  nTR                   R                  UTR                   R                  S 5      5      v   M<     g7f)r   N)rv   r   r   .0colr<   s     r?   	<genexpr>CSparkLikeNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s3     UPTtww//TWW[[^DDPTs   AAc              3     >#    U  H;  oR                  5       R                  TR                  R                  5       5      v   M=     g 7fr9   )r   r   rz   IntegerTyper   s     r?   r   r      s4     YTXS%%d&9&9&E&E&GHHTXs   AA)r   rv   r   operatorr0   r   )colsr   	numeratordenominatorr   r<   s       r?   r   0SparkLikeNamespace.mean_horizontal.<locals>.func   s^    ;DaAUPTUI !YTXYK q[99rB   )r   zIterable[Column]r   r   )rI   _from_elementwise_horizontal_op)r<   r   r   s   `` r?   mean_horizontal"SparkLikeNamespace.mean_horizontal   s)    
	: 
	: zz99$GGGrB   c                  U Vs/ s H  o3R                   PM     nnUS:X  a  US   R                  n[        USS  SS9 HE  u  pgUR                  n[        U5      [        U5      :X  a  X:X  a  M0  SU SU SU S3n	[	        U	5      e   [        [        S	 U5      U R                  U R                  S
9$ US:X  a*  [        [        S U5      U R                  U R                  S
9$ [        es  snf )Nverticalr      )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
c                $    U R                  U5      $ r9   )unionxys     r?   r   +SparkLikeNamespace.concat.<locals>.<lambda>   s    QWWQZrB   )native_dataframer=   r>   diagonalc                "    U R                  USS9$ )NT)allowMissingColumns)unionByNamer   s     r?   r   r      s    qd!KrB   )
_native_framecolumns	enumerater   	TypeErrorr   r   r:   r;   r   )
r<   r   howitemdfscols_0ir   cols_currentrV   s
             r?   concatSparkLikeNamespace.concat   s	    /44ed!!e4*V^^F"3qr7!4!zz\*c&k9@V--3H 5**+B|nB@ 
 $C.( 5 &!'(?!E#33  *%!'KS" #33  "!7 5s   C'c                  ^ ^^^ SUUU U4S jjnT R                  U[        T6 [        T6 T R                  T R                  S9$ )Nc                V  >^ ^ TR                   m[        [        R                  " U 4S jT 5       5      5      nTR                  " T/UQ76 nT(       dU  [        [        R                  U4S jU 5       5      nTR                  U) U5      R                  TR                  S 5      5      nU/$ )Nc              3  2   >#    U  H  o" T5      v   M     g 7fr9   rd   )r   er   s     r?   r   >SparkLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s     ,BEqQrUUEs   c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr9   )isnull)r   sr   s     r?   r   r     s     1Lt!!((1++ts   !)rv   r   r   from_iterable	concat_wsr   r   or_r   r   r   )	r   r   result	null_maskr   r   ignore_nullsr<   rZ   s	   `   @r?   r   +SparkLikeNamespace.concat_str.<locals>.func   s    A,,,BE,BBCD[[2T2F"8<<1Lt1LM	
F3==aeeDkJ8OrB   callr   r   r=   r>   r   )rI   r
   r	   r:   r;   )r<   rZ   r  r   r   s   ```` r?   
concat_strSparkLikeNamespace.concat_str   sH    		 		 zz"?"G95AMM//  
 	
rB   c                  ^ ^^ US:w  a  Sn[        U5      eSUUU 4S jjnT R                  U[        TT5      [        TT5      T R                  T R
                  S9$ )Npearsonz2Only 'pearson' correlation is supported for Spark.c                   > TR                   nU R                  T5      nU R                  T5      nUR                  X#5      /$ r9   )rv   _evaluate_single_output_exprcorr)r   r   a_b_abr<   s       r?   r   %SparkLikeNamespace.corr.<locals>.func  s=    A003B003BFF2N##rB   r
  r   )r   rI   r
   r	   r:   r;   )r<   r  r  methodrV   r   s   ```   r?   r  SparkLikeNamespace.corr  sf     YFC%c**	$ 	$ zz"?1"E9!Q?MM//  
 	
rB   c          	        ^^^^^ U R                   m        SUU4S jjmSUUU4S jjn      SUUUU4S jjnU R                  UU[        TT5      [        TT5      U R                  U R
                  S9$ )Nc           
     r  > TS:X  a  U" TR                  X5      5      /$ TS:X  a  U" TR                  X5      5      /$ U R                  5       UR                  5       -  nU" TR                  TR	                  UTR                  S5      5      R                  TR                  S5      5      5      5      nUTR                  T5      -
  nU" TR                  X5      5      UTR                  S5      -
  U-  -  nTR	                  UTR                  S5      :*  TR                  S 5      5      R                  U5      /$ )Nr   r   )	covar_pop
covar_sampr   sumr   r   r   )	r  r  wrapis_valid	n_samplesr   rescaledr   ddofs	          r?   _cov$SparkLikeNamespace.cov.<locals>._cov'  s     qyQ[[0122qyQ\\"1233||~6HQUU166(AEE!H#=#G#Ga#QRSI#aeeDk1KALL01i!%%(6Jk5YZHFF;!%%(2AEE$K@JJ8TUUrB   c                \   > U R                  T5      nU R                  T5      nT" XS 5      $ )Nc                    U $ r9   rd   )r   s    r?   r   6SparkLikeNamespace.cov.<locals>.func.<locals>.<lambda>:  s    !rB   )r  )r   r  r  r$  r  r  s      r?   r   $SparkLikeNamespace.cov.<locals>.func7  s0    003B003B,,rB   c                  >^ UR                   (       a   eU R                  T5      nU R                  T5      nU R                  R                  " UR                  =(       d    TR                  S5      /6 mT" X#U4S j5      $ )Nr   c                &   > U R                  T5      $ r9   )over)r   windows    r?   r   :SparkLikeNamespace.cov.<locals>.window_f.<locals>.<lambda>C  s    !&&.rB   )order_byr  _WindowpartitionBypartition_byr   )	r   inputsr  r  r-  r   r$  r  r  s	       @r?   window_f(SparkLikeNamespace.cov.<locals>.window_f<  si     &&003B003BZZ++f.A.A.OaeeAhZQF 899rB   )r  window_functionr   r   r=   r>   )r  r   r  r   r  zCallable[[Column], Column]r   r   r   )r   r   r3  r   r   r   )rv   rI   r
   r	   r:   r;   )r<   r  r  r#  r   r4  r   r$  s    ```  @@r?   covSparkLikeNamespace.cov$  s    GG	V	V"	V*D	V	V 	V 	- 	-
	:"	:,@	:	: 	: zz$"?1"E9!Q?MM//  
 	
rB   c                   ^ ^ T R                   nSUU 4S jjnT R                  U[        T6 [        T6 UT R                  S9$ )Nc                   > T	R                   nT VVVVs0 s H/  n[        U" U 5      /[        X / 5      Q7SS06  H  u  p4nXS_M
     M1     nnnnnS UR                  5        5       nUR                  " U6 /$ s  snnnnf )NstrictTc              3  H   #    U  H  u  pUR                  U5      v   M     g 7fr9   )r   )r   r   r   s      r?   r   :SparkLikeNamespace.struct.<locals>.func.<locals>.<genexpr>\  s     N8M94syy8Ms    ")rv   zipr   r   r   )
r   r   exprnative_expr_r   names_to_colsaliasedr   r<   s
           r?   r   'SparkLikeNamespace.struct.<locals>.funcQ  s    A "3!D-0H.6tD.  .)KE ". !  3 O8K8K8MNGHHg&''3s   6A7
r
  r   r:   rI   r
   r	   r;   r<   r   r=   r   s   ``  r?   r   SparkLikeNamespace.structN  sM    --	( 	( zz"?"G95A//  
 	
rB   c                   ^ ^ T R                   nSUU 4S jjnT R                  U[        T6 [        T6 UT R                  S9$ )Nc                   > T VVs/ s H  o" U 5        H  o"PM     M     nnnTR                   R                  " U6 /$ s  snnf r9   )rv   r   )r   r?  r@  r   r   r<   s       r?   r   %SparkLikeNamespace.list.<locals>.funcj  s?    ,1NEDT"XkKXKEDNGGMM4()) Os   >r
  r   rE  rF  s   ``  r?   r   SparkLikeNamespace.listg  sM    --	* 	* zz"?"G95A//  
 	
rB   )r;   r:   )r=   r    r>   r   r   None)r   r   )r   ztype[SparkLikeExpr])r   ztype[SparkLikeLazyFrame])rT   strrU   zdict[str, Any]r   r   )rj   r$   rZ   rM  rU   r   r   r   )rj   r$   rU   r   r   r   )r   rM  r   zColumn | PythonLiteralr   r   )r   r   r   r   r9   )r   r   r   r   r   zColumn | Noner   r   )r   r   r   r   )r   r%   r   zIntoDType | Noner   r   )r   r   )r   r   r   r   )r   zIterable[SparkLikeLazyFrame]r   r!   r   r   )r   r   rZ   rM  r  boolr   r   )r  r   r  r   r  r"   r   r   )r  r   r  r   r#  intr   r   )__name__
__module____qualname____firstlineno__r@   propertyrF   rI   rL   rW   rm   rq   rv   rz   r   r   r   r   r   r   r   r   r  r  r7  r   r   __static_attributes__rd   rB   r?   r6   r6   <   so   . ? ?   " "> ;>
A$
A47
AGJ
A	
AA 6 6 : :L" LPCC(.C;HC	C(-
^

H"1";G"	"@
#
03
CG
	
,

#0
=N
	
*(
T
2
rB   r6   r   r   )9
__future__r   r   	functoolsr   	itertoolsr   typingr   r   r   narwhals._expression_parsingr	   r
   r   narwhals._spark_like.dataframer   narwhals._spark_like.exprr   narwhals._spark_like.selectorsr   narwhals._spark_like.utilsr   r   r   r   narwhals._sql.namespacer   narwhals._utilsr   collections.abcr   r   r   sqlframe.base.columnr   narwhals._compliant.windowr   r   r   r   r   r    narwhals.typingr!   r"   r#   r$   r%   r   r0   submultruedivand_r~   r6   rd   rB   r?   <module>ri     s    "    + + 
 > 3 E  1 /;;+7@D7     <<==x
#]4GQRx
rB   