
    -Ph                       d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZ er"d dlmZ d dlmc 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 d0d%Z!d1d+Z"dS )2    )annotations)TYPE_CHECKINGAnySequence)select_columns_by_name)ImplementationVersionisinstance_or_issubclassparse_version)
get_pandasget_pyarrowN)DaskLazyFrameDaskExpr)	IntoDTypedfr   objDaskExpr | objectreturndx.Series | objectc                    ddl m} t          ||          r2|                    |           }t	          |          dk    sJ |d         S |S )Nr   r      )narwhals._dask.exprr   
isinstance_calllen)r   r   r   resultss       T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_dask/utils.pymaybe_evaluate_exprr      s[    ,,,,,,#x   ))B--7||q    qzJ    exprsr   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_aliasesr   AssertionErrorextendzip)r   r!   native_resultsexprnative_series_listaliasesmsgs          r   evaluate_exprsr-   &   s    24N @ @!T"XX((,,w<<312222jjjM_I`I`jjjC %%%c'+=>>????r    seriesSequence[dx.Series]c                       fd|D             S )Nc                    g | ]?}t          |t          j                  r|n j                            |           d         @S ))_tmpr2   )r   dxSeries_native_frameassign).0sr   s     r   
<listcomp>z/align_series_full_broadcast.<locals>.<listcomp>5   sW        29%%R2+;+B+B+B+J+J6+R  r     )r   r.   s   ` r   align_series_full_broadcastr;   2   s.          r    framedd.DataFramenamestrbackend_versiontuple[int, ...]implementationr   c           
         | j         } | j        di |di} t           | j        di || |                             d          dz
  i|g|||          S )Nr   blelloch)methodr:   )columnsr6   r   cumsum)r<   r>   r@   rB   original_colss        r   add_row_indexrI   ;   s}     MMEL%%D!9%%E!IIeDk00
0CCaGHII		  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)r3   r)   are_co_aligned_exprRuntimeError)rJ   rL   r,   s      r   validate_comparandrR   K   s@    7!!#)SY77   `3   r    dtyper   versionr	   r   c                   |j         }t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j	                  rdS t          | |j
                  rd	S t          | |j                  rd
S t          | |j                  r7t                      x}%t          |          dk    rt                      dS dS dS t          | |j                  rdS t          | |j                  re|t$          j        u rd}t)          |          t+          | |j                  r dd l}|                    | j        d          S d}t3          |          t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j                  rdS t          | |j                  rd}t)          |          S t          | |j                  rd}t)          |          S t          | |j                   rd}t)          |          S t          | |j!                  rd}t)          |          S t          | |j"                  rd}t)          |          S d|  }tG          |          )Nfloat64float32int64int32int16int8uint64uint32uint16uint8)   r   r   zstring[pyarrow]zstring[python]objectboolz9Converting to Enum is not supported in narwhals.stable.v1r   T)orderedz9Can not cast / initialize Enum without categories presentcategoryzdatetime64[us]zdate32[day][pyarrow]ztimedelta64[ns]z-Converting to List dtype is not supported yetz/Converting to Struct dtype is not supported yetz.Converting to Array dtype is not supported yetz-Converting to Time dtype is not supported yetz/Converting to Binary dtype is not supported yetzUnknown dtype: )$dtypesr
   Float64Float32Int64Int32Int16Int8UInt64UInt32UInt16UInt8Stringr   r   r   BooleanEnumr	   V1NotImplementedErrorr   pandasCategoricalDtype
categories
ValueErrorCategoricalDatetimeDateDurationListStructArrayTimeBinaryr%   )rS   rT   re   pdr,   s        r   narwhals_to_native_dtyper   [   s6   ^Fv~66 yv~66 yv|44 wv|44 wv|44 wv{33 vv}55 xv}55 xv}55 xv|44 wv}55 ,,B+b0A0AY0N0N}}(((##xv~66 vv{33 gj  MC%c***eV[)) 	G
 &&u'7&FFFIoov'9:: zv77  v{33 &%%v77 !  v{33 (="3'''v}55 (?"3'''v|44 (>"3'''v{33 (="3'''v}55 (?"3'''
#E
#
#C


r    )r   r   r   r   r   r   )r   r   r!   r   r   r"   )r   r   r.   r   r   r/   )
r<   r=   r>   r?   r@   rA   rB   r   r   r=   )rJ   rK   rL   rK   r   rM   )rS   r   rT   r	   r   r   )#
__future__r   typingr   r   r   narwhals._pandas_like.utilsr   narwhals._utilsr   r	   r
   r   narwhals.dependenciesr   r   dask.dataframe	dataframedddask.dataframe.dask_expr	dask_exprr3   narwhals._dask.dataframer   r   r   narwhals.typingr   ModuleNotFoundErrorr   r-   r;   rI   rR   r   r:   r    r   <module>r      s   " " " " " " / / / / / / / / / / > > > > > >            : 9 9 9 9 9 9 9 )))))))))666666,,,,,,)))))))----------      	 	 	 	               E E E E E Es   	A 	A&%A&