
    h8                    <   S SK Jr  S SKrS SKJr  S SKJr  \(       a  S SKrS SKJr	  S SK
r
S SKrS SKJr  S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJ r   S SK!J"r"  S SK#J$r$  S SK#J%r%  S SK#J&r&  S SK#J'r'  S SK#J(r(  S SK#J)r)  S SK#J*r*  S SK#J+r+  \," S/5      r-SDS jr.SDS jr/SDS jr0SDS jr1SDS jr2SDS jr3SDS jr4SDS jr5SDS jr6SDS jr7SDS jr8SDS  jr9SDS! jr:SDS" jr;SDS# jr<SES$ jr=SFS% jr>SGS& jr?SHS' jr@SIS( jrASJS) jrBSKS* jrCSLS+ jrDSMS, jrESNS- jrFSOS. jrGSPS/ jrHSQS0 jrISRS1 jrJSSS2 jrK    STS3 jrLSUS4 jrMSVS5 jrNSWS6 jrOSXS7 jrPSYS8 jrQSZS9 jrRS[S: jrSS\S; jrTS]S< jrUS^S= jrVS_S> jrWS`S? jrX    SaS@ jrYSbSA jrZScSB jr[/ SCQr\g)d    )annotationsN)TYPE_CHECKING)Any)	TypeGuard)TypeIs)ArrowChunkedArray)SQLFrameDataFrame	DataFrame	LazyFrameSeries)FrameT)IntoDataFrameT)IntoSeriesT)_1DArray)_2DArray)_NDArray)_NumpyScalar)_ShapeT	fireducksc                 B    [         R                  R                  SS5      $ )z;Get Polars module (if already imported - else return None).polarsNsysmodulesget     G/var/www/html/env/lib/python3.13/site-packages/narwhals/dependencies.py
get_polarsr"   +       ;;??8T**r    c                 B    [         R                  R                  SS5      $ )z;Get pandas module (if already imported - else return None).pandasNr   r   r    r!   
get_pandasr&   0   r#   r    c                 b    [         R                  R                  SS5      =n b  U R                  $ g)zAGet modin.pandas module (if already imported - else return None).modinN)r   r   r   r%   )r(   s    r!   	get_modinr)   5   s)    $//<||r    c                 B    [         R                  R                  SS5      $ )z9Get cudf module (if already imported - else return None).cudfNr   r   r    r!   get_cudfr,   <       ;;??64((r    c                 B    [         R                  R                  SS5      $ )z9Get cupy module (if already imported - else return None).cupyNr   r   r    r!   get_cupyr0   A   r-   r    c                 B    [         R                  R                  SS5      $ )z<Get pyarrow module (if already imported - else return None).pyarrowNr   r   r    r!   get_pyarrowr3   F       ;;??9d++r    c                 B    [         R                  R                  SS5      $ )z:Get numpy module (if already imported - else return None).numpyNr   r   r    r!   	get_numpyr7   K   s    ;;??7D))r    c                 B    [         R                  R                  SS5      $ )z2Get dask (if already imported - else return None).daskNr   r   r    r!   get_daskr:   P   r-   r    c                 B    [         R                  R                  SS5      $ )zCGet dask.dataframe module (if already imported - else return None).zdask.dataframeNr   r   r    r!   get_dask_dataframer<   U   s    ;;??+T22r    c                 B    [         R                  R                  SS5      $ )z;Get duckdb module (if already imported - else return None).duckdbNr   r   r    r!   
get_duckdbr?   Z   r#   r    c                 B    [         R                  R                  SS5      $ )z9Get ibis module (if already imported - else return None).ibisNr   r   r    r!   get_ibisrB   _   r-   r    c                 B    [         R                  R                  SS5      $ )z>Get dask_expr module (if already imported - else return None).	dask_exprNr   r   r    r!   get_dask_exprrE   d   s    ;;??;--r    c                 B    [         R                  R                  SS5      $ )z<Get pyspark module (if already imported - else return None).pysparkNr   r   r    r!   get_pysparkrH   i   r4   r    c                 B    [         R                  R                  SS5      $ )z@Get pyspark.sql module (if already imported - else return None).zpyspark.sqlNr   r   r    r!   get_pyspark_sqlrJ   n   s    ;;??=$//r    c                 B    [         R                  R                  SS5      $ )z=Get sqlframe module (if already imported - else return None).sqlframeNr   r   r    r!   get_sqlframerM   s   s    ;;??:t,,r    c                   ^ ^ [        5       =nSL=(       a    [        T UR                  5      =(       d    [        U U4S j[         5       5      $ )zBCheck whether `df` is a pandas DataFrame without importing pandas.Nc              3     >#    U  HP  n[         R                  R                  US 5      =mS L=(       a     [        TTR                  R
                  5      v   MR     g 7fN)r   r   r   
isinstancer%   r   ).0module_namedfmods     r!   	<genexpr>&is_pandas_dataframe.<locals>.<genexpr>z   sR      V (K T2	24? 	1r3:://0	1'   AA)r&   rQ   r   anyIMPORT_HOOKS)rT   pdrU   s   ` @r!   is_pandas_dataframer\   x   sF    <R,MB1M RU V (V S r    c                   ^ ^ [        5       =nSL=(       a    [        T UR                  5      =(       d    [        UU 4S j[         5       5      $ )z@Check whether `ser` is a pandas Series without importing pandas.Nc              3     >#    U  HP  n[         R                  R                  US 5      =mS L=(       a     [        TTR                  R
                  5      v   MR     g 7frP   )r   r   r   rQ   r%   r   )rR   rS   rU   sers     r!   rV   #is_pandas_series.<locals>.<genexpr>   sR      T (K T2	24? 	/sCJJ--.	/'rX   )r&   rQ   r   rY   rZ   )r_   r[   rU   s   ` @r!   is_pandas_seriesra      sF    <R,KC1K PS T (T Q r    c                   ^ ^ [        5       =nSL=(       a    [        T UR                  5      =(       d    [        U U4S j[         5       5      $ )zACheck whether `index` is a pandas Index without importing pandas.Nc              3     >#    U  HP  n[         R                  R                  US 5      =mS L=(       a     [        TTR                  R
                  5      v   MR     g 7frP   )r   r   r   rQ   r%   Index)rR   rS   indexrU   s     r!   rV   "is_pandas_index.<locals>.<genexpr>   sR      U (K T2	24? 	0ucjj../	0'rX   )r&   rQ   rd   rY   rZ   )re   r[   rU   s   ` @r!   is_pandas_indexrg      sF    <R,LE2881L QT U (U R r    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z@Check whether `df` is a modin DataFrame without importing modin.N)r)   rQ   r   )rT   mpds     r!   is_modin_dataframerj      s"    ;Ct+M
2}}0MMr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z>Check whether `ser` is a modin Series without importing modin.N)r)   rQ   r   )r_   ri   s     r!   is_modin_seriesrl      s"    ;Ct+K
3

0KKr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z?Check whether `index` is a modin Index without importing modin.N)r)   rQ   rd   )re   ri   s     r!   is_modin_indexrn      s)    ;Ct+ 
yy1 r    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z>Check whether `df` is a cudf DataFrame without importing cudf.N)r,   rQ   r   )rT   r+   s     r!   is_cudf_dataframerp      s"    JDt+N
2~~0NNr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z<Check whether `ser` is a cudf Series without importing cudf.N)r,   rQ   r   )r_   r+   s     r!   is_cudf_seriesrr      s"    JDt+L
30LLr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z=Check whether `index` is a cudf Index without importing cudf.N)r,   rQ   rd   )re   r+   s     r!   is_cudf_indexrt      s)    JDt+ 
zz1 r    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z>Check whether `df` is a Dask DataFrame without importing Dask.N)r<   rQ   r   )rT   dds     r!   is_dask_dataframerw      s#    $&&Bt3T
2||8TTr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )zACheck whether `df` is a DuckDB Relation without importing DuckDB.N)r?   rQ   DuckDBPyRelation)rT   r>   s     r!   is_duckdb_relationrz      s+     l"F4/ J
##5 r    c                ~    [        5       =nSL=(       a)    [        XR                  R                  R                  5      $ )z:Check whether `df` is a Ibis Table without importing Ibis.N)rB   rQ   exprtypesTable)rT   rA   s     r!   is_ibis_tabler      s,    JDt+U
2yy?T?T0UUr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )zBCheck whether `df` is a Polars DataFrame without importing Polars.N)r"   rQ   r   rT   pls     r!   is_polars_dataframer      "    ,Bt+L
2||0LLr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )zBCheck whether `df` is a Polars LazyFrame without importing Polars.N)r"   rQ   r   r   s     r!   is_polars_lazyframer      r   r    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z@Check whether `ser` is a Polars Series without importing Polars.N)r"   rQ   r   )r_   r   s     r!   is_polars_seriesr      s"    ,Bt+J
3		0JJr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )zHCheck whether `ser` is a PyArrow ChunkedArray without importing PyArrow.N)r3   rQ   ChunkedArray)r_   pas     r!   is_pyarrow_chunked_arrayr      s$     -B,QC1QQr    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z@Check whether `df` is a PyArrow Table without importing PyArrow.N)r3   rQ   r~   )rT   r   s     r!   is_pyarrow_tabler      s"    -B,IB1IIr    c                h    [        [        5       =nSL=(       a    [        XR                  5      5      $ )zDCheck whether `df` is a PySpark DataFrame without importing PySpark.N)boolrJ   rQ   r   )rT   pyspark_sqls     r!   is_pyspark_dataframer      s2    ')	)$6 	2r001 r    c                <    [        5       b  SSKJn  [        X5      $ g)zFCheck whether `df` is a SQLFrame DataFrame without importing SQLFrame.r   )BaseDataFrameF)rM   sqlframe.base.dataframer   rQ   )rT   r   s     r!   is_sqlframe_dataframer      s    ~!9",,r    c                V    [        5       =nSL=(       a    [        XR                  5      $ )z=Check whether `arr` is a NumPy Array without importing NumPy.N)r7   rQ   ndarray)arrnps     r!   is_numpy_arrayr      s"    +Bd*Jz#zz/JJr    c                D    [        U 5      =(       a    U R                  S:H  $ )z@Check whether `arr` is a 1D NumPy Array without importing NumPy.   r   ndimr   s    r!   is_numpy_array_1dr          #0388q=0r    c                D    [        U 5      =(       a    U R                  S:H  $ )z@Check whether `arr` is a 2D NumPy Array without importing NumPy.   r   r   s    r!   is_numpy_array_2dr      r   r    c                V    [        5       =nSL=(       a    [        XR                  5      $ )zACheck whether `scalar` is a NumPy Scalar without importing NumPy.N)r7   rQ   generic)scalarr   s     r!   is_numpy_scalarr     s$    
 +Bd*Mz&**/MMr    c                `    [        U 5      =(       d    [        U 5      =(       d    [        U 5      $ )zzCheck whether `df` is a pandas-like DataFrame without doing any imports.

By "pandas-like", we mean: pandas, Modin, cuDF.
)r\   rj   rp   )rT   s    r!   is_pandas_like_dataframer   	  s&    
 r"U&8&<U@QRT@UUr    c                `    [        U 5      =(       d    [        U 5      =(       d    [        U 5      $ )zxCheck whether `ser` is a pandas-like Series without doing any imports.

By "pandas-like", we mean: pandas, Modin, cuDF.
)ra   rl   rr   )r_   s    r!   is_pandas_like_seriesr     s#    
 C OOC$8ON3<OOr    c                `    [        U 5      =(       d    [        U 5      =(       d    [        U 5      $ )zyCheck whether `index` is a pandas-like Index without doing any imports.

By "pandas-like", we mean: pandas, Modin, cuDF.
)rg   rn   rt   )re   s    r!   is_pandas_like_indexr     s%     	O."7O=;Or    c                    SSK Jn  [        X5      =(       dB    [        U S5      =(       d/    [	        U 5      =(       d    [        U 5      =(       d    [        U 5      $ )ak  Check whether `native_series` can be converted to a Narwhals Series.

Arguments:
    native_series: The object to check.

Returns:
    `True` if `native_series` can be converted to a Narwhals Series, `False` otherwise.

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_series__)narwhals.seriesr   rQ   hasattrr   r   r   )native_seriesr   s     r!   is_into_seriesr   #  sQ    4 ' 	=) 	0="78	0M*	0 $M2	0 !/r    c                    SSK Jn  [        X5      =(       dB    [        U S5      =(       d/    [	        U 5      =(       d    [        U 5      =(       d    [        U 5      $ )a  Check whether `native_dataframe` can be converted to a Narwhals DataFrame.

Arguments:
    native_dataframe: The object to check.

Returns:
    `True` if `native_dataframe` can be converted to a Narwhals DataFrame, `False` otherwise.

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_dataframe__)narwhals.dataframer   rQ   r   r   r   r   )native_dataframer   s     r!   is_into_dataframer   H  sV    4 - 	#/ 	6#%=>	6/0	6 ,-	6 $$45r    c                $    SSK Jn  [        X5      $ )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   rQ   )rT   r   s     r!   is_narwhals_dataframer   m  s     -b$$r    c                $    SSK Jn  [        X5      $ )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   r   )r   r   rQ   )lfr   s     r!   is_narwhals_lazyframer   {  s     -b$$r    c                $    SSK Jn  [        X5      $ )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   rQ   )r_   r   s     r!   is_narwhals_seriesr     s     'c""r    )r,   rB   r)   r7   r&   r"   r3   rp   rr   rw   r   r   r   rj   rl   r   r   r   r   r\   rg   r   r   ra   r   r   r   r   r   )returnr   )rT   r   r   zTypeIs[pd.DataFrame])r_   r   r   zTypeIs[pd.Series[Any]])re   r   r   zTypeIs[pd.Index[Any]])rT   r   r   zTypeIs[mpd.DataFrame])r_   r   r   zTypeIs[mpd.Series])re   r   r   zTypeIs[mpd.Index])rT   r   r   zTypeIs[cudf.DataFrame])r_   r   r   zTypeIs[cudf.Series[Any]])re   r   r   zTypeIs[cudf.Index])rT   r   r   zTypeIs[dd.DataFrame])rT   r   r   zTypeIs[duckdb.DuckDBPyRelation])rT   r   r   zTypeIs[ibis.Table])rT   r   r   zTypeIs[pl.DataFrame])rT   r   r   zTypeIs[pl.LazyFrame])r_   r   r   zTypeIs[pl.Series])r_   zAny | ArrowChunkedArrayr   zTypeIs[ArrowChunkedArray])rT   r   r   zTypeIs[pa.Table])rT   r   r   zTypeIs[pyspark_sql.DataFrame])rT   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[_2DArray])r   r   r   zTypeGuard[_NumpyScalar])rT   r   r   r   )r_   r   r   r   )re   r   r   r   )r   zAny | IntoSeriesTr   zTypeIs[IntoSeriesT])r   zAny | IntoDataFrameTr   zTypeIs[IntoDataFrameT])rT   zDataFrame[IntoDataFrameT] | Anyr   z!TypeIs[DataFrame[IntoDataFrameT]])r   zAny | LazyFrame[FrameT]r   zTypeIs[LazyFrame[FrameT]])r_   zAny | Series[IntoSeriesT]r   zTypeIs[Series[IntoSeriesT]])]
__future__r   r   typingr   r   r+   dask.dataframe	dataframerv   r>   rA   modin.pandasr%   ri   r[   r   r   r2   r   pyspark.sqlsqlr   typing_extensionsr   r   narwhals._arrow.typingr   narwhals._spark_like.dataframer	   r   r   r   r   r   narwhals.typingr   r   r   r   r   r   r   r   	frozensetrZ   r"   r&   r)   r,   r0   r3   r7   r:   r<   r?   rB   rE   rH   rJ   rM   r\   ra   rg   rj   rl   rn   rp   rr   rt   rw   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r   r    r!   <module>r      s   # 
   %+(8@,,&&.+(((,'
 +'+
+
)
)
,
*
)
3
+
)
.
,
0
-
N
L
O
M
U
V
M
M
K
R	 RRJ
K
1
1
NVP"J"J%'%&%	%	#r    