
    Wh                    @   d dl mZ d dlZd dlmZmZ er&d dlZd dlmZ	 d dl
Z
d dlmZ d dlZd dlZd dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddZ&ddZ'ddZ(dd	Z)dd
Z*ddZ+ddZ,ddZ-ddZ.ddZ/d dZ0d!dZ1d"dZ2d#dZ3d$dZ4g dZ5y)%    )annotationsN)TYPE_CHECKINGAny)TypeIs)IMPORT_HOOKSget_cudfget_dask_dataframeget_ibis	get_modin	get_numpy
get_pandas
get_polarsget_pyarrowis_into_dataframeis_into_seriesis_narwhals_dataframeis_narwhals_lazyframeis_narwhals_seriesis_numpy_arrayis_pandas_indexc                     t               x}duxr t         |j                        xs t         fdt        D              S )zBCheck whether `df` is a pandas DataFrame without importing pandas.Nc              3     K   | ]J  }t         j                  j                  |d       xd uxr  t        j                  j
                         L y wN)sysmodulesget
isinstancepandas	DataFrame).0module_namedfmods     Y/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/stable/v1/dependencies.py	<genexpr>z&is_pandas_dataframe.<locals>.<genexpr>'   sT      V  T2	24? 	1r3:://0	1V   AA)r   r   r   anyr   )r"   pdr#   s   ` @r$   is_pandas_dataframer)   %   sF    <R,MB1M RU V (V S     c                     t               x}duxr t         |j                        xs t         fdt        D              S )z@Check whether `ser` is a pandas Series without importing pandas.Nc              3     K   | ]J  }t         j                  j                  |d       xd uxr  t        j                  j
                         L y wr   )r   r   r   r   r   Series)r    r!   r#   sers     r$   r%   z#is_pandas_series.<locals>.<genexpr>0   sT      T  T2	24? 	/sCJJ--.	/Tr&   )r   r   r-   r'   r   )r.   r(   r#   s   ` @r$   is_pandas_seriesr/   .   sF    <R,KC1K PS T (T Q r*   c                N    t               x}duxr t        | |j                        S )z@Check whether `df` is a modin DataFrame without importing modin.N)r   r   r   )r"   mpds     r$   is_modin_dataframer2   7   s$    ;Ct+M
2s}}0MMr*   c                N    t               x}duxr t        | |j                        S )z>Check whether `ser` is a modin Series without importing modin.N)r   r   r-   )r.   r1   s     r$   is_modin_seriesr4   <   s$    ;Ct+K
3

0KKr*   c                N    t               x}duxr t        | |j                        S )z>Check whether `df` is a cudf DataFrame without importing cudf.N)r   r   r   )r"   cudfs     r$   is_cudf_dataframer7   A   s$    JDt+N
2t~~0NNr*   c                N    t               x}duxr t        | |j                        S )z<Check whether `ser` is a cudf Series without importing cudf.N)r   r   r-   )r.   r6   s     r$   is_cudf_seriesr9   F   s$    JDt+L
30LLr*   c                N    t               x}duxr t        | |j                        S )z>Check whether `df` is a Dask DataFrame without importing Dask.N)r	   r   r   )r"   dds     r$   is_dask_dataframer<   K   s%    $&&Bt3T
2r||8TTr*   c                v    t               x}duxr* t        | |j                  j                  j                        S )z:Check whether `df` is a Ibis Table without importing Ibis.N)r
   r   exprtypesTable)r"   ibiss     r$   is_ibis_tablerB   P   s.    JDt+U
2tyy?T?T0UUr*   c                N    t               x}duxr t        | |j                        S )zBCheck whether `df` is a Polars DataFrame without importing Polars.N)r   r   r   r"   pls     r$   is_polars_dataframerF   U   $    ,Bt+L
2r||0LLr*   c                N    t               x}duxr t        | |j                        S )zBCheck whether `df` is a Polars LazyFrame without importing Polars.N)r   r   	LazyFramerD   s     r$   is_polars_lazyframerJ   Z   rG   r*   c                N    t               x}duxr t        | |j                        S )z@Check whether `ser` is a Polars Series without importing Polars.N)r   r   r-   )r.   rE   s     r$   is_polars_seriesrL   _   s$    ,Bt+J
3		0JJr*   c                N    t               x}duxr t        | |j                        S )zHCheck whether `ser` is a PyArrow ChunkedArray without importing PyArrow.N)r   r   ChunkedArray)r.   pas     r$   is_pyarrow_chunked_arrayrP   d   s$    -B,QC1QQr*   c                N    t               x}duxr t        | |j                        S )z@Check whether `df` is a PyArrow Table without importing PyArrow.N)r   r   r@   )r"   rO   s     r$   is_pyarrow_tablerR   i   s$    -B,IB1IIr*   c                L    t        |       xs t        |       xs t        |       S )zCheck whether `df` is a pandas-like DataFrame without doing any imports.

    By "pandas-like", we mean: pandas, Modin, cuDF.
    )r)   r2   r7   )r"   s    r$   is_pandas_like_dataframerT   n   s&    
 r"U&8&<U@QRT@UUr*   c                L    t        |       xs t        |       xs t        |       S )zCheck whether `ser` is a pandas-like Series without doing any imports.

    By "pandas-like", we mean: pandas, Modin, cuDF.
    )r/   r4   r9   )r.   s    r$   is_pandas_like_seriesrV   v   s#    
 C OOC$8ON3<OOr*   )r   r
   r   r   r   r   r   r7   r9   r<   rB   r   r   r2   r4   r   r   r   r   r)   r   rT   rV   r/   rF   rJ   rL   rP   rR   )r"   r   returnzTypeIs[pd.DataFrame])r.   r   rW   zTypeIs[pd.Series[Any]])r"   r   rW   zTypeIs[mpd.DataFrame])r.   r   rW   zTypeIs[mpd.Series])r"   r   rW   zTypeIs[cudf.DataFrame])r.   r   rW   zTypeIs[cudf.Series[Any]])r"   r   rW   zTypeIs[dd.DataFrame])r"   r   rW   zTypeIs[ibis.Table])r"   r   rW   zTypeIs[pl.DataFrame])r"   r   rW   zTypeIs[pl.LazyFrame])r.   r   rW   zTypeIs[pl.Series])r.   r   rW   zTypeIs[pa.ChunkedArray[Any]])r"   r   rW   zTypeIs[pa.Table])r"   r   rW   bool)r.   r   rW   rX   )6
__future__r   r   typingr   r   r6   dask.dataframe	dataframer;   rA   modin.pandasr   r1   r(   polarsrE   pyarrowrO   typing_extensionsr   narwhals.dependenciesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r)   r/   r2   r4   r7   r9   r<   rB   rF   rJ   rL   rP   rR   rT   rV   __all__ r*   r$   <module>rd      s    " 
 %(    (N
L
O
M
U
V
M
M
K
R
J
VPr*   