
    .i4                    `   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$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/m0Z0m1Z1  G d deeeejd                  f   eeef         Z3y)    )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not_implemented
zip_strict)IterableIterator)Version)ConcatMethodCorrelationMethod	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d!dZ e       Zy)"DaskNamespacer   _implementationc                ,    t        j                  |       S N)r   from_namespaceselfs    U/opt/house_gps_flutter/.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._expr3   s    r+   c                    t         S r%   r   r'   s    r)   
_lazyframezDaskNamespace._lazyframe7   s    r+   c                   || _         y r%   )_version)r(   versions     r)   __init__zDaskNamespace.__init__;   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])r8   )npartitionsr   )r   r1   pdSeries
isinstancer   r   _native_framer9   ddfrom_pandas	to_series)dfnative_dtypenative_pd_seriesr9   dask_seriesr7   r(   values        r)   funczDaskNamespace.lit.<locals>.funcC   s     7t}}M#%99eWLy#Y E4(x2
  1#%99eWLy#Y #%99eW9#E **66K..)9{SKN,,.//r+   c                    dgS Nr6    _dfs    r)   <lambda>z#DaskNamespace.lit.<locals>.<lambda>V   s    yk r+   evaluate_output_namesalias_output_namesr2   rA   r   returnzlist[dx.Series])r   type__name__NotImplementedErrorr-   r1   )r(   rE   r7   msgrF   s   ```  r)   litzDaskNamespace.lit>   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@   )rA   s    r)   rF   zDaskNamespace.len.<locals>.func\   s-    $$RZZ]388BBDEEr+   c                    dgS )NlenrI   rJ   s    r)   rL   z#DaskNamespace.len.<locals>.<lambda>b   s    ug r+   rM   rP   )r-   r1   )r(   rF   s     r)   r\   zDaskNamespace.len[   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%   rI   .0erA   s     r)   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>i        =Sae=S   c              3  `   K   | ]&  }|j                   d k(  r|n|j                  d       ( yw)boolTNr7   fillnara   ss     r)   rc   z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>n   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>.funch   sG    */*=*==SU=S*SF UfU8==*Eb*R6*RSTTr+   callrN   rO   r2   rP   r-   r   r   r1   r(   rs   rr   rF   s    `` r)   all_horizontalzDaskNamespace.all_horizontalg   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%   rI   r`   s     r)   rc   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>z   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>|   s(     V!qww&0!ahhuoEVrl   )r   rm   r   rn   or_r   rp   s   ` r)   rF   z*DaskNamespace.any_horizontal.<locals>.funcy   sE    */*=*==SU=S*SFVvV8<<)DR)Q&)QRSSr+   rt   rP   rv   rw   s    `` r)   any_horizontalzDaskNamespace.any_horizontalx   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%   rI   ra   r-   rk   rA   s      r)   rc   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   !     >EE"I>qa>a>      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+   rt   rP   rv   r(   rr   rF   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)r2   diagonalouter)AssertionErrorr=   rY   	enumerater\   allto_list	TypeErrorr   r>   r   r1   rT   )	r(   itemshowrU   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                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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%   rI   xys     r)   rL   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   
    a!e r+   c                    | |z   S r%   rI   r   s     r)   rL   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   r   r+   z	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rt   rP   rv   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%   rI   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+   rt   rP   rv   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%   rI   r   s      r)   rc   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r   r   r   )r   r>   r   maxr   s   ` r)   rF   z*DaskNamespace.max_horizontal.<locals>.func   r   r+   rt   rP   rv   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strrj   s     r)   rc   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s      "#s   !c                    | z   |z   S r%   rI   )r   r   	separators     r)   rL   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%   rI   )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r   _evaluate_output_namesc                    dgS rH   rI   rJ   s    r)   rL   z*DaskNamespace.concat_str.<locals>.<lambda>  s     r+   _alias_output_namesrt   rP   r-   getattrr1   )r(   r   rs   rr   rF   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%   rI   r   s      r)   rc   z7DaskNamespace.coalesce.<locals>.func.<locals>.<genexpr>  r   r   c                $    | j                  |      S r%   r   r   s     r)   rL   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+   rt   rP   rv   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)ra   r   s     r)   rc   z8DaskNamespace.when_then.<locals>.func.<locals>.<genexpr>'  s"       **s    ")_evaluate_single_output_exprr   _with_nativeto_frame	broadcastr   r   r   )
rA   
then_valueotherwise_value	conditionnew_dfthen_seriesotherwise_series	otherwise	predicatethens
          r)   rF   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 rH   rI   rJ   s    r)   rL   z)DaskNamespace.when_then.<locals>.<lambda>C  s    YK r+   r   rt   rP   r   )r(   r   r   r   rF   s    ``` r)   	when_thenzDaskNamespace.when_then  sL    "	DH zz").0G#  't-BDIMM  
 	
r+   c               ~    dfd}| j                  |t              t              | j                        S )Nc                    | j                        }| j                        }|j                  |      j                         gS )N)method)r   corrr@   )rA   a_b_abr   s      r)   rF   z DaskNamespace.corr.<locals>.funcJ  sB    003B003BGGBvG.88:;;r+   rt   rP   rv   )r(   r   r   r   rF   s    ``` r)   r   zDaskNamespace.corrI  s>    	<
 zz"?1"E9!Q?MM	  
 	
r+   )rQ   r   )rQ   ztype[DaskExpr])rQ   ztype[DaskLazyFrame])r2   r   rQ   None)rE   r    r7   zIntoDType | NonerQ   r   )rQ   r   )rr   r   rs   rg   rQ   r   )rr   r   rQ   r   )r   zIterable[DaskLazyFrame]r   r   rQ   r   )rr   r   r   r   rs   rg   rQ   r   r%   )r   r   r   r   r   zDaskExpr | NonerQ   r   )r   r   r   r   r   r   rQ   r   )rS   
__module____qualname__r   DASKr#   __annotations__propertyr*   r-   r/   r3   rV   r\   rx   r~   r   r   r   r   r   r   r   r   r   r   structrI   r+   r)   r"   r"   )   s     '5&9&9O^9: :     
:


"

","6B"	"<
$

'
'
+.'
>B'
	'
R
 QU.
!.
)1.
>M.
	.
`
 Fr+   r"   )4
__future__r   rn   r   r   	functoolsr   	itertoolsr   typingr   r	   dask.dataframe	dataframer>   pandasr:   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   r   collections.abcr   r   dask.dataframe.dask_expr	dask_exprdxr   narwhals.typingr   r   r   r    	DataFramer"   rI   r+   r)   <module>r     s    "  #   &   E 2 ( : 
 [ Z2))' m-2<<78=(23mr+   