L isLddlmZddlZddlmZmZddlmZerdddlZddl m Z ddl Z ddl Z ddlmZddlZddlZddlZddlmZddlmZddlmZmZddlm Z ddl!mZm"Z"dd l#m$Z$dd l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/e0d gZ1dId Z2dId Z3dIdZ4dIdZ5dIdZ6dIdZ7dIdZ8dIdZ9dIdZ:dIdZ;dIdZdIdZ?dIdZ@dIdZAdJdZBdKdZCdLdZDdMdZEdNd ZFdOd!ZGdPd"ZHdQd#ZIdRd$ZJdSd%ZKdTd&ZLdUd'ZMdVd(ZNdWd)ZOdXd*ZPdYd+ZQdZd,ZRd[d-ZSd\d.ZTd]d/ZUd^d0ZVd_d1ZWd`d2ZXdad3ZYdbd4ZZdcd5Z[ddd6Z\ded7Z]dfd8Z^dgd9Z_dhd:Z`did;Zadjd<Zbdkd=Zcdld>Zddmd?Zednd@Zf dodAZgdpdBZhdqdCZi drdDZj dsdEZkdtdFZldtdGZmgdHZny)u) annotationsN) TYPE_CHECKINGAny) issue_warning DataFrame) TypeGuardTypeIs)SQLFrameDataFrame)r LazyFrameSeries) IntoDataFrameTIntoLazyFrameT IntoSeriesTPandasLikeDType_1DArray _1DArrayInt_2DArray_NDArray _NumpyScalar_ShapeT fireduckscBtjjddS)z;Get Polars module (if already imported - else return None).polarsNsysmodulesget[/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/narwhals/dependencies.py get_polarsr#/ ;;??8T **r!cBtjjddS)z;Get pandas module (if already imported - else return None).pandasNrr r!r" get_pandasr'4r$r!cBtjjddS)zAGet modin.pandas module (if already imported - else return None).z modin.pandasNrr r!r" get_modinr)9s ;;??>4 00r!cBtjjddS)z9Get cudf module (if already imported - else return None).cudfNrr r!r"get_cudfr,> ;;??64 ((r!cBtjjddS)z9Get cupy module (if already imported - else return None).cupyNrr r!r"get_cupyr0Cr-r!cBtjjddS)zGet dask_expr module (if already imported - else return None).N dask_expr)r<hasattrrDrrr)dds r" get_dask_exprrGfs8 ""/GB 4L|| ;;??; --r!cBtjjddS)zr!cZt|r dt|d}t|tyy)NrSzz` to `is_pandas_series`. Hint: Instead of e.g. `is_pandas_series(ser)`, did you mean `is_pandas_series(ser.to_native())`?)is_narwhals_seriesrVrrW)serrYs r"_warn_if_narwhals_seriesr^s7#T#YK(@ @ c;' r!cttx}duxrt|jxst fdt DS)zCheck whether `df` is a pandas DataFrame without importing pandas. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. Nc3K|]J}tjj|dxduxr tjj LywN)rrr isinstancer&r).0 module_namerXmods r" z&is_pandas_dataframe..sTV   T2 24? 1 r3::// 0 1VAA)rZr'rbrany IMPORT_HOOKS)rXpdres` @r"is_pandas_dataframerksP r"< R , MB 1M RUV(VSr!cttx}duxrt|jxst fdt DS)zCheck whether `ser` is a pandas Series without importing pandas. Warning: This method cannot be called on Narwhals Series. Nc3K|]J}tjj|dxduxr tjj Lywra)rrrrbr&r)rcrdrer]s r"rfz#is_pandas_series..sTT   T2 24? / sCJJ-- . /Trg)r^r'rbrrhri)r]rjres` @r"is_pandas_seriesrnsP S!< R , KC1K PST(TQr!ctx}duxrt|jxstfdtDS)zACheck whether `index` is a pandas Index without importing pandas.Nc3K|]J}tjj|dxduxr tjj Lywra)rrrrbr&Index)rcrdindexres r"rfz"is_pandas_index..sTU   T2 24? 0 ucjj.. / 0Urg)r'rbrqrhri)rrrjres` @r"is_pandas_indexrssF< R , LE2881L QTU(URr!cdt|tx}duxrt||jS)zCheck whether `df` is a modin DataFrame without importing modin. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. N)rZr)rbr)rXmpds r"is_modin_dataframervs. r"; Ct + M 2s}}0MMr!cdt|tx}duxrt||jS)zCheck whether `ser` is a modin Series without importing modin. Warning: This method cannot be called on Narwhals Series. N)r^r)rbr)r]rus r"is_modin_seriesrxs. S!; Ct + K 3 0KKr!cNtx}duxrt||jS)z?Check whether `index` is a modin Index without importing modin.N)r)rbrq)rrrus r"is_modin_indexrzs$; Ct + L 5#))0LLr!cdt|tx}duxrt||jS)zCheck whether `df` is a cudf DataFrame without importing cudf. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. N)rZr,rbr)rXr+s r"is_cudf_dataframer|s. r"J Dt + N 2t~~0NNr!cdt|tx}duxrt||jS)zCheck whether `ser` is a cudf Series without importing cudf. Warning: This method cannot be called on Narwhals Series. N)r^r,rbr)r]r+s r"is_cudf_seriesr~s. S!J Dt + L 3 0LLr!cNtx}duxrt||jS)z=Check whether `index` is a cudf Index without importing cudf.N)r,rbrq)rrr+s r" is_cudf_indexrs+J Dt +   tzz1r!cptx}duxr't||jxr|jdk(S)N)r0rbndarraysize)objr/s r"is_cupy_scalarrs9 D(  sDLL )  HHMr!cdt|tx}duxrt||jS)zCheck whether `df` is a Dask DataFrame without importing Dask. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. N)rZr<rbr)rXrFs r"is_dask_dataframers/ r"$& &Bt 3 T 2r||8TTr!cdt|tx}duxrt||jS)zCheck whether `df` is a DuckDB Relation without importing DuckDB. Warning: This method cannot be called on Narwhals DataFrame/LazyFrame. N)rZr?rbDuckDBPyRelation)rXr>s r"is_duckdb_relationrs7 r" l "F4 / J F # #5r!ct|tx}duxr*t||jjj S)zCheck whether `df` is a Ibis Table without importing Ibis. Warning: This method cannot be called on Narwhals DataFrame/LazyFrame. N)rZrBrbexprtypesTable)rXrAs r" is_ibis_tabler s8 r"J Dt + U 2tyy?T?T0UUr!cdt|tx}duxrt||jS)zCheck whether `df` is a Polars DataFrame without importing Polars. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. N)rZr#rbrrXpls r"is_polars_dataframer. r", Bt + L 2r||0LLr!cdt|tx}duxrt||jS)zCheck whether `df` is a Polars LazyFrame without importing Polars. Warning: This method cannot be called on Narwhals DataFrame/LazyFrame. N)rZr#rbr rs r"is_polars_lazyframer rr!cdt|tx}duxrt||jS)zCheck whether `ser` is a Polars Series without importing Polars. Warning: This method cannot be called on Narwhals Series. N)r^r#rbr)r]rs r"is_polars_seriesr*s. S!, Bt + J 3 0JJr!cxttx}xr$t|dxrt||jS)NSchema)boolr#rErbrrrs r"is_polars_schemar4s2 :< R YWR%:Yz#ryy?Yr!c\ttx}xrt||jSra)rr#rbDataTypers r"is_polars_data_typer;s$ jl" # D 3 (DDr!cdt|tx}duxrt||jS)zCheck whether `ser` is a PyArrow ChunkedArray without importing PyArrow. Warning: This method cannot be called on Narwhals Series. N)r^r3rb ChunkedArray)r]pas r"is_pyarrow_chunked_arrayr?s. S!- B , QC1QQr!cdt|tx}duxrt||jS)zCheck whether `df` is a PyArrow Table without importing PyArrow. Warning: This method cannot be called on Narwhals DataFrame/LazyFrame. N)rZr3rbr)rXrs r"is_pyarrow_tablerIs. r"- B , IB1IIr!cNtx}duxrt||jSra)r3rbScalarrrs r"is_pyarrow_scalarrSs$- B , KC1KKr!c\ttx}xrt||jSra)rr3rbrrs r"is_pyarrow_schemarWs$ km# $ CC)CCr!c\ttx}xrt||jSra)rr3rbrrs r"is_pyarrow_data_typer[s$ km# $ EC)EEr!cvt|ttx}duxrt||jS)zCheck whether `df` is a PySpark DataFrame without importing PySpark. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. N)rZrrLrbr)rX pyspark_sqls r"is_pyspark_dataframer_s> r" ') )$6 2 r;00 1 r!crt|t ddlm}t ||Sy#t$rYywxYw)zCheck whether `df` is a PySpark Connect DataFrame without importing PySpark. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. rrF)rZrNpyspark.sql.connect.dataframer ImportErrorrbrXrs r"is_pyspark_connect_dataframerlsC r"(  ?"i((   s * 66cRt|tddlm}t ||Sy)zCheck whether `df` is a SQLFrame DataFrame without importing SQLFrame. Warning: This method cannot be called on a Narwhals DataFrame/LazyFrame. r) BaseDataFrameF)rZrQsqlframe.base.dataframerrb)rXrs r"is_sqlframe_dataframer|s' r"~!9"m,, r!cNtx}duxrt||jS)z=Check whether `arr` is a NumPy Array without importing NumPy.N)r7rbrarrnps r"is_numpy_arrayrs$+ Bd * Jz#rzz/JJr!c:t|xr|jdk(S)z@Check whether `arr` is a 1D NumPy Array without importing NumPy.rrndimrs r"is_numpy_array_1dr #  0388q=0r!ctx}xr3t|xr&|j|j|jSra)r7r issubdtypedtypeintegerrs r"is_numpy_array_1d_intrs9{  1 c " 1 MM#))RZZ 0r!c:t|xr|jdk(S)z@Check whether `arr` is a 2D NumPy Array without importing NumPy.rrs r"is_numpy_array_2drrr!cNtx}duxrt||jS)zACheck whether `scalar` is a NumPy Scalar without importing NumPy.N)r7rbgeneric)scalarrs r"is_numpy_scalarrs& + Bd * Mz&"**/MMr!cbt|t|xst|xs 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. )rZrkrvr|)rXs r"is_pandas_like_dataframers.r" r " U&8&< U@QRT@UUr!cbt|t|xst|xs 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. )r^rnrxr~r]s r"is_pandas_like_seriesrs+S! C OOC$8 ON3t||jjj t jfSra)rr'rbapi extensionsExtensionDtyper7rrrjs r"is_pandas_like_dtypersD jl" #   bff.. 0A0A B)r!cttx}xr8t||jjj xr t |dS)Nto_arrow)rr'rbrrrrErs r" is_cudf_dtypersF :< R  % sRVV..== ? % C $r!cddlm}t||xs3t|dxs%t |xst |xs t |S)aMCheck 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 rr __narwhals_series__)narwhals.seriesrrbrErrr) native_seriesrs r"is_into_seriesrsS.' =&) 0 ="7 8 0 M * 0 $M 2 0 ! / r!cddlm}t||xs3t|dxs%t |xst |xs t |S)aCheck 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 rr__narwhals_dataframe__)narwhals.dataframerrbrErrr)native_dataframers r"is_into_dataframersX.- #Y/ 6 #%= > 6 / 0 6 , - 6 $$4 5 r!c&ddlm}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`. rr)rrrbrs r"rTrT- b) $$r!c&ddlm}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)r )rr rb)lfr s r"rUrU-rr!c&ddlm}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`. rr )rrrb)r]rs r"r\r\;s' c6 ""r!cPt|xr|jjSra)r\r is_integerrs r"is_narwhals_series_intrGs c " =syy';';'==r!)r,rBr)r7r'r#r3r|r~rrrrrvrxrTrUr\rrkrsrrrnrrrrr)returnr)rXrrNone)r]rrr)rXrrzTypeIs[pd.DataFrame])r]rrzTypeIs[pd.Series[Any]])rrrrzTypeIs[pd.Index[Any]])rXrrzTypeIs[mpd.DataFrame])r]rrzTypeIs[mpd.Series])rrrrzTypeIs[mpd.Index[Any]])rXrrzTypeIs[cudf.DataFrame])r]rrzTypeIs[cudf.Series[Any]])rrrrzTypeIs[cudf.Index])rrrr)rXrrzTypeIs[dd.DataFrame])rXrrzTypeIs[duckdb.DuckDBPyRelation])rXrrzTypeIs[ibis.Table])rXrrzTypeIs[pl.DataFrame])rXrrzTypeIs[pl.LazyFrame])r]rrzTypeIs[pl.Series])rrrzTypeIs[pl.Schema])rrrzTypeIs[pl.DataType])r]rrzTypeIs[pa.ChunkedArray[Any]])rXrrzTypeIs[pa.Table])rrrzTypeIs[pa.Scalar[Any]])rrrzTypeIs[pa.Schema])rrrzTypeIs[pa.DataType])rXrrzTypeIs[pyspark_sql.DataFrame])rXrrzTypeIs[PySparkConnectDataFrame])rXrrzTypeIs[SQLFrameDataFrame])rzAny | _NDArray[_ShapeT]rzTypeIs[_NDArray[_ShapeT]])rrrzTypeIs[_1DArray])rrrzTypeIs[_1DArrayInt])rrrzTypeIs[_2DArray])rrrzTypeGuard[_NumpyScalar])rXrrr)r]rrr)rrrrr)rrrzTypeIs[PandasLikeDType])rrrz(TypeIs[pd.api.extensions.ExtensionDtype])rzAny | IntoSeriesTrzTypeIs[IntoSeriesT])rzAny | IntoDataFrameTrzTypeIs[IntoDataFrameT])rXzDataFrame[IntoDataFrameT] | Anyrz!TypeIs[DataFrame[IntoDataFrameT]])rzAny | LazyFrame[IntoLazyFrameT]rz!TypeIs[LazyFrame[IntoLazyFrameT]])r]zAny | Series[IntoSeriesT]rzTypeIs[Series[IntoSeriesT]])o __future__rrtypingrrnarwhals._exceptionsrr+dask.dataframe dataframerFr>rA modin.pandasr&rurjrrr2r pyspark.sqlsqlrrrPySparkConnectDataFrametyping_extensionsr r narwhals._spark_like.dataframer rr rrnarwhals.typingrrrrrrrrrr frozensetrir#r'r)r,r0r3r7r:r<r?rBrGrJrLrNrQrZr^rkrnrsrvrxrzr|r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrTrUr\r__all__r r!r"rs# %.%R3@7&   "+' + + 1 ) ) , * ) 3 + ) ., 0 8 - ((  NLM OMU VMMKERJLDF   K 1 1 N V P  -DD %' %& % %' %& % #> r!