o
    Lh5                     @  s  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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/m0Z0m1Z1m2Z2 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lAmBZB ddlCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQ e
dZRdZSdeTd< dZUdeTd< G dd de e	ZVG dd deOeVe	ZWG d d! d!eQeVe	ZXG d"d# d#e	ZYG d$d% d%eWe	ZZG d&d' d'eXe	Z[G d(d) d)e	Z\G d*d+ d+eWe	Z]G d,d- d-eXe	Z^d.Z_deTd/< d0Z`deTd1< d2ZadeTd3< d4ZbdeTd5< d6ZcdeTd7< d8ZddeTd9< d:ZedeTd;< d<ZfdeTd=< d>ZgdeTd?< d@ZhdeTdA< dBZideTdC< dDZjdeTdE< dFZkdeTdG< dHZldeTdI< dJZmdeTdK< dLZndeTdM< dNgZoG dOdN dNee ZpdvdTdUZqdwdWdXZrdxdZd[ZseZtd\eTd]< eZud^eTd_< eZvd`eTda< eZwdbeTdc< dydedfZxdzdhdiZyd{dkdlZzd|dndoZ{d}dqdrZ|d~dtduZ}d	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)
CollectionSized)ClassVarN)	DataFrame)Self	TypeAliasTypeIsArrowNamespaceDaskNamespaceDuckDBNamespaceIbisNamespacePandasLikeNamespacePolarsNamespace)SQLFrameDataFrameSparkLikeNamespace)
ArrowBackendDaskDuckDBEagerAllowedIbisIntoBackend
PandasLikePolars	SparkLike)NativeDataFrameNativeLazyFrameNativeSeriesTzCallable[[Any], TypeIs[T]]r   _GuardzWNamespace[PandasLikeNamespace] | Namespace[ArrowNamespace] | Namespace[PolarsNamespace]EagerAllowedNamespacec                   @  sz   e Zd ZU ded< 	 d%ddZd&d
dZd&ddZed'ddZed(ddZ	dddd)ddZ
d*d+ddZd,d"d#Zd$S )-_BasePandasLiker   indexkeyreturnc                C     d S N )selfrB   rF   rF   T/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/narwhals/_namespace.py__getitem__L       z_BasePandasLike.__getitem__other float | Collection[float] | Selfr   c                 C  rD   rE   rF   rG   rK   rF   rF   rH   __mul__M   rJ   z_BasePandasLike.__mul__c                 C  rD   rE   rF   rM   rF   rF   rH   __floordiv__N   rJ   z_BasePandasLike.__floordiv__c                 C  rD   rE   rF   rG   rF   rF   rH   locO      z_BasePandasLike.loctuple[int, ...]c                 C  rD   rE   rF   rP   rF   rF   rH   shapeQ   rR   z_BasePandasLike.shape.)axiscopylabelsrU   rV   boolc                C  rD   rE   rF   )rG   rW   rU   rV   rF   rF   rH   set_axisS   rJ   z_BasePandasLike.set_axisdeepc                 C  rD   rE   rF   )rG   rZ   rF   rF   rH   rV   T   rJ   z_BasePandasLike.copyargsinplaceLiteral[False]kwdsc                O  s   dS )zD`inplace=False` is required to avoid (incorrect?) default overloads.NrF   )rG   r\   r[   r^   rF   rF   rH   renameU      z_BasePandasLike.renameN)rB   r   rC   r   )rK   rL   rC   r   )rC   r   )rC   rS   )rW   r   rU   r   rV   rX   rC   r   .)rZ   rX   rC   r   )r[   r   r\   r]   r^   r   rC   r   )__name__
__module____qualname____annotations__rI   rN   rO   propertyrQ   rT   rY   rV   r_   rF   rF   rF   rH   r@   H   s   
 


r@   c                   @  s   e Zd ZdS )_BasePandasLikeFrameN)rb   rc   rd   rF   rF   rF   rH   rg   Y   s    rg   c                   @  s   e Zd Zd
dddZd	S )_BasePandasLikeSeries.condr   rK   r^   rC   c                 K  rD   rE   rF   )rG   ri   rK   r^   rF   rF   rH   where\   rJ   z_BasePandasLikeSeries.whereNra   )ri   r   rK   r   r^   r   rC   r   )rb   rc   rd   rj   rF   rF   rF   rH   rh   [   s    rh   c                   @     e Zd ZU ded< dS )_NativeDasktype[pd.DataFrame]_partition_typeNrb   rc   rd   re   rF   rF   rF   rH   rl   ^      
 rl   c                   @     e Zd ZdddZdS )	_CuDFDataFramer[   r   r^   rC   c                 O  rD   rE   rF   rG   r[   r^   rF   rF   rH   to_pylibcudfb   rJ   z_CuDFDataFrame.to_pylibcudfNr[   r   r^   r   rC   r   rb   rc   rd   rt   rF   rF   rF   rH   rr   a       rr   c                   @  rq   )	_CuDFSeriesr[   r   r^   rC   c                 O  rD   rE   rF   rs   rF   rF   rH   rt   e   rJ   z_CuDFSeries.to_pylibcudfNru   rv   rF   rF   rF   rH   rx   d   rw   rx   c                   @  s4   e Zd ZdddZdddZdd	d
ZdddZdS )_NativeIbisr[   r   r^   rC   c                 O  rD   rE   rF   rs   rF   rF   rH   sqlh   rJ   z_NativeIbis.sqlc                 O  rD   rE   rF   rs   rF   rF   rH   __pyarrow_result__i   rJ   z_NativeIbis.__pyarrow_result__c                 O  rD   rE   rF   rs   rF   rF   rH   __pandas_result__j   rJ   z_NativeIbis.__pandas_result__c                 O  rD   rE   rF   rs   rF   rF   rH   __polars_result__k   rJ   z_NativeIbis.__polars_result__Nru   )rb   rc   rd   rz   r{   r|   r}   rF   rF   rF   rH   ry   g   s
    


ry   c                   @  rk   )_ModinDataFramerm   _pandas_classNro   rF   rF   rF   rH   r~   m   rp   r~   c                   @  rk   )_ModinSeriesztype[pd.Series[Any]]r   Nro   rF   rF   rF   rH   r   p   rp   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_CuDFDataFrame | _CuDFSeries_NativeCuDFz+pd.Series[Any] | _CuDFSeries | _ModinSeries_NativePandasLikeSeriesz/pd.DataFrame | _CuDFDataFrame | _ModinDataFrame_NativePandasLikeDataFramez3_NativePandasLikeDataFrame |_NativePandasLikeSeries_NativePandasLiker-   _NativeSQLFramezpyspark_sql.DataFrame_NativePySparkPySparkConnectDataFrame_NativePySparkConnectz8_NativeSQLFrame | _NativePySpark | _NativePySparkConnect_NativeSparkLikezo_NativePolars | _NativeArrow | _NativePandasLike | _NativeSparkLike | _NativeDuckDB | _NativeDask | _NativeIbisNativeKnownz0NativeDataFrame | NativeSeries | NativeLazyFrameNativeUnknownzNativeKnown | NativeUnknown	NativeAny	Namespacec                      s  e Zd ZU ded< ejZded< dZdd	Zd[ fddZd\ddZ	e
d]ddZe
d^ddZe
d_ddZeed`ddZeedad"dZeedbd%dZeedcd(dZeeddd+dZeeded.dZeedfd1dZeedgd4dZeedhd7dZedid;dZeedjd>d?ZeedkdBd?ZeedldDd?ZeedmdFd?ZeedndHd?ZeedodJd?ZeedpdLd?ZeedqdOd?ZeedrdRd?ZeedsdUd?ZeedtdWd?ZedudYd?Z  ZS )vr   r   _compliant_namespacezClassVar[Version]_version	namespacerC   Nonec                C  s
   || _ d S rE   r   )rG   r   rF   rF   rH   __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   r   typerb   	TypeError)clsr   r[   r^   msg	__class__rF   rH   r      s
   

zNamespace.__init_subclass__strc                 C  s   dt | jj dS )Nz
Namespace[])r   	compliantrb   rP   rF   rF   rH   __repr__   s   zNamespace.__repr__c                 C     | j S rE   r   rP   rF   rF   rH   r         zNamespace.compliantr   c                 C  s   | j jS rE   )r   _implementationrP   rF   rF   rH   implementation   s   zNamespace.implementationc                 C  r   rE   )r   rP   rF   rF   rH   r      r   zNamespace.versionbackendr7   Namespace[PandasLikeNamespace]c                C  rD   rE   rF   r   r   rF   rF   rH   from_backend   r`   zNamespace.from_backendr8   Namespace[PolarsNamespace]c                C  rD   rE   rF   r   rF   rF   rH   r      r`   r0   Namespace[ArrowNamespace]c                C  rD   rE   rF   r   rF   rF   rH   r      r`   r9   Namespace[SparkLikeNamespace]c                C  rD   rE   rF   r   rF   rF   rH   r      r`   r3   Namespace[DuckDBNamespace]c                C  rD   rE   rF   r   rF   rF   rH   r      r`   r2   Namespace[DaskNamespace]c                C  rD   rE   rF   r   rF   rF   rH   r      r`   r5   Namespace[IbisNamespace]c                C  rD   rE   rF   r   rF   rF   rH   r      r`   r4   r?   c                C  rD   rE   rF   r   rF   rF   rH   r      r`   IntoBackend[Backend] Namespace[CompliantNamespaceAny]c                C  rD   rE   rF   r   rF   rF   rH   r         r   type[Namespace[Any]]Namespace[Any]c                C  s2  t |}| }| j}| r ddlm} |||d}| |S | r3ddlm	} ||d}| |S |
 rFddlm} ||d}| |S | rZddlm}	 |	||d}| |S | rmddlm}
 |
|d}| |S | rdd	lm} ||d}| |S | rdd
lm} ||d}| |S d}t|)aO  Instantiate from native namespace module, string, or Implementation.

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

        Examples:
            >>> from narwhals._namespace import Namespace
            >>> Namespace.from_backend("polars")
            Namespace[PolarsNamespace]
        r   r)   )r   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   implbackend_versionr   r*   nsr,   r"   r/   r&   r$   r(   r   rF   rF   rH   r      sB   





nativer   c                C  rD   rE   rF   r   r   rF   rF   rH   from_native_object  r   zNamespace.from_native_objectr   <Namespace[PandasLikeNamespace[pd.DataFrame, pd.Series[Any]]]c                C  rD   rE   rF   r   rF   rF   rH   r     r   r   c                C  rD   rE   rF   r   rF   rF   rH   r     r`   r   c                C  rD   rE   rF   r   rF   rF   rH   r     r   r   c                C  rD   rE   rF   r   rF   rF   rH   r     r   rl   c                C  rD   rE   rF   r   rF   rF   rH   r   !  r`   ry   c                C  rD   rE   rF   r   rF   rF   rH   r   %  r`   r   =Namespace[PandasLikeNamespace[_ModinDataFrame, _ModinSeries]]c                C  rD   rE   rF   r   rF   rF   rH   r   )  r   r   ;Namespace[PandasLikeNamespace[_CuDFDataFrame, _CuDFSeries]]c                C  rD   rE   rF   r   rF   rF   rH   r   /  r   r   (Namespace[PandasLikeNamespace[Any, Any]]c                C  rD   rE   rF   r   rF   rF   rH   r   5  r   r   c                C  rD   rE   rF   r   rF   rF   rH   r   ;  r   r   c                C  s   t |rtj}nZt|rtj}nRt|rtj}nJt|r.t|r#tj	n	t
|r*tjntj}n4t|r6tj}n,t|r>tj}n$t|rFtj}nt|rNtj}nt|rVtj}ndt|j}t|| |S )NzUnsupported type: )is_native_polarsr   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   rd   r   r   )r   r   r   r   rF   rF   rH   r   A  s4   
)r   r   rC   r   )r[   r   r   r   r^   r   rC   r   )rC   r   )rC   r   )rC   r   )rC   r   )r   r7   rC   r   )r   r8   rC   r   )r   r0   rC   r   )r   r9   rC   r   )r   r3   rC   r   )r   r2   rC   r   )r   r5   rC   r   )r   r4   rC   r?   )r   r   rC   r   )r   r   r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   rl   rC   r   )r   ry   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   r   r   rC   r   )rb   rc   rd   re   r   MAINr   r   r   r   rf   r   r   r   r
   classmethodr   r   __classcell__rF   rF   r   rH   r      s   
 

	3objr   rC   TypeIs[_NativePolars]c                 C  s$   t   }d uot| |j|j|jfS rE   )r   r   r   Series	LazyFrame)r   plrF   rF   rH   r   d  s   r   TypeIs[_NativeArrow]c                 C      t   }d uot| |j|jfS rE   )r   r   TableChunkedArray)r   parF   rF   rH   r   j     r   TypeIs[_NativeDask]c                 C     t | S rE   )r   r   rF   rF   rH   r   p     r   z_Guard[_NativeDuckDB]r   z_Guard[_NativeSQLFrame]r   z_Guard[_NativePySpark]is_native_pysparkz_Guard[_NativePySparkConnect]r   TypeIs[_NativePandas]c                 C  r   rE   )r   r   r   r   )r   pdrF   rF   rH   r   z  s    r   TypeIs[_NativeModin]c                 C  r   rE   )r   r   r   r   )r   mpdrF   rF   rH   r   ~  r   r   TypeIs[_NativeCuDF]c                 C  r   rE   )r   r   r   r   )r   cudfrF   rF   rH   r     r   r   TypeIs[_NativePandasLike]c                 C     t | pt| pt| S rE   )r   r   r   r   rF   rF   rH   is_native_pandas_like  s   r  TypeIs[_NativeSparkLike]c                 C  r  rE   )r   r   r   r   rF   rF   rH   r     s
   r   TypeIs[_NativeIbis]c                 C  r   rE   )r   r   rF   rF   rH   r     r   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r   )r   r   rC   r  )r   r   rC   r  )r   r   rC   r  )r   r   rC   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   collections.abcr   r   r   duckdbpandasr   polarsr   pyarrowr   pyspark.sqlrz   pyspark_sqlpyspark.sql.connect.dataframer   r   typing_extensionsr   r   r    r   r"   r   r$   r   r&   r   r(   r   r*   r   r,   narwhals._spark_like.dataframer-   r   r/   narwhals._typingr0   r1   r2   r3   r4   r5   r6   r7   r8   r9   narwhals.typingr:   r;   r<   r=   r>   re   r?   r@   rg   rh   rl   rr   rx   ry   r~   r   r   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   rF   rF   rF   rH   <module>   s    (40

 
Y






