
    g>C                    ^   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
 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 d dlmZ d dlmZ d dlmZ erd dlZd dlmZ d dlm Z  d dl!m"Z"  G d ded         Z# G d d      Z$ G d de      Z%y)    )annotations)reduce)TYPE_CHECKING)Any)Iterable)Literal)Sequence)cast)DaskLazyFrame)DaskExpr)DaskSelectorNamespace)name_preserving_div)name_preserving_sum)narwhals_to_native_dtype)validate_comparand)combine_root_names)parse_into_exprs)reduce_output_names)CompliantNamespaceN)IntoDaskExpr)DType)Versionc                      e Z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dd	Zdd
Z	 	 	 	 	 	 ddZddZddZddZ	 	 	 	 ddZddd	 	 	 	 	 	 	 	 	 ddZy)DaskNamespacec                D    t        | j                  | j                        S Nbackend_versionversion)r   _backend_version_version)selfs    M/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_dask/namespace.py	selectorszDaskNamespace.selectors    s    $ 114==
 	
    c                    || _         || _        y N)r    r!   )r"   r   r   s      r#   __init__zDaskNamespace.__init__&   s     /r%   c                Z    dd}t        |ddd d d| j                  | j                  i 	      S )Nc                Z    | j                   D cg c]  }| j                  |    c}S c c}w r'   )columns_native_frame)dfcolumn_names     r#   funczDaskNamespace.all.<locals>.func+   s)    EGZZPZkB$$[1ZPPPs   (r   allFdepthfunction_name
root_namesoutput_namesreturns_scalarr   r   kwargsr-   r   returnzlist[dask_expr.Series])r   r    r!   )r"   r/   s     r#   r0   zDaskNamespace.all*   s<    	Q   11MM

 
	
r%   c                V    t        j                  || j                  | j                  dS r   )r   from_column_namesr    r!   )r"   column_namess     r#   colzDaskNamespace.col:   s&    ))4+@+@$--
 	
r%   c                V    t        j                  || j                  | j                  dS r   )r   from_column_indicesr    r!   )r"   column_indicess     r#   nthzDaskNamespace.nth?   s&    ++T-B-BDMM
 	
r%   c                     dd l m dd ld fd}t        |ddd dgd j                   j
                  i 	      S )Nr   c           	         j                  j                  gt        j                        nd d      | j                  j
                        gS )Nliteral)dtypenamenpartitions)from_pandasSeriesr   r!   r,   rH   )r-   ddrE   pdr"   values    r#   r/   zDaskNamespace.lit.<locals>.funcH   sa    II , 7udmmL!&   !# 0 0 < <  	 r%   litrD   Tr1   r8   dask.dataframe	dataframepandasr   r    r!   )r"   rM   rE   r/   rK   rL   s   ``` @@r#   rN   zDaskNamespace.litD   sI    #	 	 # 11MM

 
	
r%   c                z    dd l m dd ldfd}t        |ddd dgd| j                  | j
                  i 	      S )Nr   c                   | j                   s:j                  j                  dgd      | j                  j                        gS | j                  | j                   d      j
                  j                         j                  d      gS )Nr   len)rF   rG   )r+   rI   rJ   r,   rH   size	to_seriesrename)r-   rK   rL   s    r#   r/   zDaskNamespace.len.<locals>.funcf   s~    ::NN		1#E	2$&$4$4$@$@ #   $$RZZ]388BBDKKERSSr%   rU   Tr1   r8   rO   )r"   r/   rK   rL   s     @@r#   rU   zDaskNamespace.lenb   sE    #	T  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 |      j                  |d   j                        gS c c}}w )Nc                    | |z  S r'    xys     r#   <lambda>z<DaskNamespace.all_horizontal.<locals>.func.<locals>.<lambda>       Ar%   r   r   rX   rF   r-   _exprsseriesparsed_exprss       r#   r/   z*DaskNamespace.all_horizontal.<locals>.func   M    %1E\E59aa9a\FE-v6==fQinnMNN F   A
c              3  4   K   | ]  }|j                     y wr'   _depth.0r_   s     r#   	<genexpr>z/DaskNamespace.all_horizontal.<locals>.<genexpr>        51ahh      all_horizontalFexprs	callr2   r3   r4   r5   r6   r   r   r7   r8   r   r   maxr   r   r    r!   r"   ru   r/   rh   s      @r#   rt   zDaskNamespace.all_horizontal}   k    '?$?	O 5559*),7,\:  11MMU#

 
	
r%   c                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
NrZ   c                    D cg c]  } ||       D ]  }|  }}}t        d |      j                  |d   j                        gS c c}}w )Nc                    | |z  S r'   r]   r^   s     r#   ra   z<DaskNamespace.any_horizontal.<locals>.func.<locals>.<lambda>   rb   r%   r   rc   rd   s       r#   r/   z*DaskNamespace.any_horizontal.<locals>.func   ri   rj   c              3  4   K   | ]  }|j                     y wr'   rl   rn   s     r#   rp   z/DaskNamespace.any_horizontal.<locals>.<genexpr>   rq   rr   rs   any_horizontalFru   rv   r8   rx   rz   s      @r#   r   zDaskNamespace.any_horizontal   r{   r%   c                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
NrZ   c                    D cg c]   } ||       D ]  }|j                  d       " }}}t        d |      j                  |d   j                        gS c c}}w )Nr   c                    | |z   S r'   r]   r^   s     r#   ra   z<DaskNamespace.sum_horizontal.<locals>.func.<locals>.<lambda>   rb   r%   )fillnar   rX   rF   rd   s       r#   r/   z*DaskNamespace.sum_horizontal.<locals>.func   sU    /;O|eU2YahhqkYk|FO-v6==fQinnMNN Ps   %Ac              3  4   K   | ]  }|j                     y wr'   rl   rn   s     r#   rp   z/DaskNamespace.sum_horizontal.<locals>.<genexpr>   rq   rr   rs   sum_horizontalFru   rv   r8   rx   rz   s      @r#   r   zDaskNamespace.sum_horizontal   r{   r%   c               6   dd l m} t        t        |            dk(  rd}t	        |      |D cg c]  }|j
                   }}|d   j                  }|dk(  rt        |dd  d      D ]n  \  }}|j                  }	t        |	      t        |      k(  r|	|k(  j                         r=d|j                          d| d|	j                          d	}t        |       t        |j                  |dd
      | j                  | j                        S |dk(  r|D 
cg c]  }
|
j                  D ]  }|  }}
}t        |      t        t        |            k7  rD|D cg c]  }|j!                  |      dkD  s| }}ddj#                  |       d}t	        |      t        |j                  |dd      | j                  | j                        S |dk(  r4t        |j                  |dd      | j                  | j                        S t$        c c}w c c}}
w c c}w )Nr   zNo items to concatenateverticalrs   )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
inner)axisjoinr   
horizontalzColumns with name(s): z, z have more than one occurrenceouterdiagonal)rP   rQ   rU   listAssertionErrorr,   r+   	enumerater0   to_list	TypeErrorr   concatr    r!   setcountr   NotImplementedError)r"   itemshowrK   msgidfscols_0r-   cols_currentframecolumnall_column_names
duplicatess                 r#   r   zDaskNamespace.concat   s=    	$tE{q +C %%(-.1q.Q*"3qr7!42!zz&#f+5LF<R;W;W;Y--3^^-=,> ?**+B|/C/C/E.FbJ 
 $C.( 5 !		#AG	4 $ 5 5 
 ,$'+$'5emmFmC  + #$C0@,A(BB//!3C3I3I!3Lq3PA/   -TYYz-B,C D4 4  %S)) 		#AG	4 $ 5 5 
 * 		#AG	4 $ 5 5  "!Y /(+s   HHH2Hc                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
NrZ   c                      fdD        } fdD        }t        t        t        |      t        t        |            gS )Nc              3  Z   K   | ]"  } |      D ]  }|j                  d         $ yw)r   N)r   ro   re   rf   r-   s      r#   rp   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s&     O|eU2YahhqkYk|s   (+c              3  ^   K   | ]$  } |      D ]  }d |j                         z
    & yw)rs   N)isnar   s      r#   rp   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s(     PueBia!&&(lils   *-)r   r   r   )r-   rg   non_narh   s   `  r#   r/   z+DaskNamespace.mean_horizontal.<locals>.func   s?    O|OFPPF#.7.7 r%   c              3  4   K   | ]  }|j                     y wr'   rl   rn   s     r#   rp   z0DaskNamespace.mean_horizontal.<locals>.<genexpr>   rq   rr   rs   mean_horizontalFru   rv   r8   rx   rz   s      @r#   r   zDaskNamespace.mean_horizontal   sj    '?$?	 5559+),7,\:  11MMU#

 
	
r%   c                    dd l m t        |d| id
fd}t        |t	        d D              dz   dt              t              d| j                  | j                  d|i		      S )Nr   rZ   c                    D cg c]  } ||       D ]  }|  }}}j                  |d      j                  d      j                  |d   j                        gS c c}}w Nrs   )r   r   )r   minrX   rF   r-   re   rf   rg   rK   rh   s       r#   r/   z*DaskNamespace.min_horizontal.<locals>.func  `    %1E\E59aa9a\FEIIf1I-11q19@@PQQ F   A c              3  4   K   | ]  }|j                     y wr'   rl   rn   s     r#   rp   z/DaskNamespace.min_horizontal.<locals>.<genexpr>  rq   rr   rs   min_horizontalFru   rv   r8   	rP   rQ   r   r   ry   r   r   r    r!   r"   ru   r/   rK   rh   s      @@r#   r   zDaskNamespace.min_horizontal  n    #'?$?	R
 5559*),7,\:  11MMU#

 
	
r%   c                    dd l m t        |d| id
fd}t        |t	        d D              dz   dt              t              d| j                  | j                  d|i		      S )Nr   rZ   c                    D cg c]  } ||       D ]  }|  }}}j                  |d      j                  d      j                  |d   j                        gS c c}}w r   )r   ry   rX   rF   r   s       r#   r/   z*DaskNamespace.max_horizontal.<locals>.func#  r   r   c              3  4   K   | ]  }|j                     y wr'   rl   rn   s     r#   rp   z/DaskNamespace.max_horizontal.<locals>.<genexpr>*  rq   rr   rs   max_horizontalFru   rv   r8   r   r   s      @@r#   r   zDaskNamespace.max_horizontal  r   r%   c                    | j                  | j                  | j                        }|r |j                  | }nd}t	        |      t        || j                  d| j                        S )Nr   z+at least one predicate needs to be providedF)r6   r   )	__class__r    r!   rt   r   DaskWhen)r"   
predicatesplx	conditionr   s        r#   whenzDaskNamespace.when4  sd     nnT-B-BDMMnZ***J7I?CC. t,,UDMM
 	
r%    F)	separatorignore_nullsc                   g t        |d| it        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  ||d	      S )
NrZ   c                     fdD        }D cg c]  } |j                                D ]  }| ! }}}s0t        d |      }t        fd|      j                  | d       }|gS t        ||      D cg c]  \  }}|j                  | d       c}}^}}	fd|d d D        }
t        d d t        |
|	      D        |      }|gS c c}}w c c}}w )	Nc              3  b   K   | ]&  } |      D ]  }|j                  t                ( y wr'   )astypestrr   s      r#   rp   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>P  s&     QuRy!ahhsmyms   ,/c                    | |z  S r'   r]   r^   s     r#   ra   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>T  s    q1ur%   c                    | z   |z   S r'   r]   )r_   r`   r   s     r#   ra   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>U  s    Q]Q->r%   r   c              3  R   K   | ]  }|j                  d dt                 yw)r   )TF)metaN)mapr   )ro   nmr   s     r#   rp   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>]  s+      , FF"Y7cFB,s   $'c                    | |z   S r'   r]   r^   s     r#   ra   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>b  s    Qr%   c              3  ,   K   | ]  \  }}||z     y wr'   r]   )ro   rf   vs      r#   rp   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>c  s     ?'>tq!QU'>s   )is_nullr   wherezip)r-   rg   re   rf   	null_masknull_mask_resultresultr   
init_valuevalues
separatorsr   rh   r   s   `          r#   r/   z&DaskNamespace.concat_str.<locals>.funcO  s    QQF(4Ruoemmob>Q>QIR#)*<i#H  >GMM%%t$ 8O 36fi2H'2HBAGGRC$2H'#
V'n
  &?s:v'>? 8O- S's   $C;Cc              3  4   K   | ]  }|j                     y wr'   rl   rn   s     r#   rp   z+DaskNamespace.concat_str.<locals>.<genexpr>k  rq   rr   rs   
concat_strF)ru   
more_exprsr   r   rv   r8   rx   )r"   ru   r   r   r   r/   rh   s     ``  @r#   r   zDaskNamespace.concat_strC  s    
u55
z:T:

	4 5559&),7,\:  11MM(& ,	
 	
r%   N)r9   r   )r   tuple[int, ...]r   r   r9   None)r9   r   )r<   r   r9   r   )r@   intr9   r   )rM   r   rE   zDType | Noner9   r   )ru   r   r9   r   )r   zIterable[DaskLazyFrame]r   z-Literal['horizontal', 'vertical', 'diagonal']r9   r   )r   r   r9   r   )
ru   zIterable[IntoDaskExpr]r   r   r   r   r   boolr9   r   )__name__
__module____qualname__propertyr$   r(   r0   r=   rA   rN   rU   rt   r   r   r   r   r   r   r   r   r]   r%   r#   r   r      s    
 

 
 




<
6
&
&
&7"&7" ;	7"
 
7"r
2
,
,
!
 

& "5
%5
 "5
 	5

 5
 
5
r%   r   dask_expr.Seriesc                  D    e Zd Z	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZy)	r   Nc               X    || _         || _        || _        || _        || _        || _        y r'   )r    
_condition_then_value_otherwise_value_returns_scalarr!   )r"   r   r   
then_valueotherwise_valuer6   r   s          r#   r(   zDaskWhen.__init__|  s2     !0#% /-r%   c                   ddl m} |j                         }  || j                  |      |      d   }t	        d|      }	   || j
                  |      |      d   }t	        d|      }t        ||       | j                  |j                  |      gS 	  || j                  |      } ||      d   }|j                  r|j                  ||d         gS t        ||       |j                  ||      gS # t        $ r( |j                  d      }| j
                  |d<   |d   }Y w xY w# t        $ r  |j                  || j                        gcY S w xY w)Nr   )parse_into_expr)rZ   r   atmp)narwhals._expression_parsingr   __narwhals_namespace__r   r
   r   r   to_framer   r   r   r   )	r"   r-   r   r   r   value_series_dfotherwise_exprotherwise_seriess	            r#   __call__zDaskWhen.__call__  sq   @'')CODOOsCBGJ	+Y7		&K?4+;+;sKBOPQRL .=9l3  ( &&y122	J,T-B-BcRN *"-a0)) &&y2B12EFGG9&67""9.>?@@)  	&$$S)C))CJu:L		&  	J &&y$2G2GHII	Js$   C5 D) 5.D&%D&)&EEc                x    || _         t        | ddd d | j                  | j                  | j                  d|i	      S )Nr   whenthenrM   r1   )r   DaskThenr   r    r!   r"   rM   s     r#   thenzDaskWhen.then  sG     $// 11MMU#

 
	
r%   )NN)r   r   r   r   r   r   r   r   r6   r   r   r   r9   r   )r-   r   r9   zSequence[dask_expr.Series])rM   DaskExpr | Anyr9   r  )r   r   r   r(   r   r  r]   r%   r#   r   r   {  s^    
 #   )  	 
       
 "A<
r%   r   c                  D    e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZy)r  c                   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y r'   )	r    r!   _callrm   _function_name_root_names_output_namesr   _kwargs)
r"   rw   r2   r3   r4   r5   r6   r   r   r7   s
             r#   r(   zDaskThen.__init__  sH     !0
+%)-r%   c                6    || j                   _        d| _        | S )Nwhenotherwise)r  r   r	  r  s     r#   	otherwisezDaskThen.otherwise  s     ',

#-r%   N)rw   r   r2   r   r3   r   r4   list[str] | Noner5   r  r6   r   r   r   r   r   r7   zdict[str, Any]r9   r   )rM   r  r9   r   )r   r   r   r(   r  r]   r%   r#   r  r    sn     	
  % '  )   
.r%   r  )&
__future__r   	functoolsr   typingr   r   r   r   r	   r
   narwhals._dask.dataframer   narwhals._dask.exprr   narwhals._dask.selectorsr   narwhals._dask.utilsr   r   r   r   r   r   r   r   narwhals.typingr   	dask_exprnarwhals._dask.typingr   narwhals.dtypesr   narwhals.utilsr   r   r   r  r]   r%   r#   <module>r     sz    "         2 ( : 4 4 9 3 ; 9 < .2%&Y
&'9: Y
x
=
 =
@x r%   