
    g                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ erd dlmZ d dlmZ d dlmZ d dlmZ  G d ded         Zy)    )annotationsN)reduce)TYPE_CHECKING)combine_root_names)parse_into_exprs)reduce_output_names)SparkLikeExpr)get_column_name)CompliantNamespace)Column)SparkLikeLazyFrame)IntoSparkLikeExpr)Versionc                  4    e Zd ZddZddZd	dZd
dZd	dZy)SparkLikeNamespacec                    || _         || _        y N)_backend_version_version)selfbackend_versionversions      S/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_spark_like/namespace.py__init__zSparkLikeNamespace.__init__   s     /    c                Z    dd}t        |ddd d d| j                  | j                  i 	      S )Nc                p    dd l mc m} | j                  D cg c]  }|j	                  |       c}S c c}w Nr   )pyspark.sql.functionssql	functionscolumnscol)dfFcol_names      r   _allz$SparkLikeNamespace.all.<locals>._all   s,    --46JJ?JAEE(OJ???s   3r   allF	calldepthfunction_name
root_namesoutput_namesreturns_scalarr   r   kwargsr$   r   returnzlist[Column])r	   r   r   )r   r'   s     r   r(   zSparkLikeNamespace.all   s<    	@
   11MM

 
	
r   c                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
N	namespacec                    D cg c]  } ||       D ]  }|  }}}t        | |d         }t        t        j                  |      j	                  |      gS c c}}w r   )r
   r   operatorand_alias)r$   _exprccolsr&   parsed_exprss        r   funcz/SparkLikeNamespace.all_horizontal.<locals>.func0   sX    #/C<%rAAA<DC&r473H8==$/55h?@@ Ds   Ac              3  4   K   | ]  }|j                     y wr   _depth.0xs     r   	<genexpr>z4SparkLikeNamespace.all_horizontal.<locals>.<genexpr>7        51ahh      all_horizontalFexprsr)   r1   r   r	   maxr   r   r   r   r   rI   r=   r<   s      @r   rH   z!SparkLikeNamespace.all_horizontal-   sk    '?$?	A
 5559*),7,\:  11MMU#

 
	
r   c                V    t        j                  || j                  | j                  dS )N)r   r   )r	   from_column_namesr   r   )r   column_namess     r   r#   zSparkLikeNamespace.colA   s&    ..4+@+@$--
 	
r   c                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
Nr4   c                    dd l mc m D cg c]  } ||       D ]  }|  }}}t        | |d         }t	        t
        j                  fd|D              j                  |      gS c c}}w )Nr   c              3  `   K   | ]%  }j                  |j                  d              ' yw)r   N)coalescelit)rB   r#   r%   s     r   rD   zBSparkLikeNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>Q   s%     ?$3QZZQUU1X.$s   +.)r   r    r!   r
   r   r6   addr8   )r$   r9   r:   r;   r&   r%   r<   s        @r   r=   z/SparkLikeNamespace.sum_horizontal.<locals>.funcI   sk    --#/C<%rAAA<DC&r473HLL?$? %/	  Ds   A,c              3  4   K   | ]  }|j                     y wr   r?   rA   s     r   rD   z4SparkLikeNamespace.sum_horizontal.<locals>.<genexpr>W   rE   rF   rG   sum_horizontalFrI   r)   r1   rJ   rL   s      @r   rW   z!SparkLikeNamespace.sum_horizontalF   sj    '?$?
	 5559*),7,\:  11MMU#

 
	
r   N)r   ztuple[int, ...]r   r   r2   None)r2   r	   )rI   r   r2   r	   )rO   strr2   r	   )__name__
__module____qualname__r   r(   rH   r#   rW    r   r   r   r      s     
$
(


r   r   r   )
__future__r   r6   	functoolsr   typingr   narwhals._expression_parsingr   r   r   narwhals._spark_like.exprr	   narwhals._spark_like.utilsr
   narwhals.typingr   pyspark.sqlr   narwhals._spark_like.dataframer   narwhals._spark_like.typingr   narwhals.utilsr   r   r]   r   r   <module>ri      sF    "     ; 9 < 3 6 ."A=&I
+H5 I
r   