
    [i2                    X   d dl mZ d dl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 d dlmZ d dlZd dl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  d dl!m"Z"m#Z#m$Z$ e
r!d dl%m&Z&m'Z' d dl(mc m)Z* d dl!m+Z+ d dl,m-Z-m.Z.m/Z/  G d deeeej`                  f   eeef         Z1y)    )annotationsN)datedatetime)reduce)chain)TYPE_CHECKINGcast)DepthTrackingNamespaceLazyNamespaceDaskLazyFrameDaskExpr)DaskSelectorNamespace)align_series_full_broadcastnarwhals_to_native_dtypevalidate_comparand)combine_alias_output_namescombine_evaluate_output_names)Implementationis_nested_literal
zip_strict)IterableIterator)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dZy) DaskNamespacer   _implementationc                ,    t        j                  |       S N)r   from_namespaceselfs    i/var/www/html/userprofiledev.eatanceapp.com/venv/lib/python3.12/site-packages/narwhals/_dask/namespace.py	selectorszDaskNamespace.selectors*   s    $33D99    c                    t         S r#   r   r%   s    r'   _exprzDaskNamespace._expr.   s    r)   c                    t         S r#   r   r%   s    r'   
_lazyframezDaskNamespace._lazyframe2   s    r)   c                   || _         y r#   )_version)r&   versions     r'   __init__zDaskNamespace.__init__6   s	    r)   c                     t              r#dt              j                   }t        |      d fd} j	                  |d d  j
                        S )Nz<Nested structures are not supported for Dask backend, found c                   0t        j                        }t        j                  g|d      }nTt	        t
              r,t	        t              sd}t        j                  g|d      }nt        j                  gd      }| j                  j                  }t        j                  ||      }|d   j                         gS )Nliteral)dtypenamezdate32[pyarrow])r6   )npartitionsr   )r   r/   pdSeries
isinstancer   r   _native_framer7   ddfrom_pandas	to_series)dfnative_dtypenative_pd_seriesr7   dask_seriesr5   r&   values        r'   funczDaskNamespace.lit.<locals>.func>   s     7t}}M#%99eWLy#Y E4(x2
  1#%99eWLy#Y #%99eW9#E **66K..)9{SKN,,.//r)   c                    dgS Nr4    _dfs    r'   <lambda>z#DaskNamespace.lit.<locals>.<lambda>Q   s    ykr)   evaluate_output_namesalias_output_namesr0   r?   r   returnzlist[dx.Series])r   type__name__NotImplementedErrorr+   r/   )r&   rC   r5   msgrD   s   ```  r'   litzDaskNamespace.lit9   s]    U#PQUV[Q\QeQePfgC%c**	0" zz"9#MM	  
 	
r)   c                J    dd}| j                  |d d | j                        S )Nc                l    | j                   | j                  d      j                  j                         gS )Nr   )r;   columnssizer>   )r?   s    r'   rD   zDaskNamespace.len.<locals>.funcW   s-    $$RZZ]388BBDEEr)   c                    dgS )NlenrG   rH   s    r'   rJ   z#DaskNamespace.len.<locals>.<lambda>]   s    ugr)   rK   rN   )r+   r/   )r&   rD   s     r'   rZ   zDaskNamespace.lenV   s0    	F zz"5#MM	  
 	
r)   c               j    dfd}| j                  |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#   rG   .0er?   s     r'   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>d        =SUaeU   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)boolTNr5   fillnar_   ss     r'   ra   z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>i   s)     Ufqww&0!ahhtnDf   ,.)r   from_iterabler   operatorand_r   r?   seriesexprsignore_nullss   ` r'   rD   z*DaskNamespace.all_horizontal.<locals>.funcc   sG    */*=*==SU=S*SF UfU8==*Eb*R6*RSTTr)   callrL   rM   r0   rN   r+   r   r   r/   r&   rq   rp   rD   s    `` r'   all_horizontalzDaskNamespace.all_horizontalb   s;    	U zz"?"G95AMM	  
 	
r)   c               j    dfd}| j                  |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#   rG   r^   s     r'   ra   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>u   rb   rc   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)re   FNrf   rh   s     r'   ra   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>w   s)     Vv!qww&0!ahhuoEvrj   )r   rk   r   rl   or_r   rn   s   ` r'   rD   z*DaskNamespace.any_horizontal.<locals>.funct   sE    */*=*==SU=S*SFVvV8<<)DR)Q&)QRSSr)   rr   rN   rt   ru   s    `` r'   any_horizontalzDaskNamespace.any_horizontals   s;    	T zz"?"G95AMM	  
 	
r)   c                f    dfd}| j                  |t         t         | j                        S )Nc                     t         g fdD         }t        j                  |d      j                  d      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr#   rG   r_   r+   ri   r?   s      r'   ra   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>        >UEE"IqaIaU      axis)r   r<   concatsumr?   ro   rp   s   ` r'   rD   z*DaskNamespace.sum_horizontal.<locals>.func   sA    0>U>F IIf1-11q19::r)   rr   rN   rt   r&   rp   rD   s    ` r'   sum_horizontalzDaskNamespace.sum_horizontal   s:    	; zz"?"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)r0   diagonalouter)AssertionErrorr;   rW   	enumeraterZ   allto_list	TypeErrorr   r<   r   r/   rR   )	r&   itemshowrS   idfscols_0r?   cols_currents	            r'   r   zDaskNamespace.concat   s-    +C %%(-.1q.Q*"3qr7!42!zz&#f+5LF<R;W;W;Y--3^^-=,> ?**+B|/C/C/E.FbJ 
 $C.( 5 !		#AG4dmm  * 		#AG4dmm  "!- /s   D#c                f    dfd}| j                  |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rg   rh   s     r'   ra   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     6YLqqxx{Ls   c              3  B   K   | ]  }d |j                         z
    yw)r   N)isnarh   s     r'   ra   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     9Lqa!&&(lLs   c                    | |z   S r#   rG   xys     r'   rJ   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>       a!er)   c                    | |z   S r#   rG   r   s     r'   rJ   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   r   r)   z	dx.Series)r   r   r	   )	r?   r+   ri   expr_resultsro   non_nanumdenrp   s	           r'   rD   z+DaskNamespace.mean_horizontal.<locals>.func   s    +0D5%%)QA)A5LD0Z6YL6YZF09L9F +V4C+V4CcCi011 Es   A0rr   rN   rt   r   s    ` r'   mean_horizontalzDaskNamespace.mean_horizontal   s:    	2 zz"?"G95AMM	  
 	
r)   c                f    dfd}| j                  |t         t         | j                        S )Nc                     t         g fdD         }t        j                  |d      j                  d      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr#   rG   r   s      r'   ra   z=DaskNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   r   r   r   r   )r   r<   r   minr   s   ` r'   rD   z*DaskNamespace.min_horizontal.<locals>.func   A    0>U>F IIf1-11q19::r)   rr   rN   rt   r   s    ` r'   min_horizontalzDaskNamespace.min_horizontal   :    	; zz"?"G95AMM	  
 	
r)   c                f    dfd}| j                  |t         t         | j                        S )Nc                     t         g fdD         }t        j                  |d      j                  d      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr#   rG   r   s      r'   ra   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r   r   r   )r   r<   r   maxr   s   ` r'   rD   z*DaskNamespace.max_horizontal.<locals>.func   r   r)   rr   rN   rt   r   s    ` r'   max_horizontalzDaskNamespace.max_horizontal   r   r)   c          	         dfd}| j                  |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strrh   s     r'   ra   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s      'U!'Us   !c                    | z   |z   S r#   rG   )r   r   	separators     r'   rJ   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   )r_   nmr   s     r'   ra   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s+      , FF"Y7cFB,s   $'c              3  ,   K   | ]  \  }}||z     y wr#   rG   )r_   ri   vs      r'   ra   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s     F'Etq!QU'Es   )r   r   r   rl   r{   wherer   add)r?   r+   ri   r   ro   	null_masknull_mask_resultresultr   
init_valuevalues
separatorsrp   rq   r   s               r'   rD   z&DaskNamespace.concat_str.<locals>.func   s/   +0D5%%)QA)A5LD'B2'U'UF ,Gr+YL+YZ+Ya+YIZ#)(,,	#B  >GMM%%t$ 8O 3=VY2O'2OBAGGRC$2O'#
V'n
  LLFz*f'EF 8O5 E ['s   DD(Dr   _evaluate_output_namesc                    dgS rF   rG   rH   s    r'   rJ   z*DaskNamespace.concat_str.<locals>.<lambda>   s    r)   _alias_output_namesrr   rN   r+   getattrr/   )r&   r   rq   rp   rD   s    ``` r'   
concat_strzDaskNamespace.concat_str   sR    	: zz")a24K#  'uQx1FMMM  
 	
r)   c                f    dfd}| j                  |t         t         | j                        S )Nc                L     t         g fdD         }t        d |      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr#   rG   r   s      r'   ra   z7DaskNamespace.coalesce.<locals>.func.<locals>.<genexpr>	  r   r   c                $    | j                  |      S r#   r   r   s     r'   rJ   z6DaskNamespace.coalesce.<locals>.func.<locals>.<lambda>  s    r)   )r   r   r   s   ` r'   rD   z$DaskNamespace.coalesce.<locals>.func  s0    0>U>F 3V<==r)   rr   rN   rt   r   s    ` r'   coalescezDaskNamespace.coalesce  s:    	> zz"?"G95AMM	  
 	
r)   Nc           	         dfd}| j                  |t        dd       t        dd       | j                        S )Nc                   | j                  	      }| j                        n}| j                        }t        d 	fn	fD              r@| j                  |j                               }| j                  j	                               }|} .t        | ||      \  }}t        ||       |j                  |      gS t        | |||      \  }}}t        ||       t        ||       |j                  ||      gS )Nc              3  H   K   | ]  }|j                   j                    y wr#   )	_metadatais_scalar_like)r_   r   s     r'   ra   z8DaskNamespace.when_then.<locals>.func.<locals>.<genexpr>"  s)      6  **6s    ")_evaluate_single_output_exprr   _with_nativeto_frame	broadcastr   r   r   )
r?   
then_valueotherwise_value	conditionnew_dfthen_seriesotherwise_series	otherwise	predicatethens
          r'   rD   z%DaskNamespace.when_then.<locals>.func  s6   88>J ( //	:  77	BI   !( %#T956  ););)=>;;I<O<O<QR	 +F	:,(K #9k:#)))4559TIz?:6Y%5 y+6y*:;%%i1ABCCr)   r   c                    dgS rF   rG   rH   s    r'   rJ   z)DaskNamespace.when_then.<locals>.<lambda>>  s    YKr)   r   rr   rN   r   )r&   r   r   r   rD   s    ``` r'   	when_thenzDaskNamespace.when_then  sL    "	DH zz").0G#  't-BDIMM  
 	
r)   )rO   r   )rO   ztype[DaskExpr])rO   ztype[DaskLazyFrame])r0   r   rO   None)rC   r   r5   zIntoDType | NonerO   r   )rO   r   )rp   r   rq   re   rO   r   )rp   r   rO   r   )r   zIterable[DaskLazyFrame]r   r   rO   r   )rp   r   r   r   rq   re   rO   r   r#   )r   r   r   r   r   zDaskExpr | NonerO   r   )rQ   
__module____qualname__r   DASKr!   __annotations__propertyr(   r+   r-   r1   rT   rZ   rv   r|   r   r   r   r   r   r   r   r   rG   r)   r'   r    r    $   s     '5&9&9O^9: :     
:


"

","6B"	"<
$

'
'
+.'
>B'
	'
R
 QU.
!.
)1.
>M.
	.
r)   r    )2
__future__r   rl   r   r   	functoolsr   	itertoolsr   typingr   r	   dask.dataframe	dataframer<   pandasr8   narwhals._compliantr
   r   narwhals._dask.dataframer   narwhals._dask.exprr   narwhals._dask.selectorsr   narwhals._dask.utilsr   r   r   narwhals._expression_parsingr   r   narwhals._utilsr   r   r   collections.abcr   r   dask.dataframe.dask_expr	dask_exprdxr   narwhals.typingr   r   r   	DataFramer    rG   r)   r'   <module>r     s    "  #   &   E 2 ( : 
 J I2))'II^
-2<<78=(23^
r)   