
    hh3              	         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j3        f         eeef                   Z4 G d deedef                   Z5 G d deedee5f         e          Z6dS )    )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d0dZd1dZd2dZd2dZd3dZd4d Zd3d!Zd3d"Zd3d#Zd5d&Zd6d)Zd3d*Zd+S )7DaskNamespacer   _implementationreturnr   c                *    t          j        |           S N)r   from_namespaceselfs    O/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_dask/namespace.py	selectorszDaskNamespace.selectors0   s    $3D999    type[DaskExpr]c                    t           S r&   r   r(   s    r*   _exprzDaskNamespace._expr4       r,   type[DaskLazyFrame]c                    t           S r&   r   r(   s    r*   
_lazyframezDaskNamespace._lazyframe8   s    r,   versionr   Nonec                   || _         d S r&   )_version)r)   r4   s     r*   __init__zDaskNamespace.__init__<   s    r,   valuer    dtypeIntoDType | Noner   c                Z     d
 fd}                      |ddd d  j        	          S )Ndfr   r$   list[dx.Series]c                   .t          j                  }t          j        g|d          }nt          j        gd          }| j        j        }t          j        ||          }|d                                         gS )Nliteral)r:   name)rA   )npartitionsr   )	r   r7   pdSeries_native_framerB   ddfrom_pandas	to_series)r=   native_dtypenative_pd_seriesrB   dask_seriesr:   r)   r9   s        r*   funczDaskNamespace.lit.<locals>.func@   s     7t}MM#%9eWLy#Y#Y#Y  #%9eW9#E#E#E *6K.)9{SSSKN,,..//r,   r   litc                    dgS Nr@    _dfs    r*   <lambda>z#DaskNamespace.lit.<locals>.<lambda>N   s    yk r,   depthfunction_nameevaluate_output_namesalias_output_namesr4   r=   r   r$   r>   r/   r7   )r)   r9   r:   rL   s   ``` r*   rM   zDaskNamespace.lit?   sa    	0 	0 	0 	0 	0 	0 	0 	0 zz"9"9#M  
 
 	
r,   c                L    d
d}|                      |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>.funcT   s(    $RZ]38BBDDEEr,   r   lenc                    dgS )Nr`   rP   rQ   s    r*   rS   z#DaskNamespace.len.<locals>.<lambda>\   s    ug r,   rT   rY   rZ   )r)   rL   s     r*   r`   zDaskNamespace.lenS   sN    	F 	F 	F 	F zz"5"5#M  
 
 	
r,   exprsignore_nullsboolc          	         d
fd}|                      |t          d D                       dz   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&   rP   .0er=   s     r*   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>c   +      =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r:   fillnari   ss     r*   rk   z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>h   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>.funcb   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,   c              3  $   K   | ]}|j         V  d S r&   _depthri   xs     r*   rk   z/DaskNamespace.all_horizontal.<locals>.<genexpr>m   $      ..1ah......r,      all_horizontalcallrU   rV   rW   rX   r4   rY   r/   maxr   r   r7   r)   rc   rb   rL   s    `` r*   r~   zDaskNamespace.all_horizontala   s    	U 	U 	U 	U 	U 	U 	U zz.......2*"?"G95AM  
 
 	
r,   c          	         d
fd}|                      |t          d D                       dz   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&   rP   rh   s     r*   rk   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>v   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>x   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>.funcu   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,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z/DaskNamespace.any_horizontal.<locals>.<genexpr>}   r|   r,   r}   any_horizontalr   rY   r   r   s    `` r*   r   zDaskNamespace.any_horizontalt   s    	T 	T 	T 	T 	T 	T 	T zz.......2*"?"G95AM  
 
 	
r,   c           	         d
fd}|                      |t          d D                       dz   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&   rP   ri   r/   rq   r=   s      r*   rk   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   8      >>EEE"II>>qa>>>>>>>r,   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,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z/DaskNamespace.sum_horizontal.<locals>.<genexpr>   r|   r,   r}   sum_horizontalr   rY   r   r)   rb   rL   s    ` r*   r   zDaskNamespace.sum_horizontal   sx    	; 	; 	; 	; 	; 	; zz.......2*"?"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 rP   )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)r4   diagonalouter)AssertionErrorr^   	enumerater`   allto_list	TypeErrorr   rF   r   r7   NotImplementedError)	r)   r   r   msg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           	         d
fd}|                      |t          d D                       dz   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 rP   rP   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&   rP   r{   ys     r*   rS   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   
    a!e r,   c                    | |z   S r&   rP   r   s     r*   rS   z=DaskNamespace.mean_horizontal.<locals>.func.<locals>.<lambda>   r   r,   	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,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z0DaskNamespace.mean_horizontal.<locals>.<genexpr>   r|   r,   r}   mean_horizontalr   rY   r   r   s    ` r*   r   zDaskNamespace.mean_horizontal   sx    	2 	2 	2 	2 	2 	2 zz.......2+"?"G95AM  
 
 	
r,   c           	         d
fd}|                      |t          d D                       dz   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&   rP   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,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z/DaskNamespace.min_horizontal.<locals>.<genexpr>   r|   r,   r}   min_horizontalr   rY   r   r   s    ` r*   r   zDaskNamespace.min_horizontal   x    	; 	; 	; 	; 	; 	; zz.......2*"?"G95AM  
 
 	
r,   c           	         d
fd}|                      |t          d D                       dz   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&   rP   r   s      r*   rk   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r,   r}   r   )r   rF   r   r   r   s   ` r*   rL   z*DaskNamespace.max_horizontal.<locals>.func   r   r,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z/DaskNamespace.max_horizontal.<locals>.<genexpr>   r|   r,   r}   max_horizontalr   rY   r   r   s    ` r*   r   zDaskNamespace.max_horizontal   r   r,   	predicateDaskWhenc                :    t                               ||           S )N)context)r   	from_expr)r)   r   s     r*   whenzDaskNamespace.when   s    !!)T!:::r,   	separatorstrc                   dfd}|                      |t          d D                       dz   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 rP   rP   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 rP   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&   rP   )r{   r   r   s     r*   rS   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&   rP   )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,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z+DaskNamespace.concat_str.<locals>.<genexpr>  r|   r,   r}   
concat_strr   _evaluate_output_namesc                    dgS rO   rP   rQ   s    r*   rS   z*DaskNamespace.concat_str.<locals>.<lambda>  s     r,   _alias_output_namesr   rY   )r/   r   getattrr7   )r)   r   rc   rb   rL   s    ``` r*   r   zDaskNamespace.concat_str   s    	 	 	 	 	 	 	 	: zz.......2&")a24K4K# #  'uQx1FMMM  	
 	
 		
r,   c           	         d
fd}|                      |t          d D                       dz   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&   rP   r   s      r*   rk   z7DaskNamespace.coalesce.<locals>.func.<locals>.<genexpr>  r   r,   c                ,    |                      |          S r&   r   r   s     r*   rS   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,   c              3  $   K   | ]}|j         V  d S r&   rx   rz   s     r*   rk   z)DaskNamespace.coalesce.<locals>.<genexpr>  r|   r,   r}   coalescer   rY   r   r   s    ` r*   r   zDaskNamespace.coalesce  sx    	> 	> 	> 	> 	> 	> zz.......2$"?"G95AM  
 
 	
r,   N)r$   r   )r$   r-   )r$   r1   )r4   r   r$   r5   )r9   r    r:   r;   r$   r   )r$   r   )rb   r   rc   rd   r$   r   )rb   r   r$   r   )r   r   r   r   r$   r   )r   r   r$   r   )rb   r   r   r   rc   rd   r$   r   )__name__
__module____qualname__r   DASKr#   __annotations__propertyr+   r/   r3   r8   rM   r`   r~   r   r   r   r   r   r   r   r   r   rP   r,   r*   r"   r"   *   s         '5&9O9999: : : X:    X    X       
 
 
 
(
 
 
 

 
 
 
&
 
 
 
 
 
 
 
 " " " "<
 
 
 
(
 
 
 
"
 
 
 
"; ; ; ;)
 )
 )
 )
V
 
 
 
 
 
r,   r"   c                  .    e Zd Zed	d            Zd
dZdS )r   r$   type[DaskThen]c                    t           S r&   )DaskThenr(   s    r*   _thenzDaskWhen._then(  r0   r,   r=   r   Sequence[dx.Series]c                :   t          | j        t                    r|                     |          d         n| j        }t          | j        t                    r|                     |          d         n| j        }|                     |          d         }| j        j        J | j        j        j        r\|                    |                                          } | j        	                    t          j                  |          d         }|}| j        :t          |||          \  }}t          ||           |                    |          gS t          ||||          \  }}}t          ||           t          ||           |                    ||          gS r]   )
isinstance_then_valuer   _otherwise_value
_condition	_metadatais_scalar_like_with_nativeto_frame	broadcastr   AGGREGATIONr   r   r   )r)   r=   
then_valueotherwise_value	conditionnew_dfthen_seriesotherwise_seriess           r*   __call__zDaskWhen.__call__,  s    $*H55"DR  ##! 	 $/::'D!!"%%a((& 	 OOB''*	 (444?$3 	__Y%7%7%9%9::FG11(2FGGKKANIB ('BIz( ($Y y+666%%i00115P	:6
 6
2K!1 	9k2229&6777!!)-=>>??r,   N)r$   r  )r=   r   r$   r	  )r   r   r   r  r  r  rP   r,   r*   r   r   '  sL           X @  @  @  @  @  @r,   r   r   c                  :    e Zd ZU dZded<   i Zded<   dZded<   d	S )
r  r   intry   r   _scalar_kwargswhenthenr   _function_nameN)r   r   r   ry   r  r  r   rP   r,   r*   r  r  O  sA         FOOOO#%N%%%%$N$$$$$$r,   r  )7
__future__r   rs   	functoolsr   	itertoolsr   typingr   r   dask.dataframe	dataframerF   pandasrC   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  rP   r,   r*   <module>r6     s   " " " " " "              & & & & & & & &                      3 2 2 2 2 2 ( ( ( ( ( ( : : : : : :         
         
 7 6 6 6 6 6 6 6 J<<<<<<<<<<)))))))))777777''''''IIIIIIIIIIz
 z
 z
 z
 z
-2<78=(23z
 z
 z
z%@ %@ %@ %@ %@}]KAB %@ %@ %@P% % % % %}]K8KLh % % % % %r,   