
    -Ph80                       d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlZd dl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 d d
lmZmZmZ d dlm Z m!Z!m"Z" d dl#m$Z$ er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                   Z. G d deedef                   Z/ G d deedef         e          Z0dS )    )annotationsN)reduce)TYPE_CHECKINGIterableSequencecast)CompliantThenCompliantWhenLazyNamespace)DepthTrackingNamespaceDaskLazyFrameDaskExpr)DaskSelectorNamespace)align_series_full_broadcastnarwhals_to_native_dtypevalidate_comparand)ExprKindcombine_alias_output_namescombine_evaluate_output_names)Implementation)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
d0dZd1dZd2dZd3dZd3dZd3dZd4d Zd3d!Zd3d"Zd3d#Zd5d&Zd6d+Zd,S )7DaskNamespacer   _implementationreturnr   c                *    t          j        |           S N)r   from_namespaceselfs    X/var/www/html/test/jupyter/venv/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._expr,       r(   type[DaskLazyFrame]c                    t           S r"   r   r$   s    r&   
_lazyframezDaskNamespace._lazyframe0   s    r(   backend_versiontuple[int, ...]versionr   Nonec               "    || _         || _        d S r"   )_backend_version_version)r%   r0   r2   s      r&   __init__zDaskNamespace.__init__4   s     /r(   valuer   dtypeIntoDType | Noner   c           	     f     d
 fd}                      |ddd d  j         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)r9   name)r@   )npartitionsr   )	r   r6   pdSeries_native_framerA   ddfrom_pandas	to_series)r<   native_dtypenative_pd_seriesrA   dask_seriesr9   r%   r8   s        r&   funczDaskNamespace.lit.<locals>.func9   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>G   s    yk r(   depthfunction_nameevaluate_output_namesalias_output_namesr0   r2   r<   r   r    r=   r+   r5   r6   )r%   r8   r9   rK   s   ``` r&   rL   zDaskNamespace.lit8   sg    	0 	0 	0 	0 	0 	0 	0 	0 zz"9"9# 1M  
 
 	
r(   c           	     X    d
d}|                      |ddd d | j        | j        	          S )Nr<   r   r    r=   c                b    | j         | j        d                  j                                        gS Nr   )rD   columnssizerG   )r<   s    r&   rK   zDaskNamespace.len.<locals>.funcN   s(    $RZ]38BBDDEEr(   r   lenc                    dgS )Nr_   rO   rP   s    r&   rR   z#DaskNamespace.len.<locals>.<lambda>V   s    ug r(   rS   rX   rY   )r%   rK   s     r&   r_   zDaskNamespace.lenM   sT    	F 	F 	F 	F zz"5"5# 1M  
 
 	
r(   exprsc           	         d
fd}|                      |t          d D                       dz   dt           t           | j        | j        	          S )Nr<   r   r    r=   c                n     t           g fdD             R  }t          t          j        |          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r"   rO   .0r+   sr<   s      r&   	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>_   8      >>EEE"II>>qa>>>>>>>r(   )r   r   operatorand_r<   seriesra   s   ` r&   rK   z*DaskNamespace.all_horizontal.<locals>.func]   sN    0>>>>U>>>  F 8=&1122r(   c              3  $   K   | ]}|j         V  d S r"   _depthrf   xs     r&   rh   z/DaskNamespace.all_horizontal.<locals>.<genexpr>e   $      ..1ah......r(      all_horizontalcallrT   rU   rV   rW   r0   r2   rX   r+   maxr   r   r5   r6   r%   ra   rK   s    ` r&   ru   zDaskNamespace.all_horizontal\   s~    	3 	3 	3 	3 	3 	3 zz.......2*"?"G95A 1M  
 
 	
r(   c           	         d
fd}|                      |t          d D                       dz   dt           t           | j        | j        	          S )Nr<   r   r    r=   c                n     t           g fdD             R  }t          t          j        |          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r"   rO   re   s      r&   rh   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>p   ri   r(   )r   r   rj   or_rl   s   ` r&   rK   z*DaskNamespace.any_horizontal.<locals>.funcn   sN    0>>>>U>>>  F 8<0011r(   c              3  $   K   | ]}|j         V  d S r"   ro   rq   s     r&   rh   z/DaskNamespace.any_horizontal.<locals>.<genexpr>v   rs   r(   rt   any_horizontalrv   rX   rx   rz   s    ` r&   r   zDaskNamespace.any_horizontalm   s~    	2 	2 	2 	2 	2 	2 zz.......2*"?"G95A 1M  
 
 	
r(   c           	         d
fd}|                      |t          d D                       dz   dt           t           | j        | 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   re   s      r&   rh   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   ri   r(   rt   axis)r   rE   concatsumrl   s   ` r&   rK   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"   ro   rq   s     r&   rh   z/DaskNamespace.sum_horizontal.<locals>.<genexpr>   rs   r(   rt   sum_horizontalrv   rX   rx   rz   s    ` r&   r   zDaskNamespace.sum_horizontal~   s~    	; 	; 	; 	; 	; 	; zz.......2*"?"G95A 1M  
 
 	
r(   itemsIterable[DaskLazyFrame]howr   r   c               ~   |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
        | j                  S |dk    r1t          t          j	        |dd          | j
        | j                  S t          )NzNo items to concatenatec                    g | ]	}|j         
S rO   )rD   )rf   is     r&   
<listcomp>z(DaskNamespace.concat.<locals>.<listcomp>   s    ...1q...r(   r   verticalrt   )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
inner)r   join)r0   r2   diagonalouter)AssertionErrorr]   	enumerater_   allto_list	TypeErrorr   rE   r   r5   r6   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4 $ 5   
 * 	#AG444 $ 5    "!r(   c           	         d
fd}|                      |t          d D                       dz   dt           t           | j        | 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   re   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)fillnarf   rg   s     r&   rh   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s,      6Y6Yqqxx{{6Y6Y6Y6Y6Y6Yr(   c              3  D   K   | ]}d |                                 z
  V  dS )rt   Nisnar   s     r&   rh   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s.      99qa!&&((l999999r(   c                    | |z   S r"   rO   rr   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(   	dx.Series)r   r   r   )r<   expr_resultsrm   non_nanumdenra   s   `     r&   rK   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"   ro   rq   s     r&   rh   z0DaskNamespace.mean_horizontal.<locals>.<genexpr>   rs   r(   rt   mean_horizontalrv   rX   rx   rz   s    ` r&   r   zDaskNamespace.mean_horizontal   s~    	2 	2 	2 	2 	2 	2 zz.......2+"?"G95A 1M  
 
 	
r(   c           	         d
fd}|                      |t          d D                       dz   dt           t           | j        | 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   re   s      r&   rh   z=DaskNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   ri   r(   rt   r   )r   rE   r   minrl   s   ` r&   rK   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"   ro   rq   s     r&   rh   z/DaskNamespace.min_horizontal.<locals>.<genexpr>   rs   r(   rt   min_horizontalrv   rX   rx   rz   s    ` r&   r   zDaskNamespace.min_horizontal   ~    	; 	; 	; 	; 	; 	; zz.......2*"?"G95A 1M  
 
 	
r(   c           	         d
fd}|                      |t          d D                       dz   dt           t           | j        | 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   re   s      r&   rh   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   ri   r(   rt   r   )r   rE   r   ry   rl   s   ` r&   rK   z*DaskNamespace.max_horizontal.<locals>.func   r   r(   c              3  $   K   | ]}|j         V  d S r"   ro   rq   s     r&   rh   z/DaskNamespace.max_horizontal.<locals>.<genexpr>   rs   r(   rt   max_horizontalrv   rX   rx   rz   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strignore_nullsboolc                   dfd}|                      |t          d D                       dz   dt          d	         d
d           t          d	         dd           | j        | 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   re   s      r&   r   z:DaskNamespace.concat_str.<locals>.func.<locals>.<listcomp>   r   r(   c              3  J   K   | ]}|                     t                    V  d S r"   )astyper   r   s     r&   rh   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s=        "#     r(   c                6    g | ]}|                                 S rO   r   r   s     r&   r   z:DaskNamespace.concat_str.<locals>.func.<locals>.<listcomp>   s     ZZZaZZZr(   c                    | z   |z   S r"   rO   )rr   r   r   s     r&   rR   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>   s    Q]Q-> r(   c                B    g | ]\  }}|                     | d           S ) )where)rf   rg   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   )rf   r   r   s     r&   rh   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>  sO         FF"Y77cFBB     r(   c              3  &   K   | ]\  }}||z   V  d S r"   rO   )rf   rg   vs      r&   rh   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>  s*      "M"MTQ1q5"M"M"M"M"M"Mr(   )r   r   rj   r~   r   zipadd)r<   r   rm   	null_masknull_mask_resultresult
init_valuevalues
separatorsra   r   r   s   `        r&   rK   z&DaskNamespace.concat_str.<locals>.func   sX   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 ' '25fi2H2H' ' '#
V   'n  
  L"M"MSV5L5L"M"M"Mz  8Or(   c              3  $   K   | ]}|j         V  d S r"   ro   rq   s     r&   rh   z+DaskNamespace.concat_str.<locals>.<genexpr>  rs   r(   rt   
concat_strr   _evaluate_output_namesc                    dgS rN   rO   rP   s    r&   rR   z*DaskNamespace.concat_str.<locals>.<lambda>  s     r(   _alias_output_namesrv   rX   )r+   ry   getattrr5   r6   )r%   r   r   ra   rK   s    ``` r&   r   zDaskNamespace.concat_str   s    	 	 	 	 	 	 	 	6 zz.......2&")a24K4K# #  'uQx1FMM 1M  

 

 
	
r(   N)r    r   )r    r)   )r    r-   )r0   r1   r2   r   r    r3   )r8   r   r9   r:   r    r   )r    r   )ra   r   r    r   )r   r   r   r   r    r   )r   r   r    r   )ra   r   r   r   r   r   r    r   )__name__
__module____qualname__r   DASKr   __annotations__propertyr'   r+   r/   r7   rL   r_   ru   r   r   r   r   r   r   r   r   rO   r(   r&   r   r   "   s{         '5&9O9999: : : X:    X    X       
 
 
 
*
 
 
 

 
 
 
"
 
 
 
"
 
 
 
" "  "  "  "D
 
 
 
*
 
 
 
$
 
 
 
$; ; ; ;(
 (
 (
 (
 (
 (
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  r,   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  rO   r(   r&   r   r     sL           X @  @  @  @  @  @r(   r   r   c                      e Zd ZdS )r   N)r   r   r   rO   r(   r&   r   r   @  s          r(   r   )1
__future__r   rj   	functoolsr   typingr   r   r   r   dask.dataframe	dataframerE   pandasrB   narwhals._compliantr	   r
   r   narwhals._compliant.namespacer   narwhals._dask.dataframer   narwhals._dask.exprr   narwhals._dask.selectorsr   narwhals._dask.utilsr   r   r   narwhals._expression_parsingr   r   r   narwhals._utilsr   dask.dataframe.dask_expr	dask_exprdxr   narwhals.typingr   r   r   	DataFramer   r   r   rO   r(   r&   <module>r      se   " " " " " "        : : : : : : : : : : : :           K K K K K K K K K K @ @ @ @ @ @ 2 2 2 2 2 2 ( ( ( ( ( ( : : : : : :         
         
 + * * * * * J)))))))))''''''IIIIIIIIIIs
 s
 s
 s
 s
-2<78=(23s
 s
 s
l%@ %@ %@ %@ %@}]KAB %@ %@ %@P S R R R R}]KABH R R R R Rr(   