
    }i4                    j   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j2        f         eeef                   Z3dS )    )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d3d            Zed4d            Z	ed5d	            Z
d6dZd7dZd8dZd9dZd9d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?d2Z e            Zd(S )@DaskNamespacer   _implementationreturnr   c                *    t          j        |           S N)r   from_namespaceselfs    L/home/jrussi/.local/lib/python3.11/site-packages/narwhals/_dask/namespace.py	selectorszDaskNamespace.selectors/   s    $3D999    type[DaskExpr]c                    t           S r&   r   r(   s    r*   _exprzDaskNamespace._expr3   s    r,   type[DaskLazyFrame]c                    t           S r&   r   r(   s    r*   
_lazyframezDaskNamespace._lazyframe7   s    r,   versionr   Nonec                   || _         d S r&   )_version)r)   r3   s     r*   __init__zDaskNamespace.__init__;   s    r,   valuer    dtypeIntoDType | Noner   c                     t                    r&dt                    j         }t          |          d	 fd}                     |d d  j                  S )
Nz<Nested structures are not supported for Dask backend, found dfr   r$   list[dx.Series]c                   .t          j                  }t          j        g|d          }n\t	          t
                    r0t	          t                    sd}t          j        g|d          }nt          j        gd          }| j        j        }t          j
        ||          }|d                                         gS )Nliteral)r9   namezdate32[pyarrow])r@   )npartitionsr   )r   r6   pdSeries
isinstancer   r   _native_framerA   ddfrom_pandas	to_series)r<   native_dtypenative_pd_seriesrA   dask_seriesr9   r)   r8   s        r*   funczDaskNamespace.lit.<locals>.funcC   s     7t}MM#%9eWLy#Y#Y#Y  E4(( Fx2 2 F
  1#%9eWLy#Y#Y#Y  #%9eW9#E#E#E *6K.)9{SSSKN,,..//r,   c                    dgS Nr?    _dfs    r*   <lambda>z#DaskNamespace.lit.<locals>.<lambda>V   s    yk r,   evaluate_output_namesalias_output_namesr3   r<   r   r$   r=   )r   type__name__NotImplementedErrorr/   r6   )r)   r8   r9   msgrL   s   ```  r*   litzDaskNamespace.lit>   s    U## 	+gQUV[Q\Q\QeggC%c***	0 	0 	0 	0 	0 	0 	0 	0" zz"9"9#M	  
 
 	
r,   c                H    dd}|                      |d d | j                  S )	Nr<   r   r$   r=   c                b    | j         | j        d                  j                                        gS )Nr   )rE   columnssizerH   )r<   s    r*   rL   zDaskNamespace.len.<locals>.func\   s(    $RZ]38BBDDEEr,   c                    dgS )NlenrO   rP   s    r*   rR   z#DaskNamespace.len.<locals>.<lambda>b   s    ug r,   rS   rV   )r/   r6   )r)   rL   s     r*   ra   zDaskNamespace.len[   sH    	F 	F 	F 	F zz"5"5#M	  
 
 	
r,   exprsignore_nullsboolc               l    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                     t          j         fdD                       }rd |D             }t          t          j        t           g|R            gS )Nc              3  .   K   | ]} |          V  d S r&   rO   .0er<   s     r*   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>i   +      =S=Saaee=S=S=S=S=S=Sr,   c              3  Z   K   | ]&}|j         d k    r|n|                    d          V  'dS )rd   TNr9   fillnari   ss     r*   rk   z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>n   s<      UUqw&00!!ahhtnnUUUUUUr,   )r   from_iterabler   operatorand_r   r<   seriesrb   rc   s   ` r*   rL   z*DaskNamespace.all_horizontal.<locals>.funch   sm    */*==S=S=S=SU=S=S=S*S*SF  VUUfUUU8=*Eb*R6*R*R*RSSTTr,   callrT   rU   r3   rV   r/   r   r   r6   r)   rc   rb   rL   s    `` r*   all_horizontalzDaskNamespace.all_horizontalg   sc    	U 	U 	U 	U 	U 	U 	U zz"?"G95AM	  
 
 	
r,   c               l    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                     t          j         fdD                       }rd |D             }t          t          j        t           g|R            gS )Nc              3  .   K   | ]} |          V  d S r&   rO   rh   s     r*   rk   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>z   rl   r,   c              3  Z   K   | ]&}|j         d k    r|n|                    d          V  'dS )rd   FNrn   rp   s     r*   rk   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>|   s<      VV!qw&00!!ahhuooVVVVVVr,   )r   rr   r   rs   or_r   ru   s   ` r*   rL   z*DaskNamespace.any_horizontal.<locals>.funcy   sk    */*==S=S=S=SU=S=S=S*S*SF WVVvVVV8<)DR)Q&)Q)Q)QRRSSr,   rw   rV   ry   rz   s    `` r*   any_horizontalzDaskNamespace.any_horizontalx   sc    	T 	T 	T 	T 	T 	T 	T zz"?"G95AM	  
 
 	
r,   c                h    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                     t           g fdD             R  }t          j        |d                              d          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r&   rO   ri   r/   rq   r<   s      r*   rk   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   8      >>EEE"II>>qa>>>>>>>r,      axis)r   rF   concatsumr<   rv   rb   s   ` r*   rL   z*DaskNamespace.sum_horizontal.<locals>.func   sb    0>>>>U>>>  F If1---11q199::r,   rw   rV   ry   r)   rb   rL   s    ` r*   sum_horizontalzDaskNamespace.sum_horizontal   sV    	; 	; 	; 	; 	; 	; zz"?"G95AM	  
 
 	
r,   itemsIterable[DaskLazyFrame]howr   r   c               f   |sd}t          |          d |D             }|d         j        }|dk    rt          |dd          d          D ]\  }}|j        }t          |          t          |          k    r||k                                    s?d|                                 d| d	|                                 d
}t          |          t          t          j	        |dd          | j
                  S |dk    r+t          t          j	        |dd          | j
                  S t          )NzNo items to concatenatec                    g | ]	}|j         
S rO   )rE   )ri   is     r*   
<listcomp>z(DaskNamespace.concat.<locals>.<listcomp>   s    ...1q...r,   r   verticalr   )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
inner)r   join)r3   diagonalouter)AssertionErrorr^   	enumeratera   allto_list	TypeErrorr   rF   r   r6   rY   )	r)   r   r   rZ   dfscols_0r   r<   cols_currents	            r*   r   zDaskNamespace.concat   s     	&+C %%%.....Q*"3qrr7!444 
) 
)2!z&&#f++55LF<R;W;W;Y;Y5J-3^^-=-=J J*+J J/;/C/C/E/EJ J J 
 $C..( 6 !	#AG444dm    * 	#AG444dm    "!r,   c                h    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                      fdD             }t           gd |D             R  }t           gd |D             R  }t          d |          }t          d |          }t          d||z            gS )Nc                0    g | ]} |          D ]}|S rO   rO   r   s      r*   r   z?DaskNamespace.mean_horizontal.<locals>.func.<locals>.<listcomp>   .    DDD%%%))DDQADDDDr,   c              3  @   K   | ]}|                     d           V  dS )r   Nro   rp   s     r*   rk   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s,      6Y6Yqqxx{{6Y6Y6Y6Y6Y6Yr,   c              3  D   K   | ]}d |                                 z
  V  dS )r   Nisnarp   s     r*   rk   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s.      99qa!&&((l999999r,   c                    | |z   S r&   rO   xys     r*   rR   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   
    a!e r,   c                    | |z   S r&   rO   r   s     r*   rR   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   r   r,   z	dx.Series)r   r   r	   )r<   expr_resultsrv   non_nanumdenrb   s   `     r*   rL   z+DaskNamespace.mean_horizontal.<locals>.func   s    DDDD5DDDL0Z6Y6YL6Y6Y6YZZZF099L999  F ++V44C++V44CcCi0011r,   rw   rV   ry   r   s    ` r*   mean_horizontalzDaskNamespace.mean_horizontal   sV    	2 	2 	2 	2 	2 	2 zz"?"G95AM	  
 
 	
r,   c                h    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                     t           g fdD             R  }t          j        |d                              d          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r&   rO   r   s      r*   rk   z=DaskNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   r   r,   r   r   )r   rF   r   minr   s   ` r*   rL   z*DaskNamespace.min_horizontal.<locals>.func   b    0>>>>U>>>  F If1---11q199::r,   rw   rV   ry   r   s    ` r*   min_horizontalzDaskNamespace.min_horizontal   V    	; 	; 	; 	; 	; 	; zz"?"G95AM	  
 
 	
r,   c                h    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                     t           g fdD             R  }t          j        |d                              d          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r&   rO   r   s      r*   rk   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r,   r   r   )r   rF   r   maxr   s   ` r*   rL   z*DaskNamespace.max_horizontal.<locals>.func   r   r,   rw   rV   ry   r   s    ` r*   max_horizontalzDaskNamespace.max_horizontal   r   r,   	separatorstrc          	         dfd}|                      |t          d         dd           t          d         d	d           | j        
          S )Nr<   r   r$   r=   c                     fd	D             }d t           g|R  D             }d t           g|R  D             }
sCt          t          j        |          }t          fd|                              | d           }ned t          ||          D             ^}}fd|d d         D             }t          t          j        d t          ||          D             |          }|gS )	Nc                0    g | ]} |          D ]}|S rO   rO   r   s      r*   r   z:DaskNamespace.concat_str.<locals>.func.<locals>.<listcomp>   r   r,   c              3  J   K   | ]}|                     t                    V  d S r&   )astyper   rp   s     r*   rk   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s=        "#     r,   c                6    g | ]}|                                 S rO   r   rp   s     r*   r   z:DaskNamespace.concat_str.<locals>.func.<locals>.<listcomp>   s     ZZZaZZZr,   c                    | z   |z   S r&   rO   )r   r   r   s     r*   rR   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>   s    Q]Q-> r,   c                B    g | ]\  }}|                     | d           S ) )where)ri   rq   nms      r*   r   z:DaskNamespace.concat_str.<locals>.func.<locals>.<listcomp>   s9     ' ' ').BAGGRC$$' ' 'r,   c              3  V   K   | ]#}|                     d dt                    V  $dS )r   )TF)metaN)mapr   )ri   r   r   s     r*   rk   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   sO         FF"Y77cFBB     r,   c              3  &   K   | ]\  }}||z   V  d S r&   rO   )ri   rq   vs      r*   rk   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s*      FFtq!QUFFFFFFr,   )r   r   rs   r   r   r   add)r<   r   rv   	null_masknull_mask_resultresult
init_valuevalues
separatorsrb   rc   r   s   `        r*   rL   z&DaskNamespace.concat_str.<locals>.func   sY   DDDD5DDDL 'B2'U'U'U'U  F [Z+Fr+YL+Y+Y+YZZZI #)(,	#B#B  > > > >GGMM%%t ' '2<VY2O2O' ' '#
V   'n  
  LFFz*f'E'EFFF  8Or,   r   _evaluate_output_namesc                    dgS rN   rO   rP   s    r*   rR   z*DaskNamespace.concat_str.<locals>.<lambda>  s     r,   _alias_output_namesrw   rV   r/   getattrr6   )r)   r   rc   rb   rL   s    ``` r*   
concat_strzDaskNamespace.concat_str   s    	 	 	 	 	 	 	 	: zz")a24K4K# #  'uQx1FMMM  
 
 	
r,   c                h    dfd}|                      |t           t           | j                  S )Nr<   r   r$   r=   c                \     t           g fdD             R  }t          d |          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r&   rO   r   s      r*   rk   z7DaskNamespace.coalesce.<locals>.func.<locals>.<genexpr>  r   r,   c                ,    |                      |          S r&   r   r   s     r*   rR   z6DaskNamespace.coalesce.<locals>.func.<locals>.<lambda>  s     r,   )r   r   r   s   ` r*   rL   z$DaskNamespace.coalesce.<locals>.func  sP    0>>>>U>>>  F 33V<<==r,   rw   rV   ry   r   s    ` r*   coalescezDaskNamespace.coalesce  sV    	> 	> 	> 	> 	> 	> zz"?"G95AM	  
 
 	
r,   N	predicatethen	otherwiseDaskExpr | Nonec           	         d
fd}|                      |t          dd           t          dd           | j        	          S )Nr<   r   r$   r=   c                   |                      	          }|                                n}|                                }t          d 	fn	fD                       rP|                     |                                          }|                                                                }|} :t          | ||          \  }}t          ||           |                    |          gS t          | |||          \  }}}t          ||           t          ||           |                    ||          gS )Nc              3  .   K   | ]}|j         j        V  d S r&   )	_metadatais_scalar_like)ri   r   s     r*   rk   z8DaskNamespace.when_then.<locals>.func.<locals>.<genexpr>'  s;         *     r,   )_evaluate_single_output_exprr   _with_nativeto_frame	broadcastr   r   r   )
r<   
then_valueotherwise_value	conditionnew_dfthen_seriesotherwise_seriesr   r   r   s
          r*   rL   z%DaskNamespace.when_then.<locals>.func  s   88>>J ( //	:::  77	BBI    !( %%#T95     
 ););)=)=>>;;I<O<O<Q<QRR	 +F	:, ,(K #9k:::#)))44559TIz?: :6Y%5 y+666y*:;;;%%i1ABBCCr,   r   c                    dgS rN   rO   rP   s    r*   rR   z)DaskNamespace.when_then.<locals>.<lambda>C  s    YK r,   r   rw   rV   r   )r)   r   r   r   rL   s    ``` r*   	when_thenzDaskNamespace.when_then  s    "	D "	D "	D "	D "	D "	D "	D "	DH zz").0G0G# #  't-BDIIM  
 
 	
r,   abmethodr   c                   dfd}|                      |t                    t                    | j                  S )Nr<   r   r$   r=   c                    |                                }|                                }|                    |                                          gS )N)r  )r   corrrH   )r<   a_b_r   r   r  s      r*   rL   z DaskNamespace.corr.<locals>.funcJ  sN    0033B0033BGGBvG..88::;;r,   rw   rV   ry   )r)   r   r   r  rL   s    ``` r*   r  zDaskNamespace.corrI  sl    	< 	< 	< 	< 	< 	< 	< 	<
 zz"?1"E"E9!Q??M	  
 
 	
r,   )r$   r   )r$   r-   )r$   r0   )r3   r   r$   r4   )r8   r    r9   r:   r$   r   )r$   r   )rb   r   rc   rd   r$   r   )rb   r   r$   r   )r   r   r   r   r$   r   )rb   r   r   r   rc   rd   r$   r   r&   )r   r   r   r   r   r   r$   r   )r   r   r   r   r  r   r$   r   )rX   
__module____qualname__r   DASKr#   __annotations__propertyr+   r/   r2   r7   r[   ra   r{   r   r   r   r   r   r   r   r   r   r  r   structrO   r,   r*   r"   r"   )   s         '5&9O9999: : : X:    X    X       
 
 
 
:

 

 

 


 
 
 
"
 
 
 

 
 
 
" " " "<
 
 
 
$
 
 
 

 
 
 
'
 '
 '
 '
R
 
 
 
 QU.
 .
 .
 .
 .
`
 
 
 
 _FFFr,   r"   )4
__future__r   rs   r   r   	functoolsr   	itertoolsr   typingr   r	   dask.dataframe	dataframerF   pandasrB   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"   rO   r,   r*   <module>r!     sD   " " " " " "  # # # # # # # #             & & & & & & & &           E E E E E E E E 2 2 2 2 2 2 ( ( ( ( ( ( : : : : : :         
        [ Z Z Z Z Z Z Z Z Z Z Z 22222222)))))))))''''''           m m m m m-2<78=(23m m m m mr,   