
    h?                       S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r
  S SKrS SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  \(       aQ  S SK J!r!  S SK"J	s  J#r$  S SK%J&r&  S SK%J'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-  S SK.J/r/  S SKJ0r0  S SKJ1r1  S S KJ2r2  S S!KJ3r3  S S"KJ4r4   " S# S$\S%   5      r5g)&    )annotations)TYPE_CHECKING)Any)Iterator)Mapping)SequenceN)add_row_index)evaluate_exprs)native_to_narwhals_dtype)select_columns_by_name)CompliantDataFrame)CompliantLazyFrame)Implementation)_remap_full_join_keys)check_column_exists)check_column_names_are_unique)generate_temporary_column_name)not_implemented)parse_columns_to_drop)parse_version)validate_backend_version)
ModuleType)Self)TypeIs)DaskExprDaskLazyGroupByDaskNamespace)DType)AsofJoinStrategy)JoinStrategy)LazyUniqueKeepStrategy)Version)_FullContextc                     \ rS rSr        S#S jr\S$S j5       r\S%S j5       rS&S jr	S'S jr
S(S jrS)S jrS*S	 jrS+S
 jrS,S jr      S-S jr\S.S j5       rS/S jrS0S jrS,S jrS,S jrS1S jr\S2S j5       rS2S jrS3S jrS4S jrS5S jrS6S jr      S7S jr        S8S jr            S9S jr                 S:S jr!S;S jr"S6S jr#S<S jr$          S=S  jr%\&" 5       r'S!r(g")>DaskLazyFrame.   c                   Xl         X l        [        R                  U l        X0l        S U l        S U l        [        U R                  U R                  5        g N)	_native_frame_backend_versionr   DASK_implementation_version_cached_schema_cached_columnsr   )selfnative_dataframebackend_versionversions       J/var/www/html/env/lib/python3.13/site-packages/narwhals/_dask/dataframe.py__init__DaskLazyFrame.__init__/   sI     ,< /-227;15 !5!5t7L7LM    c                6    [        U [        R                  5      $ r*   )
isinstancedd	DataFrame)objs    r6   
_is_nativeDaskLazyFrame._is_native>   s    #r||,,r9   c              8    U " XR                   UR                  S9$ Nr4   r5   )r,   r/   )clsdatacontexts      r6   from_nativeDaskLazyFrame.from_nativeB   s     ":":GDTDT
 	
r9   c                    U R                   [        R                  L a  U R                   R                  5       $ S[	        U R                   5       3n[        U5      e)NzExpected dask, got: )r.   r   r-   to_native_namespacetypeAssertionError)r2   msgs     r6   __native_namespace__"DaskLazyFrame.__native_namespace__H   sN    >#6#66'';;==$T$*>*>%?$@AS!!r9   c                D    SSK Jn  U" U R                  U R                  S9$ )Nr   r   rC   )narwhals._dask.namespacer   r,   r/   )r2   r   s     r6   __narwhals_namespace__$DaskLazyFrame.__narwhals_namespace__O   s    :T-B-BDMMZZr9   c                    U $ r*    r2   s    r6   __narwhals_lazyframe__$DaskLazyFrame.__narwhals_lazyframe__T   s    r9   c                L    U R                  U R                  U R                  US9$ rB   )	__class__nativer,   )r2   r5   s     r6   _with_versionDaskLazyFrame._with_versionW   s)    ~~KK)>)>  
 	
r9   c                J    U R                  XR                  U R                  S9$ rB   )rZ   r,   r/   )r2   dfs     r6   _with_nativeDaskLazyFrame._with_native\   s'    ~~ 5 5t}}  
 	
r9   c              #  Z   #    U R                   R                  5        H	  u  pUv   M     g 7fr*   )r[   items)r2   _colsers      r6   _iter_columnsDaskLazyFrame._iter_columnsa   s#     **,IDI -s   )+c           	         [        U /UQ76 nU R                  U R                  R                  " S0 [	        U5      D65      $ )NrU   )r
   r`   r[   assigndict)r2   exprs
new_seriess      r6   with_columnsDaskLazyFrame.with_columnse   s9    #D151
  !3!3!Gd:6F!GHHr9   c                "   U R                   R                  " S
0 UD6nUb  U[        R                  L a5  SSKJn  U" U[        R                  [        [        5      U R                  SS9$ U[        R                  L a4  SS K
nSSKJn  U" UR                  U5      [        U5      U R                  S9$ U[        R                  L a?  SS KnSSKJn  U" UR$                  R                  U5      [        U5      U R                  SS9$ S	U 3n	['        U	5      e)Nr   )PandasLikeDataFrameT)implementationr4   r5   validate_column_names)PolarsDataFramerC   )ArrowDataFrame)r4   r5   rr   zUnsupported `backend` value: rU   )r[   computer   PANDASnarwhals._pandas_like.dataframerp   r   pdr/   POLARSpolarsnarwhals._polars.dataframers   from_pandasPYARROWpyarrownarwhals._arrow.dataframert   Table
ValueError)
r2   backendkwargsresultrp   plrs   part   rM   s
             r6   collectDaskLazyFrame.collecti   s    
 $$.v.?g)>)>>K&-44 -b 1&*  n+++B"v& -b 1  n,,, @!$$V, -b 1&*	  .gY7or9   c                    U R                   cK  U R                  b  [        U R                  5      O#U R                  R
                  R                  5       U l         U R                   $ r*   )r1   r0   listschemar[   columnstolistrV   s    r6   r   DaskLazyFrame.columns   sV    ' &&2 T[[![[((//1  
 ###r9   c                h    U" U 5      S   nU R                  U R                  R                  U   5      $ )Nr   )r`   r[   loc)r2   	predicatemasks      r6   filterDaskLazyFrame.filter   s.    q!  !677r9   c                    [        U R                  [        U5      U R                  U R                  5      nU R                  U5      $ r*   )r   r[   r   r,   r.   r`   )r2   column_namesr[   s      r6   simple_selectDaskLazyFrame.simple_select   s=    'KKl+T-B-BDDXDX
   ((r9   c           	         [        U /UQ76 n[        R                  " U VVs/ s H  u  p4UR                  U5      PM     snnSS9nU R	                  U5      $ s  snnf )N   )axis)r
   r<   concatrenamer`   )r2   rk   rl   namevalr_   s         r6   	aggregateDaskLazyFrame.aggregate   sR    #D151
YY*E*YT

4(*EAN  $$ Fs   A
c           	         [        U /UQ76 n[        U R                  R                  " S0 [	        U5      D6U Vs/ s H  o3S   PM	     snU R
                  U R                  5      nU R                  U5      $ s  snf )Nr   rU   )r
   r   r[   ri   rj   r,   r.   r`   )r2   rk   rl   sr_   s        r6   selectDaskLazyFrame.select   ss    #D151
#KK2j!12%&:aqT:&!!  	
   $$	 's   A6
c                    Uc)  U R                  U R                  R                  5       5      $ U R                  5       nU R	                  UR                  UR                  " U6 R                  5       5      ) 5      $ r*   )r`   r[   dropnarR   r   any_horizontalcolis_null)r2   subsetplxs      r6   
drop_nullsDaskLazyFrame.drop_nulls   sb    >$$T[[%7%7%9::))+{{C..sww/?/G/G/IJJKKr9   c           	        U R                   cd  U R                  R                  nU R                  R                   Vs0 s H'  nU[	        X   U R
                  U R                  5      _M)     snU l         U R                   $ s  snf r*   )r0   r[   dtypesr   r   r/   r.   )r2   native_dtypesr   s      r6   r   DaskLazyFrame.schema   s    & KK..M
  ;;..	# /C -!&t7K7K  /	#D """#s   .A>c                    U R                   $ r*   )r   rV   s    r6   collect_schemaDaskLazyFrame.collect_schema   s    {{r9   c               f    [        XUS9nU R                  U R                  R                  US95      $ )N)compliant_framer   strictr   )r   r`   r[   drop)r2   r   r   to_drops       r6   r   DaskLazyFrame.drop   s6    ' &
   !1!1'!1!BCCr9   c                v    U R                  [        U R                  XR                  U R                  5      5      $ r*   )r`   r	   r[   r,   r.   )r2   r   s     r6   with_row_indexDaskLazyFrame.with_row_index   s3       $++t-B-BDDXDXY
 	
r9   c                R    U R                  U R                  R                  US95      $ )Nr   )r`   r[   r   )r2   mappings     r6   r   DaskLazyFrame.rename   s%      !3!3G!3!DEEr9   c                V    U R                  U R                  R                  USSS95      $ )NF)nru   npartitions)r`   r[   head)r2   r   s     r6   r   DaskLazyFrame.head   s*      !1!1AuRT!1!UVVr9   c                  [        U R                  U5        US:X  a  U=(       d    U R                  n[        SUS9nU R                  R	                  U5      R                  5       R                  U5      nXDS:H     nUR                  5       R                  US9nU R                  R                  XQSS9nO,SS	0R                  X"5      nU R                  R                  XS
9nU R                  U5      $ )Nnone   n_bytesr   r   r   inner)onhowanyfirst)r   keep)r   r   r   r[   groupbysizer   reset_indexr   mergegetdrop_duplicatesr`   )r2   r   r   tokenre   uniquer   mapped_keeps           r6   r   DaskLazyFrame.unique   s     	DLL&16>+t||F21fME++%%f-224;;EBCQh-C__&++E+:F[[&&vg&FF '*..t:K[[000QF  ((r9   c                   [        U[        5      (       a  U(       + nOU Vs/ s H	  oU(       + PM     nnU(       a  SOSnU R                  U R                  R	                  [        U5      XFS95      $ s  snf )Nlastr   )	ascendingna_position)r;   boolr`   r[   sort_valuesr   )r2   
descending
nulls_lastbyr   dpositions          r6   sortDaskLazyFrame.sort   sh     j$''/9>I(23
1
I3'6W  KK##DH	#X
 	
 4s   A1c          
         US:X  a  [        S/ U R                  QUR                  QS9nU R                  U R                  R                  " S0 US0D6R                  UR                  R                  " S0 US0D6SUUSU4S9R                  US95      $ US	:X  a  [        S/ U R                  QUR                  QS9nUc  S
n[        U5      e[        UR                  [        U5      U R                  U R                  5      R                  [        [        XC5      5      S9R                  5       n	U R                  R                  U	SUUUS9n
U R                  XU   S:H     R                  U/S95      $ US:X  a  Uc  Sn[        U5      e[        UR                  [        U5      U R                  U R                  5      R                  [        [        XC5      5      S9R                  5       n	U R                  U R                  R                  U	SX3S95      $ US:X  a  U R                  R                  UR                  SUUSU4S9n/ n[        X45       HG  u  pX:w  a"  XR                  ;  a  UR!                  U5        M,  X:w  d  M3  UR!                  U S35        MI     U R                  UR                  US95      $ US:X  a  Uc   eUc   e[#        X4U5      nUR                  R                  US9n	[%        U	R                  5        [        UR'                  5       5      nU R                  U R                  R                  U	UUSSU4S95      $ U R                  U R                  R                  UR                  UUUSU4S95      $ )Ncrossr   r   r   r    )r   left_onright_onsuffixesr   antiz(`right_on` cannot be `None` in anti-joinouter)r   	indicatorr   r   	left_onlysemiz(`right_on` cannot be `None` in semi-join)r   r   r   left_rightfull)r   r   r   r   rU   )r   r   r`   r[   ri   r   r   	TypeErrorr   r   r,   r.   r   rj   zipr   appendr   r   values)r2   otherr   r   r   suffix	key_tokenindicator_tokenrM   other_nativer_   result_nativeextraleft_key	right_keyright_on_mappers                   r6   joinDaskLazyFrame.join  s    '>6#BT\\#BEMM#BI $$""4i^4LL''99a.9%& &\   i(
 
 &=<#BT\\#BEMM#BO @n$&LLN))((	  X!78   !"  "")  # B $$o&+56;;_DU;V  &=@n$&LLN))((	  X!78   !"  $$!! gw "   &= KK--!f . M E'*7'=#(Yll-JLL+*LLI;f!56	 (>
 $$]%7%7%7%FGG&=
 &&&'''3GvNO <<...GL),*>*>?O2245H$$!! #% &\ "     KK!f  
 	
r9   c                   U R                  5       nU R                  UR                  U R                  UR                  UUUUUSU4S95      $ )Nr   )r   r   left_byright_by	directionr   )rN   r`   
merge_asofr[   )	r2   r   r   r   by_leftby_rightstrategyr   r   s	            r6   	join_asofDaskLazyFrame.join_asof  sZ     '')  NN!!"f  	
 	
r9   c                   SSK Jn  U" XUS9$ )Nr   r   )drop_null_keys)narwhals._dask.group_byr   )r2   r  r   r   s       r6   group_byDaskLazyFrame.group_by  s    ;tGGr9   c                    U R                   nUR                  nUS:X  a)  U R                  U R                   R                  USS95      $ Sn[	        U5      e)Nr   F)r   ru   zL`LazyFrame.tail` is not supported for Dask backend with multiple partitions.)r[   r   r`   tailNotImplementedError)r2   r   native_framen_partitionsrM   s        r6   r  DaskLazyFrame.tail  sS    {{#//1$$T[[%5%55%5%IJJ`C%c**r9   c                   [        SU R                  S9nU R                  5       nU R                  U5      R	                  UR                  U5      U:  UR                  U5      U-
  U-  S:H  -  5      R                  U/SS9$ )Nr   r   r   F)r   )r   r   rR   r   r   r   r   )r2   r   offsetrow_index_tokenr   s        r6   gather_everyDaskLazyFrame.gather_every  s    8DLLY))+0V)V3GGO,v5:a?A T?#ET2	
r9   c           	     X    U R                  U R                  R                  UUUUS95      $ )N)id_vars
value_varsvar_name
value_name)r`   r[   melt)r2   r   indexvariable_namer'  s        r6   unpivotDaskLazyFrame.unpivot  s:       KK&%	  
 	
r9   )r,   r1   r0   r.   r+   r/   N)r3   dd.DataFramer4   ztuple[int, ...]r5   r$   returnNone)r>   zdd.DataFrame | Anyr.  zTypeIs[dd.DataFrame])rE   r-  rF   r%   r.  r   )r.  r   )r.  r   )r.  r   )r5   r$   r.  r   )r_   r   r.  r   )r.  zIterator[dx.Series])rk   r   r.  r   )r   zImplementation | Noner   r   r.  z!CompliantDataFrame[Any, Any, Any])r.  z	list[str])r   r   r.  r   )r   strr.  r   )r   Sequence[str] | Noner.  r   )r.  zdict[str, DType])r   zSequence[str]r   r   r.  r   )r   r0  r.  r   )r   zMapping[str, str]r.  r   )r   intr.  r   )r   r1  r   r#   r.  r   )r   r0  r   zbool | Sequence[bool]r   r   r.  r   )r   r   r   r"   r   r1  r   r1  r   r0  r.  r   )r   r   r   
str | Noner   r3  r  r1  r  r1  r  r!   r   r0  r.  r   )r   r0  r  r   r.  r   )r   r2  r  r2  r.  r   )
r   r1  r)  r1  r*  r0  r'  r0  r.  r   ))__name__
__module____qualname____firstlineno__r7   staticmethodr?   classmethodrG   rN   rR   rW   r\   r`   rf   rm   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r+  r   explode__static_attributes__rU   r9   r6   r'   r'   .   s0   N&N )	N
 N 
N - - 
 

"[




I*&* * 
+	*X $ $8
)%
%L 	# 	#D
FW)*)5K)	) 

 *
 	

 

}
}
 	}

 &}
 '}
 }
 
}
~

 	

 
 &
 '
 #
 
 

2H
+


 
 $
 	

 
 

  Gr9   r'   )r   r-  )6
__future__r   typingr   r   r   r   r   dask.dataframe	dataframer<   pandasrx   narwhals._dask.utilsr	   r
   narwhals._pandas_like.utilsr   r   narwhals.typingr   r   narwhals.utilsr   r   r   r   r   r   r   r   r   typesr   dask.dataframe.dask_expr	dask_exprdxtyping_extensionsr   r   narwhals._dask.exprr   r  r   rQ   r   narwhals.dtypesr    r!   r"   r#   r$   r%   r'   rU   r9   r6   <module>rM     s    "         . / @ > . . ) 0 . 8 9 * 0 ( 3 ))&(,76%0,6&+V &'AB V r9   