
    }iE                       U d dl mZ d dlmZmZ d dlmZ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 n# e!$ r d dlZY nw xY wd;dZ"d<dZ#d=dZ$d>d Z%ej&        j'        Z'ej(        j'        Z)i e'j*        d!e'j+        d"e'j,        d#e'j-        d$e'j.        d%e'j/        d&e'j0        d'e'j1        d(e'j2        d)e'j3        d*e'j4        d+e'j5        d,e'j6        d-e'j7        d.e'j8        d/e)j7        d.e)j8        d/Z9d0e:d1<   e'j;        e'j<        e'j=        e'j>        e'j?        e'j@        fZAd?d7ZBd@d:ZdS )A    )annotations)TYPE_CHECKINGAny)make_group_by_kwargsselect_columns_by_name)ImplementationVersionisinstance_or_issubclass)get_pyarrow)MappingSequenceN)DaskLazyFrame
Incomplete)DaskExpr)DType)	IntoDTypedfr   exprsr   returnlist[tuple[str, dx.Series]]c               $   g }|D ]} ||           }|                     |           }t          |          t          |          k    r%d| dt          |           d}t          |          |                    t	          ||                     |S )NzInternal error: got aliases z, but only got z results)_evaluate_aliaseslenAssertionErrorextendzip)r   r   native_resultsexprnative_series_listaliasesmsgs          H/home/jrussi/.local/lib/python3.11/site-packages/narwhals/_dask/utils.pyevaluate_exprsr#      s    24N @ @!T"XX((,,w<<312222jjjM_I`I`jjjC %%%c'+=>>????    seriesdx.Series | objectSequence[dx.Series]c                       fd|D             S )Nc                    g | ]?}t          |t          j                  r|n j                            |           d         @S ))_tmpr*   )
isinstancedxSeries_native_frameassign).0sr   s     r"   
<listcomp>z/align_series_full_broadcast.<locals>.<listcomp>,   sW        29%%R2+;+B+B+B+J+J6+R  r$    )r   r%   s   ` r"   align_series_full_broadcastr4   )   s.          r$   framedd.DataFramenamestrc           
         | j         } | j        di |di}t           |j        di |||                             d          dz
  i|g|t          j                  S )N   blelloch)methodr3   )columnsr/   r   cumsumr   DASK)r5   r7   original_colsr   s       r"   add_row_indexrA   2   sx    MM!U\..T1I..B!	CCT2d8??*?==ABCC	  r$   lhs	dx.SeriesrhsNonec                |    t           j                            | j        |j                  sd}t	          |          d S )NzOObjects are not co-aligned, so this operation is not supported for Dask backend)r,   r   are_co_aligned_exprRuntimeError)rB   rD   r!   s      r"   validate_comparandrJ   <   s@    7!!#)SY77   `3   r$   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_DTYPESdtyper   versionr	   r   c                   |j         }|                                 }t                              |          x}r|S t	          | |j                  r6t          j                                        dk    rt                      rdndS dS t	          | |j
                  re|t          j        u rd}t          |          t          | |j
                  r dd l}|                    | 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_typerW   getr
   Stringr   PANDAS_backend_versionr   Enumr	   V1NotImplementedErrorr+   pandasCategoricalDtype
categories
ValueError
issubclassUNSUPPORTED_DTYPES__name__r   )rX   rY   r^   r_   	dask_typer!   pds          r"   narwhals_to_native_dtyperp   k   sU   ^F!!I%)))444y v}55  1133y@@(3K$$;KKxv{33 gj  MC%c***eV[)) 	G
 &&u'7&FFFIoo)/00 'Ty1TTT!#&&&
#E
#
#C


r$   drop_null_keysdict[str, bool]c                P    t          |           }|                    d           |S )N)rq   as_index)pd_make_group_by_kwargspop)rq   kwargss     r"   r   r      s)    $NCCCF
JJzMr$   )r   r   r   r   r   r   )r   r   r%   r&   r   r'   )r5   r6   r7   r8   r   r6   )rB   rC   rD   rC   r   rE   )rX   r   rY   r	   r   r   )rq   rM   r   rr   )C
__future__r   typingr   r   narwhals._pandas_like.utilsr   ru   r   narwhals._utilsr   r	   r
   narwhals.dependenciesr   collections.abcr   r   dask.dataframe	dataframedddask.dataframe.dask_expr	dask_exprr,   narwhals._dask.dataframer   r   narwhals._dask.exprr   narwhals.dtypesr   narwhals.typingr   ModuleNotFoundErrorr#   r4   rA   rJ   MAINr^   re   	dtypes_v1Float64Float32BooleanCategoricalDateInt8Int16Int32Int64UInt8UInt16UInt32UInt64DatetimeDurationrW   __annotations__ListStructArrayTimeBinaryDecimalrl   rp   r3   r$   r"   <module>r      sI   " " " " " " " % % % % % % % %        N M M M M M M M M M - - - - - - 11111111)))))))))BBBBBBBB,,,,,,%%%%%%)))))))----------   	 	 	 	               
	J	0
NI0
NI0 NF0 
	0
 K'0 K0 L'0 L'0 L'0 L'0 M80 M80 M80 O%0 O&0  (!0" )#0     ( K
M
L
K
M
N    :     s   	A' '	A32A3