o
    Lhl                     @  s  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rYd dlmZmZ d dlmZ d dlm  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zd dlm  mZ W n eyq   d dlZY nw dAddZ dBddZ!dCddZ"dDd!d"Z#dEd'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&j/d/e&j0d0e&j1d1e&j2d2e&j3d3e&j4d4e&j5d5e&j6d6e&j7d7e(j6d6e(j7d7Z8d8e9d9< e&j:e&j;e&j<e&j=e&j>fZ?dFd?d@Z@dS )G    )annotations)TYPE_CHECKINGAny)select_columns_by_name)ImplementationVersionisinstance_or_issubclass)get_pyarrow)MappingSequenceN)DaskLazyFrame
IncompleteDaskExpr)DType)	IntoDTypedfr   objDaskExpr | objectreturndx.Series | objectc                 C  s<   ddl m} t||r|| }t|dksJ |d S |S )Nr   r      )narwhals._dask.exprr   
isinstance_calllen)r   r   r   results r   U/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/narwhals/_dask/utils.pymaybe_evaluate_expr   s   

r   exprsr   list[tuple[str, dx.Series]]c                G  sb   g }|D ]*}|| }| | }t|t|kr&d| dt| d}t||t|| q|S )NzInternal error: got aliases z, but only got z results)_evaluate_aliasesr   AssertionErrorextendzip)r   r    native_resultsexprnative_series_listaliasesmsgr   r   r   evaluate_exprs$   s   
r+   seriesSequence[dx.Series]c                   s    fdd|D S )Nc                   s.   g | ]}t |tjr|n jj|d d qS ))_tmpr.   )r   dxSeries_native_frameassign).0sr   r   r   
<listcomp>3   s     z/align_series_full_broadcast.<locals>.<listcomp>r   )r   r,   r   r5   r   align_series_full_broadcast0   s   
r7   framedd.DataFramenamestrc                 C  sN   | j }| jdi |di}t|jdi ||| jddd i|g|tjS )Nr   blelloch)methodr   )columnsr2   r   cumsumr   DASK)r8   r:   original_colsr   r   r   r   add_row_index9   s   "rB   lhs	dx.SeriesrhsNonec                 C  s"   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)rC   rE   r*   r   r   r   validate_comparandC   s   rJ   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                 C  s   |j }|  }t| }r|S t| |jr&tj dkr$t	 r"dS dS dS t| |j
rO|tju r7d}t|t| |j
rIdd l}|j| jd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*   pdr   r   r   narwhals_to_native_dtypeq   s,   


ro   )r   r   r   r   r   r   )r   r   r    r   r   r!   )r   r   r,   r   r   r-   )r8   r9   r:   r;   r   r9   )rC   rD   rE   rD   r   rF   )rX   r   rY   r   r   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+   r7   rB   rJ   MAINr]   rd   	dtypes_v1Float64Float32BooleanCategoricalDateInt8Int16Int32Int64UInt8UInt16UInt32UInt64DatetimeDurationrW   __annotations__ListStructArrayTimeBinaryrk   ro   r   r   r   r   <module>   s    




	

	
	