
    Whl                       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	m
Z
 d dlmZ er2d dlmZmZ d dlmZ d dlmc mZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ n
	 d dlmc mZ d#dZ d$dZ!	 	 	 	 	 	 d%dZ"d&dZ#d'dZ$e	jJ                  jL                  Z&e	jN                  jL                  Z(i e&jR                  de&jT                  de&jV                  de&jX                  de&jZ                  de&j\                  de&j^                  de&j`                  de&jb                  de&jd                  de&jf                  de&jh                  de&jj                  de&jl                  de&jn                  de(jl                  de(jn                  dZ8d e9d!<   e&jt                  e&jv                  e&jx                  e&jz                  e&j|                  fZ?d(d"Z@y# e$ r d dlZY tw xY w))    )annotations)TYPE_CHECKINGAny)select_columns_by_name)ImplementationVersionisinstance_or_issubclass)get_pyarrow)MappingSequenceN)DaskLazyFrame
IncompleteDaskExpr)DType)	IntoDTypec                v    ddl m} t        ||      r&|j                  |       }t	        |      dk(  sJ |d   S |S )Nr   r      )narwhals._dask.exprr   
isinstance_calllen)dfobjr   resultss       N/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/_dask/utils.pymaybe_evaluate_exprr      s=    ,#x ))B-7|q   qzJ    c                   g }|D ]j  } ||       }|j                  |       }t        |      t        |      k7  rd| dt        |       d}t        |      |j                  t	        ||             l |S )NzInternal error: got aliases z, but only got z results)_evaluate_aliasesr   AssertionErrorextendzip)r   exprsnative_resultsexprnative_series_listaliasesmsgs          r   evaluate_exprsr*   $   s    24N @!"X((,w<31220	M_I`HaaijC %%c'+=>?@ r   c                    |D cg c]=  }t        |t        j                        r|n| j                  j	                  |      d   ? c}S c c}w )N)_tmpr,   )r   dxSeries_native_frameassign)r   seriesss      r   align_series_full_broadcastr3   0   sO    
  299%2+;+;+B+B+B+J6+RR  s   AA
c           
         | j                   } | j                  di |di}t         |j                  di |||   j                  d      dz
  i|g|t        j
                        S )Nr   blelloch)method )columnsr0   r   cumsumr   DASK)framenameoriginal_colsr   s       r   add_row_indexr>   9   sm    MMM!U\\.T1I.B!		CT2d8??*?=ABC	 r   c                    t         j                  j                  | j                  |j                        sd}t	        |      y )NzOObjects are not co-aligned, so this operation is not supported for Dask backend)r-   r&   are_co_aligned_exprRuntimeError)lhsrhsr)   s      r   validate_comparandrE   C   s6    77!!#))SYY7 `3 8r   float64float32boolcategoryzdate32[day][pyarrow]int8int16int32int64uint8uint16uint32uint64zdatetime64[us]ztimedelta64[ns]zMapping[type[DType], str]NW_TO_DASK_DTYPESc                `   |j                   }| j                         }t        j                  |      x}r|S t	        | |j
                        r0t        j                  j                         dk\  rt               rdS dS yt	        | |j                        rc|t        j                  u rd}t        |      t        | |j                        r!dd l}|j!                  | j"                  d      S d	}t%        |      t'        |t(              rd
|j*                   d}t        |      d|  }t-        |      )N)   r   r   zstring[pyarrow]zstring[python]objectz9Converting to Enum is not supported in narwhals.stable.v1r   T)orderedz9Can not cast / initialize Enum without categories presentzConverting to z! dtype is not supported for Dask.zUnknown dtype: )dtypes	base_typerR   getr	   Stringr   PANDAS_backend_versionr
   Enumr   V1NotImplementedErrorr   pandasCategoricalDtype
categories
ValueError
issubclassUNSUPPORTED_DTYPES__name__r!   )dtypeversionrW   rX   	dask_typer)   pds          r   narwhals_to_native_dtyperk   q   s   ^^F!I%)))44y4v}}5  113y@(3$K;KKv{{3gjj MC%c**eV[[)
 &&u'7'7&FFIo)/0y1122ST!#&&E7
#C

r   )r   r   r   zDaskExpr | objectreturndx.Series | object)r   r   r$   r   rl   zlist[tuple[str, dx.Series]])r   r   r1   rm   rl   zSequence[dx.Series])r;   dd.DataFramer<   strrl   rn   )rC   	dx.SeriesrD   rp   rl   None)rg   r   rh   r   rl   r   )A
__future__r   typingr   r   narwhals._pandas_like.utilsr   narwhals._utilsr   r   r	   narwhals.dependenciesr
   collections.abcr   r   dask.dataframe	dataframedddask.dataframe.dask_expr	dask_exprr-   narwhals._dask.dataframer   r   r   r   narwhals.dtypesr   narwhals.typingr   ModuleNotFoundErrorr   r*   r3   r>   rE   MAINrW   r^   	dtypes_v1Float64Float32BooleanCategoricalDateInt8Int16Int32Int64UInt8UInt16UInt32UInt64DatetimeDurationrR   __annotations__ListStructArrayTimeBinaryre   rk   r7   r   r   <module>r      s   " % > M M -1))B,%)--
	 2   
		JJ	0
NNI0
NNI0 NNF0 
	0
 KK'0 KK0 LL'0 LL'0 LL'0 LL'0 MM80 MM80 MM80 OO%0 OO&0  (!0" )#0 , ( KK
MM
LL
KK
MM w  s   	G 	GG