
    -Ph'5                    t   U d 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 ddlmZmZ ddlmZ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 erddlmZ ddlm Z  dd	l!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/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZCmDZDmEZE  e
d          ZFdZGdeHd<   ed         ZIdeHd<   ed         ZJdeHd<   ed         ZKdeHd<   ed         ZLdeHd <   ed!         ZMdeHd"<   ed#         ZNdeHd$<   ed%         ZOdeHd&<   d'ZPdeHd(<   d)ZQdeHd*<   d+ZRdeHd,<   d-ZSdeHd.<   eeIejT        f         ZUdeHd/<   eeJejV        f         ZWdeHd0<   eeKejX        f         ZYdeHd1<   eeLejZ        f         Z[deHd2<   eeNej\        f         Z]deHd3<   eeMej^        ej_        ej`        f         ZadeHd4<   eeOejb        ejc        ejd        f         ZedeHd5<   d6ZfdeHd7<   d8ZgdeHd9<   d:ZhdeHd;<   d<ZideHd=<   d>ZjdeHd?<   d@ZkdeHdA<   dBZldeHdC<   eej^        ej_        ej`        ejV        ejT        f         ZmdeHdD<    G dE dFe	          Zn G dG dHe	          Zo G dI dJe	          Zp G dK dLe	          Zq G dM dNe	          ZrdOZsdeHdP<   dQZtdeHdR<   dSZudeHdT<   dUZvdeHdV<   dWZwdeHdX<   dYZxdeHdZ<   d[ZydeHd\<   d]ZzdeHd^<   d_Z{deHd`<   daZ|deHdb<   dcZ}deHdd<   deZ~deHdf<   dgZdeHdh<   digZ G dj diee                   ZddoZddqZddsZeZdteHdu<   eZdveHdw<   eZdxeHdy<   eZdzeHd{<   dd}ZddZddZddZddZddZd	S )z2Narwhals-level equivalent of `CompliantNamespace`.    )annotations)TYPE_CHECKINGAnyCallableGenericLiteralProtocolTypeVaroverload)CompliantNamespaceAnyCompliantNamespaceT_co)ImplementationVersion)get_cudf	get_modin
get_pandas
get_polarsget_pyarrowis_dask_dataframeis_duckdb_relationis_ibis_tableis_pyspark_connect_dataframeis_pyspark_dataframeis_sqlframe_dataframe)
ModuleType)ClassVarN)	DataFrame)	TypeAliasTypeIsArrowNamespaceDaskNamespaceDuckDBNamespaceIbisNamespacePandasLikeNamespacePolarsNamespace)SQLFrameDataFrameSparkLikeNamespace)DataFrameLikeNativeFrameNativeLazyFrameNativeSeriesTzCallable[[Any], TypeIs[T]]r   _Guardpolars_Polarspyarrow_Arrowdask_Daskduckdb_DuckDB)pandascudfmodin_PandasLikeibis_Ibis)pysparksqlframezpyspark[connect]
_SparkLikez_PandasLike | _Arrow
_EagerOnlyz_Polars | _EagerOnly_EagerAllowedz$_SparkLike | _Dask | _DuckDB | _Ibis	_LazyOnlyz_Polars | _LazyOnly_LazyAllowedPolarsArrowDaskDuckDBIbis
PandasLike	SparkLikezPandasLike | Arrow	EagerOnlyzEagerOnly | PolarsEagerAllowedz SparkLike | Dask | DuckDB | IbisLazyOnlyzLazyOnly | PolarsLazyAllowedz_EagerAllowed | _LazyAllowedBackendNamez)BackendName | Implementation | ModuleTypeIntoBackendzWNamespace[PandasLikeNamespace] | Namespace[ArrowNamespace] | Namespace[PolarsNamespace]EagerAllowedNamespaceEagerAllowedImplementationc                      e Zd ZU ded<   dS )_NativeDasktype[pd.DataFrame]_partition_typeN__name__
__module____qualname____annotations__     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_namespace.pyrZ   rZ   e            ++++++rc   rZ   c                      e Zd ZddZdS )_NativeCuDFargsr   kwdsreturnc                    d S Nrb   selfrh   ri   s      rd   to_pylibcudfz_NativeCuDF.to_pylibcudfi         rc   Nrh   r   ri   r   rj   r   )r^   r_   r`   ro   rb   rc   rd   rg   rg   h   s        CCCCCCrc   rg   c                  .    e Zd Zd
dZd
dZd
dZd
dZd	S )_NativeIbisrh   r   ri   rj   c                    d S rl   rb   rm   s      rd   sqlz_NativeIbis.sqll   rp   rc   c                    d S rl   rb   rm   s      rd   __pyarrow_result__z_NativeIbis.__pyarrow_result__m   rp   rc   c                    d S rl   rb   rm   s      rd   __pandas_result__z_NativeIbis.__pandas_result__n   rp   rc   c                    d S rl   rb   rm   s      rd   __polars_result__z_NativeIbis.__polars_result__o   rp   rc   Nrq   )r^   r_   r`   ru   rw   ry   r{   rb   rc   rd   rs   rs   k   s@        ::::IIIIHHHHHHHHHHrc   rs   c                      e Zd ZU ded<   dS )_ModinDataFramer[   _pandas_classNr]   rb   rc   rd   r}   r}   q   s         ))))))rc   r}   c                      e Zd ZU ded<   dS )_ModinSeriesztype[pd.Series[Any]]r~   Nr]   rb   rc   rd   r   r   t   re   rc   r   z'pl.DataFrame | pl.LazyFrame | pl.Series_NativePolarszpa.Table | pa.ChunkedArray[Any]_NativeArrowzduckdb.DuckDBPyRelation_NativeDuckDBzpd.DataFrame | pd.Series[Any]_NativePandasz_ModinDataFrame | _ModinSeries_NativeModinz*_NativePandas | _NativeCuDF | _NativeModin_NativePandasLiker,   _NativeSQLFramezpyspark_sql.DataFrame_NativePySparkPySparkConnectDataFrame_NativePySparkConnectz8_NativeSQLFrame | _NativePySpark | _NativePySparkConnect_NativeSparkLikezo_NativePolars | _NativeArrow | _NativePandasLike | _NativeSparkLike | _NativeDuckDB | _NativeDask | _NativeIbisNativeKnownz<NativeFrame | NativeSeries | NativeLazyFrame | DataFrameLikeNativeUnknownzNativeKnown | NativeUnknown	NativeAny	Namespacec                  t    e Zd ZU ded<   ej        Zded<   dHdZdI fdZdJdZ	e
dKd            Ze
dLd            Ze
dMd            ZeedNd                        ZeedOd                        ZeedPd                        ZeedQd!                        ZeedRd$                        ZeedSd'                        ZeedTd*                        ZeedUd-                        ZeedVd0                        ZedWd4            ZeedXd7                        ZeedYd9                        ZeedZd;                        Zeed[d=                        Zeed\d?                        Zeed]dA                        Zeed^dC                        Zeed_dE                        Zed`dG            Z xZS )ar   r   _compliant_namespacezClassVar[Version]_version	namespacerj   Nonec                   || _         d S rl   r   )rn   r   s     rd   __init__zNamespace.__init__   s    $-!!!rc   rh   r   versionr   ri   c                    t                      j        |i | t          |t                    r	|| _        d S dt           dt          |          j        }t          |          )Nz	Expected z	 but got )super__init_subclass__
isinstancer   r   typer^   	TypeError)clsr   rh   ri   msg	__class__s        rd   r   zNamespace.__init_subclass__   sf    !!404000gw'' 	!"CLLLJgJJW0FJJCC.. rc   strc                <    dt          | j                  j         dS )Nz
Namespace[])r   	compliantr^   rn   s    rd   __repr__zNamespace.__repr__   s     <D009<<<<rc   c                    | j         S rl   r   r   s    rd   r   zNamespace.compliant   s    ((rc   r   c                    | j         j        S rl   )r   _implementationr   s    rd   implementationzNamespace.implementation   s    ~--rc   c                    | j         S rl   )r   r   s    rd   r   zNamespace.version   s
    }rc   backendrO   Namespace[PandasLikeNamespace]c                   d S rl   rb   r   r   s     rd   from_backendzNamespace.from_backend       UXUXrc   rJ   Namespace[PolarsNamespace]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend       MPSrc   rK   Namespace[ArrowNamespace]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend   s    KN3rc   rP   Namespace[SparkLikeNamespace]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend   s    SVSVrc   rM   Namespace[DuckDBNamespace]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend   r   rc   rL   Namespace[DaskNamespace]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend       ILrc   rN   Namespace[IbisNamespace]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend   r   rc   rR   rW   c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend   s    NQcrc   rV    Namespace[CompliantNamespaceAny]c                   d S rl   rb   r   s     rd   r   zNamespace.from_backend   	     ,/3rc   r   type[Namespace[Any]]Namespace[Any]c                  t          j        |          }|                                }| j        }|                                rddlm}  ||||          }n|                                rddlm	}  |||          }n|
                                rddlm}  |||          }n|                                rddlm}	  |	|||          }n|                                rddlm}
  |
||          }na|                                rdd	lm}  |||          }n9|                                rdd
lm}  |||          }nd}t3          |           | |          S )ax  Instantiate from native namespace module, string, or Implementation.

        Arguments:
            backend: native namespace module, string, or Implementation.

        Returns:
            Namespace.

        Examples:
            >>> from narwhals._namespace import Namespace
            >>> Namespace.from_backend("polars")
            Namespace[PolarsNamespace]
        r   r(   )r   backend_versionr   r*   )r   r   r    r-   r$   r"   r&   zNot supported Implementation)r   r   _backend_versionr   is_pandas_likenarwhals._pandas_like.namespacer)   	is_polarsnarwhals._polars.namespacer+   
is_pyarrownarwhals._arrow.namespacer!   is_spark_likenarwhals._spark_like.namespacer.   	is_duckdbnarwhals._duckdb.namespacer%   is_dasknarwhals._dask.namespacer#   is_ibisnarwhals._ibis.namespacer'   AssertionError)r   r   implr   r   r)   nsr+   r!   r.   r%   r#   r'   r   s                 rd   r   zNamespace.from_backend   s   " *733//11,   #	&KKKKKK$$#_g  BB ^^ 	&BBBBBB 'RRRBB__ 	&@@@@@@QQQBB!! 	&IIIIII###_g  BB ^^ 	&BBBBBB 'RRRBB\\^^ 
	&>>>>>>PPPBB\\^^ 	&>>>>>>PPPBB0C %%%s2wwrc   nativer   c                   d S rl   rb   r   r   s     rd   from_native_objectzNamespace.from_native_object  	     &)Src   r   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object  s	     *-rc   r   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object  s    WZWZrc   r   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object  s	     ),rc   r   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object#  r   rc   rZ   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object)  r   rc   rs   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object-  r   rc   r   c                   d S rl   rb   r   s     rd   r   zNamespace.from_native_object1  r   rc   r   c                  t          |          r|                     t          j                  S t	          |          r|                     t          j                  S t          |          r|                     t          j                  S t          |          rU|                     t          |          rt          j
        n&t          |          rt          j        nt          j                  S t          |          r|                     t          j                  S t!          |          r|                     t          j                  S t%          |          r|                     t          j                  S t)          |          r|                     t          j                  S t-          |          r|                     t          j                  S dt1          |          j        }t5          |          )NzUnsupported type: )is_native_polarsr   r   POLARSis_native_pandasPANDASis_native_arrowPYARROWis_native_spark_likeis_native_sqlframeSQLFRAMEis_native_pyspark_connectPYSPARK_CONNECTPYSPARKis_native_daskDASKis_native_duckdbDUCKDBis_native_cudfCUDFis_native_modinMODINis_native_ibisIBISr   r`   r   )r   r   r   s      rd   r   zNamespace.from_native_object7  s    F## 	!##N$9:::f%% 	!##N$9:::V$$ 	!##N$:;;;!&)) 	!##%f--,'' -V44,^33#+   F## 	!##N$7888f%% 
	!##N$9:::F## 	!##N$7888V$$ 	!##N$8999F## 	!##N$7888DtF||'@DDCC.. rc   )r   r   rj   r   )rh   r   r   r   ri   r   rj   r   )rj   r   )rj   r   )rj   r   )rj   r   )r   rO   rj   r   )r   rJ   rj   r   )r   rK   rj   r   )r   rP   rj   r   )r   rM   rj   r   )r   rL   rj   r   )r   rN   rj   r   )r   rR   rj   rW   )r   rV   rj   r   )r   r   r   rV   rj   r   )r   r   rj   r   )r   r   rj   r   )r   r   rj   r   )r   r   rj   r   )r   r   rj   r   )r   rZ   rj   r   )r   rs   rj   r   )r   r   rj   r   )r   r   r   r   rj   r   )r^   r_   r`   ra   r   MAINr   r   r   r   propertyr   r   r   r   classmethodr   r   __classcell__)r   s   @rd   r   r      s        0000"),H..... . . .! ! ! ! ! != = = = ) ) ) X) . . . X.    X XXX [ XXPPP [ XPNNN [ XNVVV [ XVPPP [ XPLLL [ XLLLL [ XLQQQ [ XQ/ / / [ X/ 8 8 8 [8t ) ) ) [ X) - - - [ X- ZZZ [ XZ, , , [ X, ) ) ) [ X) XXX [ XXXXX [ XX/ / / [ X/ ! ! ! [! ! ! ! !rc   objr   rj   TypeIs[_NativePolars]c                j    t                      x}d uo!t          | |j        |j        |j        f          S rl   )r   r   r   Series	LazyFrame)r  pls     rd   r   r   X  s;    ,,Bt+ 
blBIr|41 1 rc   TypeIs[_NativeArrow]c                ^    t                      x}d uot          | |j        |j        f          S rl   )r   r   TableChunkedArray)r  pas     rd   r   r   ^  s7    --B, bh(2 2 rc   TypeIs[_NativeDask]c                     t          |           S rl   )r   r  s    rd   r   r   d  s    S!!!rc   z_Guard[_NativeDuckDB]r   z_Guard[_NativeSQLFrame]r   z_Guard[_NativePySpark]is_native_pysparkz_Guard[_NativePySparkConnect]r   TypeIs[_NativePandas]c                ^    t                      x}d uot          | |j        |j        f          S rl   )r   r   r   r  )r  pds     rd   r   r   n  s.    ,,Bt+Z
3ry@Y0Z0ZZrc   TypeIs[_NativeModin]c                ^    t                      x}d uot          | |j        |j        f          S rl   )r   r   r   r  )r  mpds     rd   r   r   r  s7    ;;Ct+ 
cmSZ(1 1 rc   TypeIs[_NativeCuDF]c                ^    t                      x}d uot          | |j        |j        f          S rl   )r   r   r   r  )r  r>   s     rd   r   r   x  s7    JJDt+ 
dndk*1 1 rc   TypeIs[_NativePandasLike]c                \    t          |           pt          |           pt          |           S rl   )r   r   r   r  s    rd   is_native_pandas_liker  ~  s,    L!4!4L8L8Lrc   TypeIs[_NativeSparkLike]c                \    t          |           pt          |           pt          |           S rl   )r   r  r   r  s    rd   r   r     s2    3 	*S!!	*$S))rc   TypeIs[_NativeIbis]c                     t          |           S rl   )r   r  s    rd   r   r     s    rc   )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )r  r   rj   r  )__doc__
__future__r   typingr   r   r   r   r   r	   r
   r   narwhals._compliant.typingr   r   narwhals._utilsr   r   narwhals.dependenciesr   r   r   r   r   r   r   r   r   r   r   typesr   r   r;   r=   r  r5   r  r7   r  pyspark.sqlru   pyspark_sqlpyspark.sql.connect.dataframer   r   typing_extensionsr   r   r   r!   r   r#   r   r%   r   r'   r   r)   r   r+   narwhals._spark_like.dataframer,   r   r.   narwhals.typingr/   r0   r1   r2   r3   r4   ra   r6   r8   r:   r<   r@   rB   rE   rF   rG   rH   rI   r   rJ   r   rK   r   rL   r   rM   r   rN   r   r   r   rO   r   r   r   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rZ   rg   rs   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r   r   r   r   r   r   r  r   r   r   r   r  r   r   rb   rc   rd   <module>r.     s   8 8 8 " " " " " "	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 U T T T T T T T 3 3 3 3 3 3 3 3                           h9      MMM%%%%%%RRRRRR33333333888888666666::::::666666CCCCCC::::::@@@@@@AAAAAAYYYYYYYYYYYYA4F4444 *G****	*F****vE&&&& *G****$%>?K????vE&&&&#$MNJNNNN2J22225M5555AIAAAA3L3333)> >?F????v~'==>E>>>>e^%889D9999)> >?F????e^%889D9999#^*N,?AUUJ     #&	(I     0I////2L2222<H<<<<0K0000;K;;;;HKHHHH (A  A  A  A  A,3		-    , , , , ,h , , ,D D D D Dh D D DI I I I Ih I I I* * * * *( * * *, , , , ,x , , ,  IMHHHH?L????8M8888>M>>>>>L>>>>#OOOOO!4O4444 7N7777'@@@@@B      OK  O  O  O  OF      9I8888-H! H! H! H! H!./ H! H! H!V      " " " " +=  < < < <.C  C C C C,@  @ @ @ @;W  W W W W[ [ [ [                 rc   