
    /_iM                       U d dl mZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d d	lmZ ersd 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c m*Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 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mAZAmBZBmCZC dZDdeEd<   	  G d ded   e      ZFy)    )annotations)TYPE_CHECKINGAnyN)add_row_indexevaluate_exprs)native_to_narwhals_dtypeselect_columns_by_name)assert_never)	ImplementationValidateBackendVersion_remap_full_join_keyscheck_column_names_are_uniquecheck_columns_existgenerate_temporary_column_namenot_implementedparse_columns_to_drop
zip_strict)MultiOutputExpressionError)CompliantLazyFrame)IterableIteratorMappingSequence)BytesIO)Path)
ModuleType)Self	TypeAliasTypeIs)CompliantDataFrameAny)DaskExprDaskLazyGroupByDaskNamespace)_EagerAllowedImpl)Version_LimitedContext)	LazyFrame)DType)ColumnNotFoundError)AsofJoinStrategyJoinStrategyUniqueKeepStrategyr   r   
Incompletec                     e Zd Zej                  Zdd	 	 	 	 	 	 	 d/dZed0d       Ze	d1d       Z
d2dZd3dZd4dZd5d	Zd6d
Zd7dZd8dZd9dZd:dZd;dZ	 	 	 	 	 	 d<dZed=d       Zd>dZd?dZd;dZd;dZd@dZedAd       ZdAdZdBdZdCdZ dDdZ!dEdZ"	 	 	 	 	 	 	 	 dFdZ#dGdZ$dHdZ%	 	 	 	 	 	 	 	 	 	 dId Z&	 	 	 	 	 	 	 	 	 	 dId!Z'	 	 	 	 	 	 	 	 	 	 dId"Z(dJd#Z)	 	 	 	 	 	 	 	 dKd$Z*	 	 	 	 	 	 	 	 dKd%Z+	 	 	 	 	 	 	 	 dLd&Z,	 	 	 	 	 	 	 	 	 	 	 	 dMd'Z-	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNd(Z.	 	 	 	 	 	 dOd)Z/dEd*Z0dPd+Z1	 	 	 	 	 	 	 	 	 	 dQd,Z2dRd-Z3 e4       Z5y.)SDaskLazyFrameF)validate_backend_versionc               b    || _         || _        d | _        d | _        |r| j	                          y y N)_native_frame_version_cached_schema_cached_columns_validate_backend_version)selfnative_dataframeversionr2   s       W/var/www/html/land_sniper/venv/lib/python3.12/site-packages/narwhals/_dask/dataframe.py__init__zDaskLazyFrame.__init__:   s7     ,<7;15#**, $    c                6    t        | t        j                        S r4   )
isinstancedd	DataFrame)objs    r=   
_is_nativezDaskLazyFrame._is_nativeH   s    #r||,,r?   c              *     | ||j                         S Nr<   )r6   )clsdatacontexts      r=   from_nativezDaskLazyFrame.from_nativeL   s    4!1!122r?   c                <    | j                   j                  | d      S )Nlazy)level)r6   	lazyframer:   s    r=   to_narwhalszDaskLazyFrame.to_narwhalsP   s    }}&&t6&::r?   c                    | j                   t        j                  u r| j                   j                         S dt	        | j                          }t        |      )NzExpected dask, got: )_implementationr   DASKto_native_namespacetypeAssertionError)r:   msgs     r=   __native_namespace__z"DaskLazyFrame.__native_namespace__S   sN    >#6#66'';;==$T$*>*>%?$@AS!!r?   c                4    ddl m}  || j                        S )Nr   r$   rH   )narwhals._dask.namespacer%   r6   )r:   r%   s     r=   __narwhals_namespace__z$DaskLazyFrame.__narwhals_namespace__Z   s    :T]]33r?   c                    | S r4    rQ   s    r=   __narwhals_lazyframe__z$DaskLazyFrame.__narwhals_lazyframe___   s    r?   c                <    | j                  | j                  |      S rG   )	__class__native)r:   r<   s     r=   _with_versionzDaskLazyFrame._with_versionb   s    ~~dkk7~;;r?   c                <    | j                  || j                        S rG   )rb   r6   )r:   dfs     r=   _with_nativezDaskLazyFrame._with_nativee   s    ~~b$--~88r?   c                0    t        || j                        S )N)	available)r   columns)r:   subsets     r=   _check_columns_existz"DaskLazyFrame._check_columns_existh   s    "6T\\BBr?   c              #  X   K   | j                   j                         D ]	  \  }}|  y wr4   )rc   items)r:   _colsers      r=   _iter_columnszDaskLazyFrame._iter_columnsk   s+     **, 	ID#I	s   (*c                d    |j                  |       }t        |      dk7  rd}t        |      |d   S )N   z4multi-output expressions not allowed in this contextr   )_calllenr   )r:   rD   resultsrY   s       r=   _evaluate_single_output_exprz*DaskLazyFrame._evaluate_single_output_expro   s5    ))D/w<1HC,S11qzr?   c           	         t        | g| }| j                   | j                  j                  di t	        |            S )Nr_   )r   rg   rc   assigndict)r:   exprs
new_seriess      r=   with_columnszDaskLazyFrame.with_columnsv   s<    #D151
  !3!3!3!Gd:6F!GHHr?   c                    | j                   j                  d
i |}||t        j                  u r+ddlm}  ||t        j                  d| j                  d      S |t        j                  u r.dd l}ddl	m
}  ||j                  |      d| j                        S |t        j                  u r9dd l}ddlm}  ||j                   j                  |      d| j                  d      S d	| }	t#        |	      )Nr   )PandasLikeDataFrameT)implementationr2   r<   validate_column_names)PolarsDataFrame)r2   r<   )ArrowDataFrame)r2   r<   r   zUnsupported `backend` value: r_   )rc   computer   PANDASnarwhals._pandas_like.dataframer   r6   POLARSpolarsnarwhals._polars.dataframer   from_pandasPYARROWpyarrownarwhals._arrow.dataframer   Table
ValueError)
r:   backendkwargsresultr   plr   par   rY   s
             r=   collectzDaskLazyFrame.collectz   s     %$$.v.?g)>)>>K&-44)-&*  n+++B"v&)-  n,,, @!$$V,)-&*	  .gY7or?   c                    | j                   J| j                  t        | j                        n#| j                  j
                  j                         | _         | j                   S r4   )r8   r7   listschemarc   rj   tolistrQ   s    r=   rj   zDaskLazyFrame.columns   sV    ' &&2 T[[![[((//1  
 ###r?   c                h     ||       d   }| j                  | j                  j                  |         S )Nr   )rg   rc   loc)r:   	predicatemasks      r=   filterzDaskLazyFrame.filter   s.    q!  !677r?   c                |    | j                   }t        |t        |      | j                        }| j	                  |      S r4   )rc   r	   r   rT   rg   )r:   column_namesrf   rc   s       r=   simple_selectzDaskLazyFrame.simple_select   s5    'D,>@T@TU  ((r?   c           	         t        | g| }t        j                  |D cg c]  \  }}|j                  |       c}}d      }| j	                  |      S c c}}w )Nrs   axis)r   rB   concatrenamerg   )r:   r{   r|   namevalrf   s         r=   	aggregatezDaskLazyFrame.aggregate   sP    #D151
YY*EYT3

4(EAN  $$ Fs   A
c           	         t        | g| }| j                  }t         |j                  di t	        |      |D cg c]  }|d   	 c}| j
                        }| j                  |      S c c}w )Nr   r_   )r   rc   r	   ry   rz   rT   rg   )r:   r{   r|   rf   ss        r=   selectzDaskLazyFrame.select   sm    #D151
#BII)Z()%&aQqT&  

   $$ 's   A+
c                    |)| j                  | j                  j                               S | j                         }|j	                   |j
                  | j                         d       }| j                  |      S )NT)ignore_nulls)rg   rc   dropnar]   any_horizontalcolis_nullr   )r:   rk   plxr   s       r=   
drop_nullszDaskLazyFrame.drop_nulls   sn    >$$T[[%7%7%9::))+""7377F#3#;#;#=D"QQ{{4  r?   c           	         | j                   b| j                  j                  }| j                  j                  D ci c]'  }|t	        ||   | j
                  | j                        ) c}| _         | j                   S c c}w r4   )r7   rc   dtypesrj   r   r6   rT   )r:   native_dtypesr   s      r=   r   zDaskLazyFrame.schema   s|    & KK..M
  ;;..	#  -!#&t7K7K #D """#s   ,A;c                    | j                   S r4   )r   rQ   s    r=   collect_schemazDaskLazyFrame.collect_schema   s    {{r?   c               t    t        | ||      }| j                  | j                  j                  |            S )Nstrictrj   )r   rg   rc   drop)r:   rj   r   to_drops       r=   r   zDaskLazyFrame.drop   s3    'gfE  !1!1'!1!BCCr?   c                   |%| j                  t        | j                  |            S | j                         }| j                  }|j                  dd       j                  |      j                         }|j                  |      j                  d      j                  g |      |j                  dd       j                         z
  }| j                  |      j                  | |j                  |       S )Nrs   dtypeF)reverse)partition_byorder_by)rg   r   rc   r]   rj   litalias	broadcastr   cum_sumoverr}   r   )r:   r   r   r   rj   
const_exprrow_index_exprs          r=   with_row_indexzDaskLazyFrame.with_row_index   s     $$]4;;%EFF))+,,WWQdW+11$7AAC
GGDM!!%!0552PX5Yggatg$..01 	   ,33NGCGGWDUVVr?   c                X    | j                  | j                  j                  |            S )Nr   )rg   rc   r   )r:   mappings     r=   r   zDaskLazyFrame.rename   s%      !3!3G!3!DEEr?   c                \    | j                  | j                  j                  |dd            S )NFnr   npartitions)rg   rc   head)r:   r   s     r=   r   zDaskLazyFrame.head   s*      !1!1AuRT!1!UVVr?   c               <   |r| j                  |      x}r||dk(  r|xs | j                  }t        d|d      }| j                  j	                  |      j                         j                  |      }||dk(     }|j                         j                  |      }| j                  j                  ||d      }nSd	d
ij                  ||      }	|r | j                  |dddj                  }
n| j                  }
|
j                  ||	      }| j                  |      S )Nnone   count_n_bytesrj   prefixrs   r   inner)onhowanyfirstF)
descending
nulls_last)rk   keep)rl   rj   r   rc   groupbysizer   reset_indexr   mergegetsortdrop_duplicatesrg   )r:   rk   r   r   errortokenrp   uniquer   mapped_keeprc   s              r=   r   zDaskLazyFrame.unique   s     9 9& AAuAK6>+t||F26(E ++%%f-224;;EBCcQh-C__&++E+:F[[&&v&g&FF '*..tT:K"H5QXX++6+LF  ((r?   c                   t        |t              r| }n|D cg c]  }|  }}|rdnd}| j                  | j                  j	                  t        |      ||            S c c}w )Nlastr   )	ascendingna_position)rA   boolrg   rc   sort_valuesr   )r:   r   r   byr   dpositions          r=   r   zDaskLazyFrame.sort  sf    j$'/9>I(231Q3I3'6W  KK##DH	x#X
 	
 4s   
A!c                  | j                   }| j                  t        |      }t        |t              rXt        fd|D              rD|r!| j                  |j                  ||            S | j                  |j                  ||            S t        |t              r|gt        |      z  }| j                  |j                  |t        |            j                  |dd            S )Nc              3  D   K   | ]  }|   j                           y wr4   )
is_numeric).0xr   s     r=   	<genexpr>z&DaskLazyFrame.top_k.<locals>.<genexpr>  s     ,PVAY-A-A-C,Ps    )r   Fr   r   )rc   r   r   rA   r   allrg   	nsmallestnlargestru   r   r   )r:   kr   r   rf   r   s        @r=   top_kzDaskLazyFrame.top_k  s    [["Xgt$,PR,P)P((a)<==$$R[[B%788gt$i#b')G  NN2gN7<<U = 
 	
r?   c               |    | j                   j                  |d      j                  |j                   ||dd|f      S )Nr   rk   r   r    left_onright_onr   suffixes)rc   r   r   )r:   otherr  r	  suffixs        r=   _join_innerzDaskLazyFrame._join_inner+  sH     {{!!e!<BBLL&\ C 
 	
r?   c                  | j                   j                  |j                   j                  |d      d||d|f      }t        ||      D cg c]   \  }}||k7  r|| j                  vr|n| | " }}}|j                  |      S c c}}w )Nr   r  leftr  r   r  r	  r
  r   )rc   r   r   r   rj   r   )	r:   r  r  r	  r  result_nativeleft_key	right_keyextras	            r=   
_join_leftzDaskLazyFrame._join_left6  s     ))LLxU;&\ * 
 (2'8'D
#)H$ #$,,6Iyk&<RR
 

 !!%!00
s   %Bc                  | j                   }t        |||      }|j                   j                  |      }t        |j                         t        |j                               }|t        |         j                         j                  d      }	||   j                         j                  d      }
t        |j                        j                  | j                        j                  |      }||
   j                  |D ci c]	  }|| |  c}      }||	    j                  ||
    ||dd|f      }t        j                  |||	   |gdd      S c c}w )	Nr   rs   r   outerr  r  r   )r   join)rc   r   r   r   rj   r   valuesisnar   setintersection
differencer   rB   r   )r:   r  r  r	  r  self_nativeright_on_mapperother_nativeright_suffixedleft_null_maskright_null_mask	to_renamer   right_null_rowsjoin_results                  r=   
_join_fullzDaskLazyFrame._join_fullG  s`   
 kk/6J||**?*C%l&:&:;o4467$T']388:>>A>F&~6;;=AAqAI &33DLLALLXV	&7>>6?@sSSE&**@ ? 
 ">/288/)*#&\ 9 
 yy+n5G
 	
 As   Ec                  t        dg | j                  |j                  d      } | j                  j                  d	i |dij	                   |j                  j                  d	i |did||d|f      j                  |      S )
Nr   cross_join_key_r   r   r   r  r  r   r_   )r   rj   rc   ry   r   r   )r:   r  r  	key_tokens       r=   _join_crosszDaskLazyFrame._join_crossh  s    2>>>GX
	 DKK0)Q0U###5y!n5!"f   T)T$
	
r?   c          
         | j                  |t        |      t        t        ||                  }| j                  j                  |d      j                  |d||      S )Nr  columns_to_selectcolumns_mappingr   r  r   )r   r  r	  )_join_filter_renamer   rz   ziprc   r   r   )r:   r  r  r	  r   s        r=   
_join_semizDaskLazyFrame._join_semix  sj     //"8n Xw!78 0 

 {{!!e!<BBgw C 
 	
r?   c          
     J   t        dg | j                  |j                  d      }| j                  |t        |      t	        t        ||                  }| j                  j                  |j                  |d      d|||      }|||   d	k(     j                  |g
      S )Nr   join_indicator_r   r-  r   r  r  )r   	indicatorr  r	  	left_onlyr   )
r   rj   r0  r   rz   r1  rc   r   r   r   )r:   r  r  r	  indicator_tokenr   rf   s          r=   
_join_antizDaskLazyFrame._join_anti  s     9>>>GX
 //"8n Xw!78 0 

 [[wE:%  
 "_%45::OCT:UUr?   c                    |j                   }t        ||| j                        j                  |      j	                         S )zHelper function to avoid creating extra columns and row duplication.

        Used in `"anti"` and `"semi`" join's.

        Notice that a native object is returned.
        r   )rc   r	   rT   r   r   )r:   r  r.  r/  r   s        r=   r0  z!DaskLazyFrame._join_filter_rename  s;     $)<< #<1BDDXDXYVOV,_	
r?   c                  |dk(  r| j                  ||      }n||t        ||      |dk(  r| j                  ||||      }nu|dk(  r| j                  |||      }n[|dk(  r| j	                  |||      }nA|dk(  r| j                  ||||      }n&|d	k(  r| j                  ||||      }nt        |       | j                        S )
Ncross)r  r  r   )r  r  r	  r  anti)r  r  r	  semir  full)	r+  r   r  r8  r2  r  r'  r
   rg   )r:   r  r   r  r	  r  r   s          r=   r  zDaskLazyFrame.join  s     '>%%E&%AF_ 0Wh//G^%%Wx & F F]__5'H_UFF]__5'H_UFF]__Wx % F F]__Wx % F   ((r?   c                   | j                         }| j                  |j                  | j                  |j                  |||||d|f            S )Nr  )r  r	  left_byright_by	directionr
  )rZ   rg   
merge_asofrc   )	r:   r  r  r	  by_leftby_rightstrategyr  r   s	            r=   	join_asofzDaskLazyFrame.join_asof  sZ     '')  NN!!"f  	
 	
r?   c               $    ddl m}  || ||      S )Nr   r"   )drop_null_keys)narwhals._dask.group_byr#   )r:   keysrI  r#   s       r=   group_byzDaskLazyFrame.group_by  s     	<tT.IIr?   c                    | j                   }|j                  }|dk(  r,| j                  | j                   j                  |d            S d}t	        |      )Nrs   F)r   r   zL`LazyFrame.tail` is not supported for Dask backend with multiple partitions.)rc   r   rg   tailNotImplementedError)r:   r   native_framen_partitionsrY   s        r=   rN  zDaskLazyFrame.tail  sX    {{#//1$$T[[%5%55%5%IJJZ 	 "#&&r?   c                   t        d| j                  d      }| j                         }|j                  |d       j	                         }|j                  |d       j	                         }|j                  dd       j	                         }| j                  |d       j                  |j                  |      |k\  |j                  |      |z
  |z  |k(  z        j                  |gd      S )	Nr   
row_index_r   r   r   )r   Fr   )	r   rj   r]   r   r   r   r   r   r   )r:   r   offsetrow_index_tokenr   offset_exprn_expr	zero_exprs           r=   gather_everyzDaskLazyFrame.gather_every  s    8t||L
 ))+ggfDg1;;=$'113GGATG*446	$?V)[8GGO,{:fD	QS T?#ET2	
r?   c                ^    | j                  | j                  j                  ||||            S )N)id_vars
value_varsvar_name
value_name)rg   rc   melt)r:   r   indexvariable_namer^  s        r=   unpivotzDaskLazyFrame.unpivot  s:       KK&%	  
 	
r?   c                :    | j                   j                  |       y r4   )rc   
to_parquet)r:   files     r=   sink_parquetzDaskLazyFrame.sink_parquet  s    t$r?   N)r;   dd.DataFramer<   r'   r2   r   returnNone)rD   zdd.DataFrame | Anyrh  zTypeIs[dd.DataFrame])rJ   rg  rK   r(   rh  r   )rh  LazyFrame[dd.DataFrame])rh  r   )rh  r%   )rh  r   )r<   r'   rh  r   )rf   r   rh  r   )rk   Sequence[str]rh  zColumnNotFoundError | None)rh  zIterator[dx.Series])rD   r!   rh  z	dx.Series)r{   r!   rh  r   )r   z_EagerAllowedImpl | Noner   r   rh  r    )rh  	list[str])r   r!   rh  r   )r   strrh  r   )rk   Sequence[str] | Nonerh  r   )rh  zdict[str, DType])rj   rk  r   r   rh  r   )r   rm  r   rn  rh  r   )r   zMapping[str, str]rh  r   )r   intrh  r   )rk   rn  r   r.   r   rn  rh  r   )r   rm  r   bool | Sequence[bool]r   r   rh  r   )r  ro  r   zIterable[str]r   rp  rh  r   )
r  r   r  rk  r	  rk  r  rm  rh  rg  )r  r   r  rm  rh  rg  )r  r   r  rk  r	  rk  rh  rg  )r  r   r.  rl  r/  zdict[str, str]rh  rg  )r  r   r   r-   r  rn  r	  rn  r  rm  rh  r   )r  r   r  rm  r	  rm  rD  rn  rE  rn  rF  r,   r  rm  rh  r   )rK  z"Sequence[str] | Sequence[DaskExpr]rI  r   rh  r#   )r   ro  rT  ro  rh  r   )
r   rn  r`  rn  ra  rm  r^  rm  rh  r   )re  zstr | Path | BytesIOrh  ri  )6__name__
__module____qualname__r   rU   rT   r>   staticmethodrE   classmethodrL   rR   rZ   r]   r`   rd   rg   rl   rq   rw   r}   r   propertyrj   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  r+  r2  r8  r0  r  rG  rL  rN  rY  rb  rf  r   exploder_   r?   r=   r1   r1   4   sO    %))O */-&- 	-
 #'- 
- - - 3 3;"4
<9CI(/(;>(	(T $ $8
)
%
%! 	# 	#D
WFW)$) !	)
 ') 
)6

 	
	
'4	
@M	
WZ	
		
11'41@M1WZ1	1"

'4
@M
WZ
	
B
 



'4

@M

	

VV'4V@MV	V(

.7
JX
	
"!)!) 	!)
 &!) '!) !) 
!)F

 	

 
 &
 '
 #
 
 

2J6JKOJ	J	'
"
 
 $
 	

 
 

 % Gr?   r1   )r!   rg  rj  )G
__future__r   typingr   r   dask.dataframe	dataframerB   narwhals._dask.utilsr   r   narwhals._pandas_like.utilsr   r	   narwhals._typing_compatr
   narwhals._utilsr   r   r   r   r   r   r   r   r   narwhals.exceptionsr   narwhals.typingr   collections.abcr   r   r   r   ior   pathlibr   typesr   dask.dataframe.dask_expr	dask_exprdxtyping_extensionsr   r   r   narwhals._compliant.typingr    narwhals._dask.exprr!   rJ  r#   r\   r%   narwhals._typingr&   r'   r(   narwhals.dataframer)   narwhals.dtypesr*   r+   r,   r-   r.   r/   __annotations__r1   r_   r?   r=   <module>r     s    " %  > X 0
 
 
 ; .EE ))99@,7628,%7RR
I g LMg r?   