
    /_iC1                    T   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# 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         Z0y)    )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
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    W/var/www/html/land_sniper/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                X     d fd} j                  |d d  j                        S )Nc                   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])r5   )npartitionsr   )r   r.   pdSeries
isinstancer   r   _native_framer6   ddfrom_pandas	to_series)dfnative_dtypenative_pd_seriesr6   dask_seriesr4   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 Nr3    _dfs    r&   <lambda>z#DaskNamespace.lit.<locals>.<lambda>M   s    yk r(   evaluate_output_namesalias_output_namesr/   r>   r   returnzlist[dx.Series]r*   r.   )r%   rB   r4   rC   s   ``` r&   litzDaskNamespace.lit9   s0    	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&   rC   zDaskNamespace.len.<locals>.funcS   s-    $$RZZ]388BBDEEr(   c                    dgS )NlenrF   rG   s    r&   rI   z#DaskNamespace.len.<locals>.<lambda>Y   s    ug r(   rJ   rM   rO   )r%   rC   s     r&   rV   zDaskNamespace.lenR   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"   rF   .0er>   s     r&   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>`        =Sae=S   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)boolTNr4   fillnar[   ss     r&   r]   z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>e   s(     Uqww&0!ahhtnDU   ,.)r   from_iterabler   operatorand_r   r>   seriesexprsignore_nullss   ` r&   rC   z*DaskNamespace.all_horizontal.<locals>.func_   sG    */*=*==SU=S*SF UfU8==*Eb*R6*RSTTr(   callrK   rL   r/   rM   r*   r   r   r.   r%   rm   rl   rC   s    `` r&   all_horizontalzDaskNamespace.all_horizontal^   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"   rF   rZ   s     r&   r]   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>q   r^   r_   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)ra   FNrb   rd   s     r&   r]   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>s   s(     V!qww&0!ahhuoEVrf   )r   rg   r   rh   or_r   rj   s   ` r&   rC   z*DaskNamespace.any_horizontal.<locals>.funcp   sE    */*=*==SU=S*SFVvV8<<)DR)Q&)QRSSr(   rn   rM   rp   rq   s    `` r&   any_horizontalzDaskNamespace.any_horizontalo   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"   rF   r[   r*   re   r>   s      r&   r]   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   !     >EE"I>qa>a>      axis)r   r;   concatsumr>   rk   rl   s   ` r&   rC   z*DaskNamespace.sum_horizontal.<locals>.func~   sA    0>U>F IIf1-11q19::r(   rn   rM   rp   r%   rl   rC   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)r/   diagonalouter)AssertionErrorr:   rS   	enumeraterV   allto_list	TypeErrorr   r;   r   r.   NotImplementedError)	r%   itemshowmsgidfscols_0r>   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                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rc   rd   s     r&   r]   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     6Yqqxx{6Ys   c              3  B   K   | ]  }d |j                         z
    yw)r   N)isnard   s     r&   r]   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     9qa!&&(l9s   c                    | |z   S r"   rF   xys     r&   rI   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   
    a!e r(   c                    | |z   S r"   rF   r   s     r&   rI   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   r   r(   z	dx.Series)r   r   r	   )	r>   r*   re   expr_resultsrk   non_nanumdenrl   s	           r&   rC   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rn   rM   rp   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"   rF   r|   s      r&   r]   z=DaskNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   r}   r~   r   r   )r   r;   r   minr   s   ` r&   rC   z*DaskNamespace.min_horizontal.<locals>.func   A    0>U>F IIf1-11q19::r(   rn   rM   rp   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"   rF   r|   s      r&   r]   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r}   r~   r   r   )r   r;   r   maxr   s   ` r&   rC   z*DaskNamespace.max_horizontal.<locals>.func   r   r(   rn   rM   rp   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strrd   s     r&   r]   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s      "#s   !c                    | z   |z   S r"   rF   )r   r   	separators     r&   rI   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&   r]   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s+       FF"Y7cFBs   $'c              3  ,   K   | ]  \  }}||z     y wr"   rF   )r[   re   vs      r&   r]   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s     Ftq!QUFs   )r   r   r   rh   rw   wherer   add)r>   r*   re   r   rk   	null_masknull_mask_resultresultr   
init_valuevalues
separatorsrl   rm   r   s               r&   rC   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r   _evaluate_output_namesc                    dgS rE   rF   rG   s    r&   rI   z*DaskNamespace.concat_str.<locals>.<lambda>   s     r(   _alias_output_namesrn   rM   r*   getattrr.   )r%   r   rm   rl   rC   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"   rF   r|   s      r&   r]   z7DaskNamespace.coalesce.<locals>.func.<locals>.<genexpr>  r}   r~   c                $    | j                  |      S r"   r   r   s     r&   rI   z6DaskNamespace.coalesce.<locals>.func.<locals>.<lambda>  s     r(   )r   r   r   s   ` r&   rC   z$DaskNamespace.coalesce.<locals>.func  s0    0>U>F 3V<==r(   rn   rM   rp   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&   r]   z8DaskNamespace.when_then.<locals>.func.<locals>.<genexpr>  s"       **s    ")_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&   rC   z%DaskNamespace.when_then.<locals>.func  s1   88>J ( //	:  77	BI   !( %#T95  ););)=>;;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 rE   rF   rG   s    r&   rI   z)DaskNamespace.when_then.<locals>.<lambda>:  s    YK r(   r   rn   rM   r   )r%   r   r   r   rC   s    ``` r&   	when_thenzDaskNamespace.when_then  sL    "	DH zz").0G#  't-BDIMM  
 	
r(   )rN   r   )rN   ztype[DaskExpr])rN   ztype[DaskLazyFrame])r/   r   rN   None)rB   r   r4   zIntoDType | NonerN   r   )rN   r   )rl   r   rm   ra   rN   r   )rl   r   rN   r   )r   zIterable[DaskLazyFrame]r   r   rN   r   )rl   r   r   r   rm   ra   rN   r   r"   )r   r   r   r   r   zDaskExpr | NonerN   r   )__name__
__module____qualname__r   DASKr    __annotations__propertyr'   r*   r,   r0   rP   rV   rr   rx   r   r   r   r   r   r   r   r   rF   r(   r&   r   r   $   s     '5&9&9O^9: :     
2


"

","6B"	"<
$

'
'
+.'
>B'
	'
R
 QU.
!.
)1.
>M.
	.
r(   r   )1
__future__r   rh   r   r   	functoolsr   	itertoolsr   typingr   r	   dask.dataframe	dataframer;   pandasr7   narwhals._compliantr
   r   narwhals._dask.dataframer   narwhals._dask.exprr   narwhals._dask.selectorsr   narwhals._dask.utilsr   r   r   narwhals._expression_parsingr   r   narwhals._utilsr   r   collections.abcr   r   dask.dataframe.dask_expr	dask_exprdxr   narwhals.typingr   r   r   	DataFramer   rF   r(   r&   <module>r
     s~    "  #   &   E 2 ( : 
 72))'IIZ
-2<<78=(23Z
r(   