o
    h0                     @  s  U d 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 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 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 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 ddlmZ ddlmZ er8d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+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 dd l2m3Z3 dd!l4m5Z5 dd"l6m7Z7 dd#l8m9Z9 dd$l:m;Z; dd%l:m<Z< dd&l:m=Z= dd'l:m>Z> e
d(Z?d)Z@d*eAd+< ed, ZBd*eAd-< ed. ZCd*eAd/< ed0 ZDd*eAd1< ed2 ZEd*eAd3< ed4 ZFd*eAd5< ed6 ZGd*eAd7< d8ZHd*eAd9< d:ZId*eAd;< d<ZJd*eAd=< d>ZKd*eAd?< eeBejLf ZMd*eAd@< eeCejNf ZOd*eAdA< eeDejPf ZQd*eAdB< eeEejRf ZSd*eAdC< eeFejTejUejVf ZWd*eAdD< eeGejXejYf ZZd*eAdE< dFZ[d*eAdG< dHZ\d*eAdI< dJZ]d*eAdK< dLZ^d*eAdM< dNZ_d*eAdO< dPZ`d*eAdQ< dRZad*eAdS< eejTejUejVejNejLf Zbd*eAdT< G dUdV dVe	ZcG dWdX dXe	ZdG dYdZ dZe	ZeG d[d\ d\e	Zfd]Zgd*eAd^< d_Zhd*eAd`< daZid*eAdb< dcZjd*eAdd< deZkd*eAdf< dgZld*eAdh< diZmd*eAdj< dkZnd*eAdl< dmZod*eAdn< doZpd*eAdp< dqZqd*eAdr< dsZrd*eAdt< dugZsG dvdu duee Ztdd{d|Zudd~dZvdddZweZxdeAd< eZydeAd< eZzdeAd< dddZ{dddZ|dddZ}dddZ~dddZdS )z2Narwhals-level equivalent of `CompliantNamespace`.    )annotations)TYPE_CHECKING)Any)Callable)Generic)Literal)Protocol)TypeVar)overload)CompliantNamespaceAny)CompliantNamespaceT_co)get_cudf)	get_modin)
get_pandas)
get_polars)get_pyarrowis_dask_dataframe)is_duckdb_relation)is_pyspark_dataframe)is_sqlframe_dataframe)Implementation)Version)
ModuleType)ClassVarN)	TypeAlias)TypeIsArrowNamespaceDaskNamespaceDuckDBNamespace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)pysparksqlframe
_SparkLikez_PandasLike | _Arrow
_EagerOnlyz_Polars | _EagerOnly_EagerAllowedz_SparkLike | _Dask | _DuckDB	_LazyOnlyz_Polars | _LazyOnly_LazyAllowedPolarsArrowDaskDuckDB
PandasLike	SparkLikezPandasLike | Arrow	EagerOnlyzEagerOnly | PolarsEagerAllowedzSparkLike | Dask | DuckDB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__ rZ   rZ   G/var/www/vscode/kcb/lib/python3.10/site-packages/narwhals/_namespace.pyrR   ^      
 rR   c                   @  s   e Zd ZdddZdS )	_NativeCuDFargsr   kwdsreturnc                 O     d S NrZ   )selfr^   r_   rZ   rZ   r[   to_pylibcudfb   s    z_NativeCuDF.to_pylibcudfN)r^   r   r_   r   r`   r   )rV   rW   rX   rd   rZ   rZ   rZ   r[   r]   a   s    r]   c                   @  rQ   )_ModinDataFramerS   _pandas_classNrU   rZ   rZ   rZ   r[   re   d   r\   re   c                   @  rQ   )_ModinSeriesztype[pd.Series[Any]]rf   NrU   rZ   rZ   rZ   r[   rg   g   r\   rg   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_NativePySparkz _NativeSQLFrame | _NativePySpark_NativeSparkLikeza_NativePolars | _NativeArrow | _NativePandasLike | _NativeSparkLike | _NativeDuckDB | _NativeDaskNativeKnownz<NativeFrame | NativeSeries | NativeLazyFrame | DataFrameLikeNativeUnknownzNativeKnown | NativeUnknown	NativeAny	Namespacec                      s  e Zd ZU ded< ejZded< dLdd	ZdM fddZdNddZ	e
dOddZe
dPddZe
dQddZeedRddZeedSd"dZeedTd%dZeedUd(dZeedVd+dZeedWd.dZeedXd1dZeedYd4dZedZd9dZeed[d<d=Zeed\d?d=Zeed]dAd=Zeed^dCd=Zeed_dEd=Zeed`dGd=ZeedadId=ZedbdKd=Z  ZS )crt   r   _compliant_namespacezClassVar[Version]_version	namespacer`   Nonec                C  s
   || _ d S rb   ru   )rc   rw   rZ   rZ   r[   __init__   s   
zNamespace.__init__r^   r   versionr   r_   c                  sD   t  j|i | t|tr|| _d S dt dt|j}t|)Nz	Expected z	 but got )super__init_subclass__
isinstancer   rv   typerV   	TypeError)clsr{   r^   r_   msg	__class__rZ   r[   r}      s
   

zNamespace.__init_subclass__strc                 C  s   dt | jj dS )Nz
Namespace[])r   	compliantrV   rc   rZ   rZ   r[   __repr__   s   zNamespace.__repr__c                 C     | j S rb   ry   r   rZ   rZ   r[   r         zNamespace.compliantr   c                 C  s   | j jS rb   )r   _implementationr   rZ   rZ   r[   implementation   s   zNamespace.implementationc                 C  r   rb   )rv   r   rZ   rZ   r[   r{      r   zNamespace.versionbackendrG   Namespace[PandasLikeNamespace]c                C  ra   rb   rZ   r   r   rZ   rZ   r[   from_backend      zNamespace.from_backendrC   Namespace[PolarsNamespace]c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   rD   Namespace[ArrowNamespace]c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   rH   Namespace[SparkLikeNamespace]c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   rF   Namespace[DuckDBNamespace]c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   rE   Namespace[DaskNamespace]c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   rJ   rO   c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   r    Namespace[CompliantNamespaceAny]c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   r   type[Namespace[Any]]rN   Namespace[Any]c                C  s  t |}| }| j}| r!ddlm} ||||d}| |S | r5ddlm	} |||d}| |S |
 rIddlm} |||d}| |S | r^ddlm}	 |	|||d}| |S | rrddlm}
 |
||d}| |S | rdd	lm} |||d}| |S d
}t|)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   zNot supported Implementation)r   r   _backend_versionrv   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    AssertionError)r   r   implr   r{   r$   nsr&   r   r)   r"   r    r   rZ   rZ   r[   r      sB   
nativerh   c                C  ra   rb   rZ   r   r   rZ   rZ   r[   from_native_object      zNamespace.from_native_objectrm   c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   ri   c                C  ra   rb   rZ   r   rZ   rZ   r[   r      r   rp   c                C  ra   rb   rZ   r   rZ   rZ   r[   r     r   rj   c                C  ra   rb   rZ   r   rZ   rZ   r[   r   	  r   rR   c                C  ra   rb   rZ   r   rZ   rZ   r[   r     r   rr   c                C  ra   rb   rZ   r   rZ   rZ   r[   r     r   rs   c                C  s   t |r
| tjS t|r| tjS t|r| tjS t|r0| t	|r,tj
S tjS t|r:| tjS t|rD| tjS t|rN| tjS t|rX| tjS dt|j}t|)NzUnsupported type: )is_native_polarsr   r   POLARSis_native_pandasPANDASis_native_arrowPYARROWis_native_spark_likeis_native_sqlframeSQLFRAMEPYSPARKis_native_daskDASKis_native_duckdbDUCKDBis_native_cudfCUDFis_native_modinMODINr   rX   r   )r   r   r   rZ   rZ   r[   r     s.   )rw   r   r`   rx   )r^   r   r{   r   r_   r   r`   rx   )r`   r   )r`   r   )r`   r   )r`   r   )r   rG   r`   r   )r   rC   r`   r   )r   rD   r`   r   )r   rH   r`   r   )r   rF   r`   r   )r   rE   r`   r   )r   rJ   r`   rO   )r   r   r`   r   )r   r   r   rN   r`   r   )r   rh   r`   r   )r   rm   r`   r   )r   ri   r`   r   )r   rp   r`   r   )r   rj   r`   r   )r   rR   r`   r   )r   rr   r`   r   )r   r   r   rs   r`   r   )rV   rW   rX   rY   r   MAINrv   rz   r}   r   propertyr   r   r{   r
   classmethodr   r   __classcell__rZ   rZ   r   r[   rt   }   sz   
 

	6objr   r`   TypeIs[_NativePolars]c                 C  s$   t   }d uot| |j|j|jfS rb   )r   r~   	DataFrameSeries	LazyFrame)r   plrZ   rZ   r[   r   6  s   r   TypeIs[_NativeArrow]c                 C      t   }d uot| |j|jfS rb   )r   r~   TableChunkedArray)r   parZ   rZ   r[   r   <     r   TypeIs[_NativeDask]c                 C  s   t | S rb   r   r   rZ   rZ   r[   r   B  s   r   z_Guard[_NativeDuckDB]r   z_Guard[_NativeSQLFrame]r   z_Guard[_NativePySpark]is_native_pysparkTypeIs[_NativePandas]c                 C  r   rb   )r   r~   r   r   )r   pdrZ   rZ   r[   r   K  s    r   TypeIs[_NativeModin]c                 C  r   rb   )r   r~   r   r   )r   mpdrZ   rZ   r[   r   O  r   r   TypeIs[_NativeCuDF]c                 C  r   rb   )r   r~   r   r   )r   r9   rZ   rZ   r[   r   U  r   r   TypeIs[_NativePandasLike]c                 C  s   t | pt| pt| S rb   )r   r   r   r   rZ   rZ   r[   is_native_pandas_like[  s   r   TypeIs[_NativeSparkLike]c                 C  s   t | pt| S rb   )r   r   r   rZ   rZ   r[   r   a  s   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   )__doc__
__future__r   typingr   r   r   r   r   r   r	   r
   narwhals._compliant.typingr   r   narwhals.dependenciesr   r   r   r   r   r   r   r   r   narwhals.utilsr   r   typesr   r   r6   r8   r   r0   r   r2   r   pyspark.sqlsqlpyspark_sqltyping_extensionsr   r   r   r   r   r    r   r"   r   r$   r   r&   narwhals._spark_like.dataframer'   r   r)   narwhals.typingr*   r+   r,   r-   r.   r/   rY   r1   r3   r5   r7   r;   r>   r?   r@   rA   rB   r   rC   r   rD   r   rE   r   rF   r   r   r   rG   r   r   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rR   r]   re   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   __all__rt   r   r   r   r   r   r   r   r   r   r   r   rZ   rZ   rZ   r[   <module>   s    
 
:





