
    Wh3              	         d dl mZ d dl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Zd 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mZmZmZ d dlmZm Z m!Z! d dl"m#Z#m$Z$ er)d dl%m&Z&m'Z'm(Z( d dl)mc m*Z+ d dl,m-Z- d dl"m.Z. d dl/m0Z0m1Z1m2Z2  G d deeeejf                  f   eeef         Z4 G d deedef         Z5 G d deedee5f   e      Z6y)    )annotationsN)reduce)chain)TYPE_CHECKINGcast)CompliantThenCompliantWhenDepthTrackingNamespaceLazyNamespaceDaskLazyFrameDaskExpr)DaskSelectorNamespace)align_series_full_broadcastnarwhals_to_native_dtypevalidate_comparand)ExprKindcombine_alias_output_namescombine_evaluate_output_names)Implementation
zip_strict)IterableIteratorSequence)ScalarKwargs)Version)ConcatMethod	IntoDTypeNonNestedLiteralc                      e Zd ZU ej                  Zded<   edd       Ze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ddZddZddZddZ	 	 	 	 	 	 	 	 ddZddZy)DaskNamespacer   _implementationc                ,    t        j                  |       S N)r   from_namespaceselfs    R/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/_dask/namespace.py	selectorszDaskNamespace.selectors0   s    $33D99    c                    t         S r%   r   r'   s    r)   _exprzDaskNamespace._expr4       r+   c                    t         S r%   r   r'   s    r)   
_lazyframezDaskNamespace._lazyframe8   s    r+   c                   || _         y r%   )_version)r(   versions     r)   __init__zDaskNamespace.__init__<   s	    r+   c                \     d fd} j                  |ddd d  j                        S )Nc                   0t        j                        }t        j                  g|d      }nt        j                  gd      }| j                  j
                  }t        j                  ||      }|d   j                         gS )Nliteral)dtypename)r9   )npartitionsr   )	r   r2   pdSeries_native_framer:   ddfrom_pandas	to_series)dfnative_dtypenative_pd_seriesr:   dask_seriesr8   r(   values        r)   funczDaskNamespace.lit.<locals>.func@   sy     7t}}M#%99eWLy#Y #%99eW9#E **66K..)9{SKN,,.//r+   r   litc                    dgS Nr7    _dfs    r)   <lambda>z#DaskNamespace.lit.<locals>.<lambda>N   s    yk r+   depthfunction_nameevaluate_output_namesalias_output_namesr3   rA   r   returnzlist[dx.Series]r-   r2   )r(   rE   r8   rF   s   ``` r)   rG   zDaskNamespace.lit?   s6    	0 zz"9#MM  
 	
r+   c                N    dd}| j                  |ddd d | j                        S )Nc                l    | j                   | j                  d      j                  j                         gS Nr   )r=   columnssizer@   )rA   s    r)   rF   zDaskNamespace.len.<locals>.funcT   s-    $$RZZ]388BBDEEr+   r   lenc                    dgS )Nr[   rJ   rK   s    r)   rM   z#DaskNamespace.len.<locals>.<lambda>\   s    ug r+   rN   rS   rU   )r(   rF   s     r)   r[   zDaskNamespace.lenS   s6    	F zz"5#MM  
 	
r+   c          	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                     t        j                   fdD              }r	d |D        }t        t        j                  t         g|       gS )Nc              3  .   K   | ]  } |        y wr%   rJ   .0erA   s     r)   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>c        =Sae=S   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)boolTNr8   fillnara   ss     r)   rc   z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>h   s(     Uqww&0!ahhtnDU   ,.)r   from_iterabler   operatorand_r   rA   seriesexprsignore_nullss   ` r)   rF   z*DaskNamespace.all_horizontal.<locals>.funcb   sG    */*=*==SU=S*SF UfU8==*Eb*R6*RSTTr+   c              3  4   K   | ]  }|j                     y wr%   _depthra   xs     r)   rc   z/DaskNamespace.all_horizontal.<locals>.<genexpr>m        .1ahh.      all_horizontalcallrO   rP   rQ   rR   r3   rS   r-   maxr   r   r2   r(   rs   rr   rF   s    `` r)   r|   zDaskNamespace.all_horizontala   sQ    	U zz...2*"?"G95AMM  
 	
r+   c          	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                     t        j                   fdD              }r	d |D        }t        t        j                  t         g|       gS )Nc              3  .   K   | ]  } |        y wr%   rJ   r`   s     r)   rc   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>v   rd   re   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)rg   FNrh   rj   s     r)   rc   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>x   s(     V!qww&0!ahhuoEVrl   )r   rm   r   rn   or_r   rp   s   ` r)   rF   z*DaskNamespace.any_horizontal.<locals>.funcu   sE    */*=*==SU=S*SFVvV8<<)DR)Q&)QRSSr+   c              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z/DaskNamespace.any_horizontal.<locals>.<genexpr>}   ry   rz   r{   any_horizontalr}   rS   r   r   s    `` r)   r   zDaskNamespace.any_horizontalt   sQ    	T zz...2*"?"G95AMM  
 	
r+   c           	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                     t         g fdD         }t        j                  |d      j                  d      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr%   rJ   ra   r-   rk   rA   s      r)   rc   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   !     >EE"I>qa>a>   r{   axis)r   r>   concatsumrA   rq   rr   s   ` r)   rF   z*DaskNamespace.sum_horizontal.<locals>.func   sA    0>U>F IIf1-11q19::r+   c              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z/DaskNamespace.sum_horizontal.<locals>.<genexpr>   ry   rz   r{   sum_horizontalr}   rS   r   r(   rr   rF   s    ` r)   r   zDaskNamespace.sum_horizontal   sP    	; zz...2*"?"G95AMM  
 	
r+   c               P   |s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        t        j                  |dd
      | j                        S |dk(  r-t        t        j                  |dd      | j                        S t        c c}w )NzNo items to concatenater   verticalr{   )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
inner)r   join)r3   diagonalouter)AssertionErrorr=   rY   	enumerater[   allto_list	TypeErrorr   r>   r   r2   NotImplementedError)	r(   itemshowmsgidfscols_0rA   cols_currents	            r)   r   zDaskNamespace.concat   s1    +C %%(-.1q..Q*"3qr7!4 
)2!zz&#f+5LF<R;W;W;Y--3^^-=,> ?**+B|/C/C/E.FbJ 
 $C.(
) !		#AG4dmm  * 		#AG4dmm  "!- /s   D#c           	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                    D cg c]  } ||       D ]  }|  }}}t        | gd |D         }t        | gd |D         }t        d |      }t        d |      }t        d||z        gS c c}}w )Nc              3  >   K   | ]  }|j                  d         yw)r   Nri   rj   s     r)   rc   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     6Yqqxx{6Ys   c              3  B   K   | ]  }d |j                         z
    yw)r{   N)isnarj   s     r)   rc   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     9qa!&&(l9s   c                    | |z   S r%   rJ   rx   ys     r)   rM   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   
    a!e r+   c                    | |z   S r%   rJ   r   s     r)   rM   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   r   r+   	dx.Series)r   r   r   )	rA   r-   rk   expr_resultsrq   non_nanumdenrr   s	           r)   rF   z+DaskNamespace.mean_horizontal.<locals>.func   s    +0D%%)DQADADLD0Z6YL6YZF09L9F +V4C+V4CcCi011 Es   A0c              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z0DaskNamespace.mean_horizontal.<locals>.<genexpr>   ry   rz   r{   mean_horizontalr}   rS   r   r   s    ` r)   r   zDaskNamespace.mean_horizontal   sP    	2 zz...2+"?"G95AMM  
 	
r+   c           	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                     t         g fdD         }t        j                  |d      j                  d      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr%   rJ   r   s      r)   rc   z=DaskNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   r   r   r{   r   )r   r>   r   minr   s   ` r)   rF   z*DaskNamespace.min_horizontal.<locals>.func   A    0>U>F IIf1-11q19::r+   c              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z/DaskNamespace.min_horizontal.<locals>.<genexpr>   ry   rz   r{   min_horizontalr}   rS   r   r   s    ` r)   r   zDaskNamespace.min_horizontal   P    	; zz...2*"?"G95AMM  
 	
r+   c           	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                     t         g fdD         }t        j                  |d      j                  d      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr%   rJ   r   s      r)   rc   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r   r{   r   )r   r>   r   r   r   s   ` r)   rF   z*DaskNamespace.max_horizontal.<locals>.func   r   r+   c              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z/DaskNamespace.max_horizontal.<locals>.<genexpr>   ry   rz   r{   max_horizontalr}   rS   r   r   s    ` r)   r   zDaskNamespace.max_horizontal   r   r+   c                0    t         j                  ||       S )N)context)DaskWhen	from_expr)r(   	predicates     r)   whenzDaskNamespace.when   s    !!)T!::r+   c                   d
fd}| j                  |t        d D              dz   dt        d   dd       t        d   dd       | j                  	      S )Nc                2   D cg c]  } ||       D ]  }|  }}}d t        | g| D        }t        | g| D cg c]  }|j                          }}s=t        t        j                  |      }t        fd|      j                  | d       }|gS t        ||      D cg c]  \  }}|j                  | d       c}}^}	}
fd|d d D        }t        t        j                  d t        ||
      D        |	      }|gS c c}}w c c}w c c}}w )Nc              3  F   K   | ]  }|j                  t                y wr%   )astypestrrj   s     r)   rc   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s      "#s   !c                    | z   |z   S r%   rJ   )rx   r   	separators     r)   rM   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>   s    Q]Q-> r+    c              3  R   K   | ]  }|j                  d dt                 yw)r   )TF)metaN)mapr   )ra   nmr   s     r)   rc   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s+       FF"Y7cFBs   $'c              3  ,   K   | ]  \  }}||z     y wr%   rJ   )ra   rk   vs      r)   rc   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>  s     Ftq!QUFs   )r   r   r   rn   r   wherer   add)rA   r-   rk   r   rq   	null_masknull_mask_resultresultr   
init_valuevalues
separatorsrr   rs   r   s               r)   rF   z&DaskNamespace.concat_str.<locals>.func   s*   +0D%%)DQADADLD'B2'U'UF ,Gr+YL+YZaZIZ#)(,,	#B  >GMM%%t$ 8O 3=VY2O').BAGGRC$'#
V'n
  LLFz*f'EF 8O5 E ['s   DD(Dc              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z+DaskNamespace.concat_str.<locals>.<genexpr>  ry   rz   r{   
concat_strr   _evaluate_output_namesc                    dgS rI   rJ   rK   s    r)   rM   z*DaskNamespace.concat_str.<locals>.<lambda>  s     r+   _alias_output_namesr}   rS   )r-   r   getattrr2   )r(   r   rs   rr   rF   s    ``` r)   r   zDaskNamespace.concat_str   sh    	: zz...2&")a24K#  'uQx1FMMM  	
 		
r+   c           	         dfd}| j                  |t        d D              dz   dt         t         | j                        S )Nc                L     t         g fdD         }t        d |      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr%   rJ   r   s      r)   rc   z7DaskNamespace.coalesce.<locals>.func.<locals>.<genexpr>  r   r   c                $    | j                  |      S r%   r   r   s     r)   rM   z6DaskNamespace.coalesce.<locals>.func.<locals>.<lambda>  s     r+   )r   r   r   s   ` r)   rF   z$DaskNamespace.coalesce.<locals>.func  s0    0>U>F 3V<==r+   c              3  4   K   | ]  }|j                     y wr%   ru   rw   s     r)   rc   z)DaskNamespace.coalesce.<locals>.<genexpr>  ry   rz   r{   coalescer}   rS   r   r   s    ` r)   r   zDaskNamespace.coalesce  sP    	> zz...2$"?"G95AMM  
 	
r+   N)rT   r   )rT   ztype[DaskExpr])rT   ztype[DaskLazyFrame])r3   r   rT   None)rE   r    r8   zIntoDType | NonerT   r   )rT   r   )rr   r   rs   rg   rT   r   )rr   r   rT   r   )r   zIterable[DaskLazyFrame]r   r   rT   r   )r   r   rT   r   )rr   r   r   r   rs   rg   rT   r   )__name__
__module____qualname__r   DASKr#   __annotations__propertyr*   r-   r0   r4   rG   r[   r|   r   r   r   r   r   r   r   r   r   rJ   r+   r)   r"   r"   *   s     '5&9&9O^9: :     
(

&
 
 ","6B"	"<
(
"
";)
)
+.)
>B)
	)
V
r+   r"   c                  &    e Zd Zedd       ZddZy)r   c                    t         S r%   )DaskThenr'   s    r)   _thenzDaskWhen._then(  r.   r+   c                   t        | j                  t              r| j                  |      d   n| j                  }t        | j                  t              r| j                  |      d   n| j                  }| j	                  |      d   }| j                  j
                  J | j                  j
                  j                  rS|j                  |j                               } | j                  j                  t        j                        |      d   }|}| j                  .t        |||      \  }}t        ||       |j                  |      gS t        ||||      \  }}}t        ||       t        ||       |j                  ||      gS rX   )
isinstance_then_valuer   _otherwise_value
_condition	_metadatais_scalar_like_with_nativeto_frame	broadcastr   AGGREGATIONr   r   r   )r(   rA   
then_valueotherwise_value	conditionnew_dfthen_seriesotherwise_seriess           r)   __call__zDaskWhen.__call__,  sy    $**H5 R #!! 	 $//: !!"%a(&& 	 OOB'*	 ((444??$$33__Y%7%7%9:FG11(2F2FGKANIB  ('BIz($Y y+6%%i0115P	:6
2K!1 	9k29&67!!)-=>??r+   N)rT   ztype[DaskThen])rA   r   rT   zSequence[dx.Series])r   r   r   r   r   r  rJ   r+   r)   r   r   '  s      @r+   r   r   c                  8    e Zd ZU dZded<   i Zded<   dZded<   y	)
r   r   intrv   r   _scalar_kwargswhenthenr   _function_nameN)r   r   r   rv   r   r  r  rJ   r+   r)   r   r   O  s    FCO#%NL%$NC$r+   r   )7
__future__r   rn   	functoolsr   	itertoolsr   typingr   r   dask.dataframe	dataframer>   pandasr;   narwhals._compliantr   r	   r
   r   narwhals._dask.dataframer   narwhals._dask.exprr   narwhals._dask.selectorsr   narwhals._dask.utilsr   r   r   narwhals._expression_parsingr   r   r   narwhals._utilsr   r   collections.abcr   r   r   dask.dataframe.dask_expr	dask_exprdxnarwhals._compliant.typingr   r   narwhals.typingr   r   r    	DataFramer"   r   r   rJ   r+   r)   <module>r+     s    "    &    3 ( : 
 
 7<<))7'IIz
-2<<78=(23z
z%@}]KAB %@P%}]K8KLh %r+   