
    O3jd                       d dl mZ d dlZd dlmZmZ d dlmZ erhd dlmZ d dl	Z	d dl
mZ d dl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 d dlmZ 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(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/  e0dg      Z1dcdZ2dcdZ3dcdZ4dcdZ5dcdZ6dcdZ7dcdZ8dcdZ9dcdZ:dcdZ;dcdZ<dcdZ=dcdZ>dcdZ?dcdZ@dcdZAdddZBdedZCdfdZDdfd ZEdgd!ZFdgd"ZGdhd#ZHdid$ZIdid%ZJdjd&ZKdjd'ZLdkd(ZMdld)ZNdld*ZOdmd+ZPdmd,ZQdnd-ZRdod.ZSdpd/ZTdpd0ZUdqd1ZVdqd2ZWdrd3ZXdrd4ZYdsd5ZZdsd6Z[dtd7Z\dtd8Z]dud9Z^dud:Z_dvd;Z`dwd<Zadxd=Zbdxd>Zcdyd?Zddyd@ZedzdAZfd{dBZgd|dCZhd}dDZid}dEZjd~dFZkd~dGZlddHZmddIZnddJZoddKZpddLZqddMZrddNZsddOZtddPZuddQZvddRZwddSZxddTZyddUZz	 	 	 	 ddVZ{ddWZ|ddXZ}ddYZ~ddZZdd[Zdd\Z	 	 	 	 dd]Z	 	 	 	 dd^Zdd_Zdd`Z	 	 	 	 ddaZg dbZy)    )annotationsN)TYPE_CHECKINGAny)issue_warning)	TypeGuard	DataFrame)TypeIs)SQLFrameDataFrame)r	   	LazyFrameSeries)
IntoDataFrameTIntoLazyFrameTIntoSeriesTPandasLikeDType_1DArray_1DArrayInt_2DArray_NDArray_NumpyScalar_ShapeT	fireducksc                 B    t         j                  j                  dd      S )z;Get Polars module (if already imported - else return None).polarsNsysmodulesget     B/DATA/.local/lib/python3.12/site-packages/narwhals/dependencies.py
get_polarsr#   1       ;;??8T**r!   c                 B    t         j                  j                  dd      S )z;Get pandas module (if already imported - else return None).pandasNr   r    r!   r"   
get_pandasr'   6   r$   r!   c                 B    t         j                  j                  dd      S )zAGet modin.pandas module (if already imported - else return None).zmodin.pandasNr   r    r!   r"   	get_modinr)   ;   s    ;;??>400r!   c                 B    t         j                  j                  dd      S )z9Get cudf module (if already imported - else return None).cudfNr   r    r!   r"   get_cudfr,   @       ;;??64((r!   c                 B    t         j                  j                  dd      S )z9Get cupy module (if already imported - else return None).cupyNr   r    r!   r"   get_cupyr0   E   r-   r!   c                 B    t         j                  j                  dd      S )z<Get pyarrow module (if already imported - else return None).pyarrowNr   r    r!   r"   get_pyarrowr3   J       ;;??9d++r!   c                 B    t         j                  j                  dd      S )z:Get numpy module (if already imported - else return None).numpyNr   r    r!   r"   	get_numpyr7   O   s    ;;??7D))r!   c                 B    t         j                  j                  dd      S )z2Get dask (if already imported - else return None).daskNr   r    r!   r"   get_daskr:   T   r-   r!   c                 B    t         j                  j                  dd      S )zCGet dask.dataframe module (if already imported - else return None).zdask.dataframeNr   r    r!   r"   get_dask_dataframer<   Y   s    ;;??+T22r!   c                 B    t         j                  j                  dd      S )z;Get duckdb module (if already imported - else return None).duckdbNr   r    r!   r"   
get_duckdbr?   ^   r$   r!   c                 B    t         j                  j                  dd      S )z9Get ibis module (if already imported - else return None).ibisNr   r    r!   r"   get_ibisrB   c   r-   r!   c                     t               x} t        | d      r| j                  S t        j                  j                  dd      S )z>Get dask_expr module (if already imported - else return None).N	dask_expr)r<   hasattrrD   r   r   r   )dds    r"   get_dask_exprrG   h   s8     ""/GB4L||;;??;--r!   c                 B    t         j                  j                  dd      S )z<Get pyspark module (if already imported - else return None).pysparkNr   r    r!   r"   get_pysparkrJ   o   r4   r!   c                 B    t         j                  j                  dd      S )z@Get pyspark.sql module (if already imported - else return None).zpyspark.sqlNr   r    r!   r"   get_pyspark_sqlrL   t   s    ;;??=$//r!   c                 B    t         j                  j                  dd      S )zHGet pyspark.sql.connect module (if already imported - else return None).zpyspark.sql.connectNr   r    r!   r"   get_pyspark_connectrN   y   s    ;;??0$77r!   c                 B    t         j                  j                  dd      S )z=Get sqlframe module (if already imported - else return None).sqlframeNr   r    r!   r"   get_sqlframerQ   ~   s    ;;??:t,,r!   c          	         t        |       st        |       rUddlm} t	        j
                  d      j                  j                  }d ||        d| d| d| d	}t        |t               y y )	Nr   qualified_type_name   You passed a `` to ``.

Hint: Instead of e.g. `z(frame)`, did you mean `z(frame.to_native())`?)
is_narwhals_dataframeis_narwhals_lazyframenarwhals._utilsrT   r   	_getframef_codeco_namer   UserWarning)framerT   callermsgs       r"   _warn_if_narwhals_df_or_lfrc      sw    U#'<U'C7q!((00078vh G&&,X .#H$9; 	
 	c;' (Dr!   c          	         t        |       rUddlm} t        j                  d      j
                  j                  }d ||        d| d| d| d	}t        |t               y y )	Nr   rS   rU   rV   rW   rX   z(ser)`, did you mean `z(ser.to_native())`?)	is_narwhals_seriesr[   rT   r   r\   r]   r^   r   r_   )serrT   ra   rb   s       r"   _warn_if_narwhals_seriesrg      sn    #7q!((00056fVH E&&,X .#H$79 	
 	c;' r!   c                     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)r   r   r   
isinstancer&   r	   ).0module_namedfmods     r"   	<genexpr>z'_is_pandas_dataframe.<locals>.<genexpr>   sS      V (K T2	24? 	1r3:://0	1'   AA)r'   rk   r	   anyIMPORT_HOOKS)rn   pdro   s   ` @r"   _is_pandas_dataframeru      sF    <R,MB1M RU V (V S r!   c                .    t        |        t        |       S )zCheck whether `df` is a pandas DataFrame without importing pandas.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   ru   rn   s    r"   is_pandas_dataframerx           r"##r!   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rj   )r   r   r   rk   r&   r   )rl   rm   ro   rf   s     r"   rp   z$_is_pandas_series.<locals>.<genexpr>   sS      T (K T2	24? 	/sCJJ--.	/'rq   )r'   rk   r   rr   rs   )rf   rt   ro   s   ` @r"   _is_pandas_seriesr|      sF    <R,KC1K PS T (T Q r!   c                .    t        |        t        |       S )zCheck whether `ser` is a pandas Series without importing pandas.

    Warning:
        This method cannot be called on Narwhals Series.
    )rg   r|   rf   s    r"   is_pandas_seriesr           S!S!!r!   c                     t               x}duxr t         |j                        xs t         fdt        D              S )zACheck whether `index` is a pandas Index without importing pandas.Nc              3     K   | ]J  }t         j                  j                  |d       xd uxr  t        j                  j
                         L y wrj   )r   r   r   rk   r&   Index)rl   rm   indexro   s     r"   rp   z"is_pandas_index.<locals>.<genexpr>   sS      U (K T2	24? 	0ucjj../	0'rq   )r'   rk   r   rr   rs   )r   rt   ro   s   ` @r"   is_pandas_indexr      sF    <R,LE2881L QT U (U R 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)   rk   r	   )rn   mpds     r"   _is_modin_dataframer      s$    ;Ct+M
2s}}0MMr!   c                .    t        |        t        |       S )zCheck whether `df` is a modin DataFrame without importing modin.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_modin_dataframer           r"r""r!   c                N    t               x}duxr t        | |j                        S )z>Check whether `ser` is a modin Series without importing modin.N)r)   rk   r   )rf   r   s     r"   _is_modin_seriesr      s$    ;Ct+K
3

0KKr!   c                .    t        |        t        |       S )zCheck whether `ser` is a modin Series without importing modin.

    Warning:
        This method cannot be called on Narwhals Series.
    )rg   r   r~   s    r"   is_modin_seriesr      s     S!C  r!   c                N    t               x}duxr t        | |j                        S )z?Check whether `index` is a modin Index without importing modin.N)r)   rk   r   )r   r   s     r"   is_modin_indexr      s$    ;Ct+L
5#))0LLr!   c                N    t               x}duxr t        | |j                        S )z>Check whether `df` is a cudf DataFrame without importing cudf.N)r,   rk   r	   )rn   r+   s     r"   _is_cudf_dataframer      s$    JDt+N
2t~~0NNr!   c                .    t        |        t        |       S )zCheck whether `df` is a cudf DataFrame without importing cudf.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_cudf_dataframer           r"b!!r!   c                N    t               x}duxr t        | |j                        S )z<Check whether `ser` is a cudf Series without importing cudf.N)r,   rk   r   )rf   r+   s     r"   _is_cudf_seriesr      s$    JDt+L
30LLr!   c                .    t        |        t        |       S )zCheck whether `ser` is a cudf Series without importing cudf.

    Warning:
        This method cannot be called on Narwhals Series.
    )rg   r   r~   s    r"   is_cudf_seriesr     s     S!3r!   c                N    t               x}duxr t        | |j                        S )z=Check whether `index` is a cudf Index without importing cudf.N)r,   rk   r   )r   r+   s     r"   is_cudf_indexr     s+    JDt+ 
tzz1 r!   c                p    t               x}d uxr' t        | |j                        xr | j                  dk(  S )NrU   )r0   rk   ndarraysize)objr/   s     r"   is_cupy_scalarr     s9    	D( 	sDLL)	HHMr!   c                N    t               x}duxr t        | |j                        S )z>Check whether `df` is a Dask DataFrame without importing Dask.N)r<   rk   r	   )rn   rF   s     r"   _is_dask_dataframer     s%    $&&Bt3T
2r||8TTr!   c                .    t        |        t        |       S )zCheck whether `df` is a Dask DataFrame without importing Dask.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_dask_dataframer   !  r   r!   c                N    t               x}duxr t        | |j                        S )zACheck whether `df` is a DuckDB Relation without importing DuckDB.N)r?   rk   DuckDBPyRelation)rn   r>   s     r"   _is_duckdb_relationr   +  s-     l"F4/ J
F##5 r!   c                .    t        |        t        |       S )zCheck whether `df` is a DuckDB Relation without importing DuckDB.

    Warning:
        This method cannot be called on Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_duckdb_relationr   2  r   r!   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)rB   rk   exprtypesTable)rn   rA   s     r"   _is_ibis_tabler   <  s.    JDt+U
2tyy?T?T0UUr!   c                .    t        |        t        |       S )zCheck whether `df` is a Ibis Table without importing Ibis.

    Warning:
        This method cannot be called on Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_ibis_tabler   A  s     r""r!   c                N    t               x}duxr t        | |j                        S )zBCheck whether `df` is a Polars DataFrame without importing Polars.N)r#   rk   r	   rn   pls     r"   _is_polars_dataframer   K  $    ,Bt+L
2r||0LLr!   c                .    t        |        t        |       S )zCheck whether `df` is a Polars DataFrame without importing Polars.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_polars_dataframer   P  ry   r!   c                N    t               x}duxr t        | |j                        S )zBCheck whether `df` is a Polars LazyFrame without importing Polars.N)r#   rk   r   r   s     r"   _is_polars_lazyframer   Z  r   r!   c                .    t        |        t        |       S )zCheck whether `df` is a Polars LazyFrame without importing Polars.

    Warning:
        This method cannot be called on Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_polars_lazyframer   _  ry   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#   rk   r   )rf   r   s     r"   _is_polars_seriesr   i  s$    ,Bt+J
3		0JJr!   c                .    t        |        t        |       S )zCheck whether `ser` is a Polars Series without importing Polars.

    Warning:
        This method cannot be called on Narwhals Series.
    )rg   r   r~   s    r"   is_polars_seriesr   n  r   r!   c                x    t        t               x}      xr$ t        |d      xr t        | |j                        S )NSchema)boolr#   rE   rk   r   r   r   s     r"   is_polars_schemar   x  s2    :<R YWR%:Yz#ryy?Yr!   c                \    t        t               x}      xr t        | |j                        S rj   )r   r#   rk   DataTyper   s     r"   is_polars_data_typer     s$    jl"#D
3(DDr!   c                N    t               x}duxr t        | |j                        S )zHCheck whether `ser` is a PyArrow ChunkedArray without importing PyArrow.N)r3   rk   ChunkedArray)rf   pas     r"   _is_pyarrow_chunked_arrayr     s$    -B,QC1QQr!   c                .    t        |        t        |       S )zCheck whether `ser` is a PyArrow ChunkedArray without importing PyArrow.

    Warning:
        This method cannot be called on Narwhals Series.
    )rg   r   r~   s    r"   is_pyarrow_chunked_arrayr     s     S!$S))r!   c                N    t               x}duxr t        | |j                        S )z@Check whether `df` is a PyArrow Table without importing PyArrow.N)r3   rk   r   )rn   r   s     r"   _is_pyarrow_tabler     s$    -B,IB1IIr!   c                .    t        |        t        |       S )zCheck whether `df` is a PyArrow Table without importing PyArrow.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_pyarrow_tabler     s     r"R  r!   c                N    t               x}d uxr t        | |j                        S rj   )r3   rk   Scalarr   r   s     r"   is_pyarrow_scalarr     s$    -B,KC1KKr!   c                \    t        t               x}      xr t        | |j                        S rj   )r   r3   rk   r   r   s     r"   is_pyarrow_schemar     s$    km#$CC)CCr!   c                \    t        t               x}      xr t        | |j                        S rj   )r   r3   rk   r   r   s     r"   is_pyarrow_data_typer     s$    km#$EC)EEr!   c                `    t        t               x}duxr t        | |j                              S )zDCheck whether `df` is a PySpark DataFrame without importing PySpark.N)r   rL   rk   r	   )rn   pyspark_sqls     r"   _is_pyspark_dataframer     s4    ')	)$6 	2r;001 r!   c                .    t        |        t        |       S )zCheck whether `df` is a PySpark DataFrame without importing PySpark.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_pyspark_dataframer     s     r" $$r!   c                \    t               	 ddlm} t	        | |      S y# t        $ r Y yw xY w)zLCheck whether `df` is a PySpark Connect DataFrame without importing PySpark.r   r   F)rN   pyspark.sql.connect.dataframer	   ImportErrorrk   rn   r	   s     r"   _is_pyspark_connect_dataframer     s9    (	? "i((  		s    	++c                .    t        |        t        |       S )zCheck whether `df` is a PySpark Connect DataFrame without importing PySpark.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_pyspark_connect_dataframer     s     r"(,,r!   c                <    t               ddlm} t        | |      S y)zFCheck whether `df` is a SQLFrame DataFrame without importing SQLFrame.r   )BaseDataFrameF)rQ   sqlframe.base.dataframer   rk   )rn   r   s     r"   _is_sqlframe_dataframer     s    ~!9"m,,r!   c                .    t        |        t        |       S )zCheck whether `df` is a SQLFrame DataFrame without importing SQLFrame.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r   rw   s    r"   is_sqlframe_dataframer     s     r"!"%%r!   c                N    t               x}duxr t        | |j                        S )z=Check whether `arr` is a NumPy Array without importing NumPy.N)r7   rk   r   arrnps     r"   is_numpy_arrayr     s$    +Bd*Jz#rzz/JJr!   c                :    t        |       xr | j                  dk(  S )z@Check whether `arr` is a 1D NumPy Array without importing NumPy.rU   r   ndimr   s    r"   is_numpy_array_1dr         #0388q=0r!   c                    t               x}xr3 t        |       xr& |j                  | j                  |j                        S rj   )r7   r   
issubdtypedtypeintegerr   s     r"   is_numpy_array_1d_intr     s9    {	 	1c"	1MM#))RZZ0r!   c                    t               x}xr3 t        |       xr& |j                  | j                  |j                        S rj   )r7   r   r   r   bool_r   s     r"   is_numpy_array_1d_boolr     s9    {	 	/c"	/MM#))RXX.r!   c                :    t        |       xr | j                  dk(  S )z@Check whether `arr` is a 2D NumPy Array without importing NumPy.   r   r   s    r"   is_numpy_array_2dr    r   r!   c                N    t               x}duxr t        | |j                        S )zACheck whether `scalar` is a NumPy Scalar without importing NumPy.N)r7   rk   generic)scalarr   s     r"   is_numpy_scalarr    s&    
 +Bd*Mz&"**/MMr!   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.
    )ru   r   r   rw   s    r"   _is_pandas_like_dataframer    s&    
  #X':2'>XBTUWBXXr!   c                .    t        |        t        |       S )zCheck whether `df` is a pandas-like DataFrame without doing any imports.

    By "pandas-like", we mean: pandas, Modin, cuDF.

    Warning:
        This method cannot be called on a Narwhals DataFrame/LazyFrame.
    )rc   r  rw   s    r"   is_pandas_like_dataframer
    s     r"$R((r!   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|   r   r   r~   s    r"   _is_pandas_like_seriesr  "  s$    
 S!R%5c%:Roc>RRr!   c                .    t        |        t        |       S )zCheck whether `ser` is a pandas-like Series without doing any imports.

    By "pandas-like", we mean: pandas, Modin, cuDF.

    Warning:
        This method cannot be called on Narwhals Series.
    )rg   r  r~   s    r"   is_pandas_like_seriesr  *  s     S!!#&&r!   c                L    t        |       xs t        |       xs t        |       S )zCheck whether `index` is a pandas-like Index without doing any imports.

    By "pandas-like", we mean: pandas, Modin, cuDF.
    )r   r   r   )r   s    r"   is_pandas_like_indexr  6  s%     	O."7O=;Or!   c                    t        t               x}      xr> t        | |j                  j                  j
                  t               j                  f      S rj   )r   r'   rk   api
extensionsExtensionDtyper7   r   r   rt   s     r"   is_pandas_like_dtyper  @  sD    jl"# 
bff..	0A0AB) r!   c                    t        t               x}      xr8 t        | |j                  j                  j
                        xr t        | d      S )Nto_arrow)r   r'   rk   r  r  r  rE   r  s     r"   is_cudf_dtyper  F  sF     	:<R  	%sRVV..==?	%C$r!   c                n    ddl m}  || d      xs% t        |       xs t        |       xs t	        |       S )Nr   _hasattr_static__narwhals_series__)r[   r  r   r   r  r   r  s     r"   _is_native_seriesr  P  s@    / 	23 	'S!	'$S)	' "#&	r!   c                n    ddl m}  || d      xs% t        |       xs t        |       xs t	        |       S )Nr   r  __narwhals_dataframe__)r[   r  r   r   r  r  s     r"   _is_native_dataframer"  [  s@    / 	56 	*$	*S!	* %S)	r!   c                    ddl m}  || d      xsY t        |       xsL t        |       xs? t	        |       xs2 t        |       xs% t        |       xs t        |       xs t        |       S )Nr   r  __narwhals_lazyframe__)	r[   r  r   r   r   r   r   r   r   r  s     r"   _is_native_lazyframer%  f  s|    / 	56 	'$	'c"	' s#	' #		'
 !%	' )-	' "#&	r!   c                @    ddl m} t        | |      xs t        |       S )aM  Check whether `native_series` can be converted to a Narwhals Series.

    Arguments:
        native_series: The object to check.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import numpy as np
        >>> import narwhals as nw

        >>> s_pd = pd.Series([1, 2, 3])
        >>> s_pl = pl.Series([1, 2, 3])
        >>> np_arr = np.array([1, 2, 3])

        >>> nw.dependencies.is_into_series(s_pd)
        True
        >>> nw.dependencies.is_into_series(s_pl)
        True
        >>> nw.dependencies.is_into_series(np_arr)
        False
    r   r   )narwhals.seriesr   rk   r  )native_seriesr   s     r"   is_into_seriesr)  u  s    . 'mV,P0A-0PPr!   c                @    ddl m} t        | |      xs t        |       S )a  Check whether `native_dataframe` can be converted to a Narwhals DataFrame.

    Arguments:
        native_dataframe: The object to check.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import numpy as np
        >>> from narwhals.dependencies import is_into_dataframe

        >>> df_pd = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
        >>> df_pl = pl.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
        >>> np_arr = np.array([[1, 4], [2, 5], [3, 6]])

        >>> is_into_dataframe(df_pd)
        True
        >>> is_into_dataframe(df_pl)
        True
        >>> is_into_dataframe(np_arr)
        False
    r   r   )narwhals.dataframer	   rk   r"  )native_dataframer	   s     r"   is_into_dataframer-    '    . -&	2 6J7 r!   c                @    ddl m} t        | |      xs t        |       S )a  Check whether `native_lazyframe` can be converted to a Narwhals LazyFrame.

    Arguments:
        native_lazyframe: The object to check.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import numpy as np
        >>> from narwhals.dependencies import is_into_lazyframe

        >>> df_pd = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
        >>> lf_pl = pl.LazyFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
        >>> np_arr = np.array([[1, 4], [2, 5], [3, 6]])

        >>> is_into_lazyframe(df_pd)
        False
        >>> is_into_lazyframe(lf_pl)
        True
        >>> is_into_lazyframe(np_arr)
        False
    r   r   )r+  r   rk   r%  )native_lazyframer   s     r"   is_into_lazyframer2    r.  r!   c                &    ddl m} t        | |      S )zCheck whether `df` is a Narwhals DataFrame.

    This is useful if you expect a user to pass in a Narwhals
    DataFrame directly, and you want to catch both `narwhals.DataFrame`
    and `narwhals.stable.v1.DataFrame`.
    r   r   )r+  r	   rk   r   s     r"   rY   rY          -b)$$r!   c                &    ddl m} t        | |      S )zCheck whether `lf` is a Narwhals LazyFrame.

    This is useful if you expect a user to pass in a Narwhals
    LazyFrame directly, and you want to catch both `narwhals.LazyFrame`
    and `narwhals.stable.v1.LazyFrame`.
    r   r0  )r+  r   rk   )lfr   s     r"   rZ   rZ     r4  r!   c                &    ddl m} t        | |      S )zCheck whether `ser` is a Narwhals Series.

    This is useful if you expect a user to pass in a Narwhals
    Series directly, and you want to catch both `narwhals.Series`
    and `narwhals.stable.v1.Series`.
    r   r   )r'  r   rk   )rf   r   s     r"   re   re     s     'c6""r!   c                P    t        |       xr | j                  j                         S rj   )re   r   
is_integerr~   s    r"   is_narwhals_series_intr:    s    c"=syy';';'==r!   c                P    t        |       xr | j                  j                         S rj   )re   r   
is_booleanr~   s    r"   is_narwhals_series_boolr=    s!     c"=syy';';'==r!   ),r,   r:   r<   r?   rB   r)   r7   r'   r#   r3   rJ   rN   rL   rQ   r   r   r   r   r   r   r-  r2  r)  r   r   r   rY   rZ   re   r   rx   r   r
  r  r  r   r   r   r   r   r   r   r   r   )returnr   )r`   r   r>  None)rf   r   r>  r?  )rn   r   r>  zTypeIs[pd.DataFrame])rf   r   r>  zTypeIs[pd.Series[Any]])r   r   r>  zTypeIs[pd.Index[Any]])rn   r   r>  zTypeIs[mpd.DataFrame])rf   r   r>  zTypeIs[mpd.Series])r   r   r>  zTypeIs[mpd.Index[Any]])rn   r   r>  zTypeIs[cudf.DataFrame])rf   r   r>  zTypeIs[cudf.Series[Any]])r   r   r>  zTypeIs[cudf.Index])r   r   r>  r   )rn   r   r>  zTypeIs[dd.DataFrame])rn   r   r>  zTypeIs[duckdb.DuckDBPyRelation])rn   r   r>  zTypeIs[ibis.Table])rn   r   r>  zTypeIs[pl.DataFrame])rn   r   r>  zTypeIs[pl.LazyFrame])rf   r   r>  zTypeIs[pl.Series])r   r   r>  zTypeIs[pl.Schema])r   r   r>  zTypeIs[pl.DataType])rf   r   r>  zTypeIs[pa.ChunkedArray[Any]])rn   r   r>  zTypeIs[pa.Table])r   r   r>  zTypeIs[pa.Scalar[Any]])r   r   r>  zTypeIs[pa.Schema])r   r   r>  zTypeIs[pa.DataType])rn   r   r>  zTypeIs[pyspark_sql.DataFrame])rn   r   r>  zTypeIs[PySparkConnectDataFrame])rn   r   r>  zTypeIs[SQLFrameDataFrame])r   zAny | _NDArray[_ShapeT]r>  zTypeIs[_NDArray[_ShapeT]])r   r   r>  zTypeIs[_1DArray])r   r   r>  zTypeIs[_1DArrayInt])r   r   r>  zTypeIs[_2DArray])r  r   r>  zTypeGuard[_NumpyScalar])rn   r   r>  r   )rf   r   r>  r   )r   r   r>  r   )r   r   r>  zTypeIs[PandasLikeDType])r   r   r>  z(TypeIs[pd.api.extensions.ExtensionDtype])r   Any | IntoSeriesTr>  TypeIs[IntoSeriesT])r   Any | IntoDataFrameTr>  TypeIs[IntoDataFrameT])r   Any | IntoLazyFrameTr>  TypeIs[IntoLazyFrameT])r(  r@  r>  rA  )r,  rB  r>  rC  )r1  rD  r>  rE  )rn   zDataFrame[IntoDataFrameT] | Anyr>  z!TypeIs[DataFrame[IntoDataFrameT]])r6  zAny | LazyFrame[IntoLazyFrameT]r>  z!TypeIs[LazyFrame[IntoLazyFrameT]])rf   zAny | Series[IntoSeriesT]r>  zTypeIs[Series[IntoSeriesT]])
__future__r   r   typingr   r   narwhals._exceptionsr   r   r+   dask.dataframe	dataframerF   r>   rA   modin.pandasr&   r   rt   r   r   r2   r   pyspark.sqlsqlr   r   r	   PySparkConnectDataFrametyping_extensionsr
   narwhals._spark_like.dataframer   r+  r   r'  r   narwhals.typingr   r   r   r   r   r   r   r   r   r   	frozensetrs   r#   r'   r)   r,   r0   r3   r7   r:   r<   r?   rB   rG   rJ   rL   rN   rQ   rc   rg   ru   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r"  r%  r)  r-  r2  rY   rZ   re   r:  r=  __all__r    r!   r"   <module>rT     se   # 
 % . %R(@7&  " +'+
+
1
)
)
,
*
)
3
+
)
.,
0
8
-

(
($"N
#L
!M
O
"M
 U
"#V
M
$M
$K
"ER
*J
!LDF%-&K
1
1
NY	)S	'	-Q8<<%'%&%%'%&%	#>>	"> >-r!   