
    hhX                       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 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#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&j/        d*e&j0        d+e&j1        d,e&j2        d-e&j3        d.e&j4        d/e&j5        d0e&j6        d1e&j7        d2e(j6        d1e(j7        d2Z8d3e9d4<   e&j:        e&j;        e&j<        e&j=        e&j>        fZ?d@d:Z@dS )A    )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                    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       K/var/www/histauto/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 ))_tmpr3   )r   dxSeries_native_frameassign).0sr   s     r   
<listcomp>z/align_series_full_broadcast.<locals>.<listcomp>3   sW        29%%R2+;+B+B+B+J+J6+R  r!    )r   r/   s   ` r   align_series_full_broadcastr<   0   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 )Nr   blelloch)methodr;   )columnsr7   r   cumsumr   DASK)r=   r?   original_colsr   s       r   add_row_indexrH   9   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)r4   r*   are_co_aligned_exprRuntimeError)rI   rK   r-   s      r   validate_comparandrQ   C   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_typer^   getr	   Stringr   PANDAS_backend_versionr
   Enumr   V1NotImplementedErrorr   pandasCategoricalDtype
categories
ValueError
issubclassUNSUPPORTED_DTYPES__name__r&   )r_   r`   re   rf   	dask_typer-   pds          r   narwhals_to_native_dtyperw   q   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!   )r   r   r   r   r   r   )r   r   r"   r   r   r#   )r   r   r/   r   r   r0   )r=   r>   r?   r@   r   r>   )rI   rJ   rK   rJ   r   rL   )r_   r   r`   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_exprr4   narwhals._dask.dataframer   r   r   r   narwhals.dtypesr   narwhals.typingr   ModuleNotFoundErrorr    r.   r<   rH   rQ   MAINre   rl   	dtypes_v1Float64Float32BooleanCategoricalDateInt8Int16Int32Int64UInt8UInt16UInt32UInt64DatetimeDurationr^   __annotations__ListStructArrayTimeBinaryrs   rw   r;   r!   r   <module>r      s+   " " " " " " " % % % % % % % % > > > > > > M 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      s   	A% %	A10A1