
    zh2                       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 ddl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. 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@ dd(l>mAZA dd)l>mBZB  e
d*      ZCd+ZDd,eEd-<   ed.   ZFd,eEd/<   ed0   ZGd,eEd1<   ed2   ZHd,eEd3<   ed4   ZId,eEd5<   ed6   ZJd,eEd7<   ed8   ZKd,eEd9<   d:ZLd,eEd;<   d<ZMd,eEd=<   d>ZNd,eEd?<   d@ZOd,eEdA<   eeFej                  f   ZQd,eEdB<   eeGej                  f   ZSd,eEdC<   eeHej                  f   ZUd,eEdD<   eeIej                  f   ZWd,eEdE<   eeJej                  ej                  ej                  f   Z[d,eEdF<   eeKej                  ej                  ej                  f   Z_d,eEdG<   dHZ`d,eEdI<   dJZad,eEdK<   dLZbd,eEdM<   dNZcd,eEdO<   dPZdd,eEdQ<   dRZed,eEdS<   dTZfd,eEdU<   eej                  ej                  ej                  ej                  ej                  f   Zgd,eEdV<    G dW dXe	      Zh G dY dZe	      Zi G d[ d\e	      Zj G d] d^e	      Zkd_Zld,eEd`<   daZmd,eEdb<   dcZnd,eEdd<   deZod,eEdf<   dgZpd,eEdh<   diZqd,eEdj<   dkZrd,eEdl<   dmZsd,eEdn<   doZtd,eEdp<   dqZud,eEdr<   dsZvd,eEdt<   duZwd,eEdv<   dwZxd,eEdx<   dygZy G dz dyee         Zzdd{Z{dd|Z|dd}Z}eZ~d~eEd<   eZdeEd<   eZdeEd<   eZdeEd<   ddZddZddZddZddZy)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_connect_dataframe)is_pyspark_dataframe)is_sqlframe_dataframe)Implementation)Version)
ModuleType)ClassVarN)	DataFrame)	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<   y)_NativeDasktype[pd.DataFrame]_partition_typeN__name__
__module____qualname____annotations__     Q/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_namespace.pyrU   rU   c   s    ++r^   rU   c                      e Zd ZddZy)_NativeCuDFc                     y Nr]   )selfargskwdss      r_   to_pylibcudfz_NativeCuDF.to_pylibcudfg   s    r^   N)re   r   rf   r   returnr   )rY   rZ   r[   rg   r]   r^   r_   ra   ra   f   s    Cr^   ra   c                      e Zd ZU ded<   y)_ModinDataFramerV   _pandas_classNrX   r]   r^   r_   rj   rj   i   s    ))r^   rj   c                      e Zd ZU ded<   y)_ModinSeriesztype[pd.Series[Any]]rk   NrX   r]   r^   r_   rm   rm   l   s    ++r^   rm   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_NativeSparkLikeza_NativePolars | _NativeArrow | _NativePandasLike | _NativeSparkLike | _NativeDuckDB | _NativeDaskNativeKnownz<NativeFrame | NativeSeries | NativeLazyFrame | DataFrameLikeNativeUnknownzNativeKnown | NativeUnknown	NativeAny	Namespacec                      e Zd ZU ded<   ej
                  Zded<   ddZd fdZddZ	e
dd       Ze
d d	       Ze
d!d
       Zeed"d              Zeed#d              Zeed$d              Zeed%d              Zeed&d              Zeed'd              Zeed(d              Zeed)d              Ze	 	 	 	 	 	 d*d       Zee	 	 	 	 d+d              Zee	 	 	 	 d,d              Zeed-d              Zee	 	 	 	 d.d              Zee	 	 	 	 d/d              Zeed0d              Zee	 	 	 	 d1d              Ze	 	 	 	 	 	 d2d       Z xZS )3r|   r   _compliant_namespacezClassVar[Version]_versionc                   || _         y rc   r~   )rd   	namespaces     r_   __init__zNamespace.__init__   s
    $-!r^   c                   t        |   |i | t        |t              r|| _        y dt         dt        |      j                  }t        |      )Nz	Expected z	 but got )super__init_subclass__
isinstancer   r   typerY   	TypeError)clsversionre   rf   msg	__class__s        r_   r   zNamespace.__init_subclass__   sM    !4040gw'"CLgYiW0F0F/IJCC. r^   c                H    dt        | j                        j                   dS )Nz
Namespace[])r   	compliantrY   rd   s    r_   __repr__zNamespace.__repr__   s!    D099:!<<r^   c                    | j                   S rc   r   r   s    r_   r   zNamespace.compliant   s    (((r^   c                .    | j                   j                  S rc   )r   _implementationr   s    r_   implementationzNamespace.implementation   s    ~~---r^   c                    | j                   S rc   )r   r   s    r_   r   zNamespace.version   s    }}r^   c                    y rc   r]   r   backends     r_   from_backendzNamespace.from_backend       UXr^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend       MPr^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend   s    KNr^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend   s    SVr^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend   r   r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend   s    ILr^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend   s    NQr^   c                    y rc   r]   r   s     r_   r   zNamespace.from_backend       WZr^   c                  t        j                  |      }|j                         }| j                  }|j	                         rddlm}  ||||      }n|j                         rddlm	}  |||      }n|j                         rddlm}  |||      }nq|j                         rddlm}	  |	|||      }nO|j!                         rddlm}
  |
||      }n.|j'                         rdd	lm}  |||      }nd
}t-        |       | |      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"   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#   AssertionError)r   r   implr   r   r'   nsr)   r!   r,   r%   r#   r   s                r_   r   zNamespace.from_backend   s    " **73//1,, K$#_gB ^^B 'RB__@QB!I##_gB ^^B 'RB\\^>PB0C %%2wr^   c                    y rc   r]   r   natives     r_   from_native_objectzNamespace.from_native_object        &)r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_native_object  s     *-r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_native_object  r   r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_native_object  s     ),r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_native_object  r   r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_native_object  r   r^   c                    y rc   r]   r   s     r_   r   zNamespace.from_native_object  s     ,/r^   c               d   t        |      r| j                  t        j                        S t	        |      r| j                  t        j
                        S t        |      r| j                  t        j                        S t        |      r]| j                  t        |      rt        j                        S t        |      rt        j                        S t        j                        S t        |      r| j                  t        j                        S t!        |      r| j                  t        j"                        S t%        |      r| j                  t        j&                        S t)        |      r| j                  t        j*                        S dt-        |      j.                  }t1        |      )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MODINr   r[   r   )r   r   r   s      r_   r   zNamespace.from_native_object!  sb    F###N$9$9::f%##N$9$9::V$##N$:$:;;!&)##%f- ''  -V4 $33 
 $++  F###N$7$788f%##N$9$9::F###N$7$788V$##N$8$899&tF|'@'@&CDCC. r^   )r   r   rh   None)re   r   r   r   rf   r   rh   r   )rh   str)rh   r   )rh   r   )rh   r   )r   rJ   rh   Namespace[PandasLikeNamespace])r   rF   rh   Namespace[PolarsNamespace])r   rG   rh   Namespace[ArrowNamespace])r   rK   rh   Namespace[SparkLikeNamespace])r   rI   rh   Namespace[DuckDBNamespace])r   rH   rh   Namespace[DaskNamespace])r   rM   rh   rR   )r   r   rh    Namespace[CompliantNamespaceAny])r   type[Namespace[Any]]r   rQ   rh   Namespace[Any])r   rn   rh   r   )r   rs   rh   r   )r   ro   rh   r   )r   rx   rh   r   )r   rp   rh   r   )r   rU   rh   r   )r   rz   rh   r   )r   r   r   r{   rh   r   )rY   rZ   r[   r\   r   MAINr   r   r   r   propertyr   r   r   r   classmethodr   r   __classcell__)r   s   @r_   r|   r|      st   00"),,H..!= ) ) . .   X  XP  PN  NV  VP  PL  LQ  QZ  Z4!4,74	4 4l )")	#)  ) -&-	'-  - Z  Z,%,	&,  , )")	#)  ) X  X/"/	)/  / !!!+4!	! !r^   c                |    t               x}d uxr- t        | |j                  |j                  |j                  f      S rc   )r   r   r   Series	LazyFrame)objpls     r_   r   r   @  s:    ,Bt+ 
bllBIIr||41 r^   c                f    t               x}d uxr" t        | |j                  |j                  f      S rc   )r   r   TableChunkedArray)r   pas     r_   r   r   F  s4    -B, bhh(2 r^   c                    t        |       S rc   r   r   s    r_   r   r   L  s    S!!r^   z_Guard[_NativeDuckDB]r   z_Guard[_NativeSQLFrame]r   z_Guard[_NativePySpark]is_native_pysparkz_Guard[_NativePySparkConnect]r   c                f    t               x}d uxr" t        | |j                  |j                  f      S rc   )r   r   r   r   )r   pds     r_   r   r   V  s-    ,Bt+Z
3ryy@Y0ZZr^   c                f    t               x}d uxr" t        | |j                  |j                  f      S rc   )r   r   r   r   )r   mpds     r_   r   r   Z  s4    ;Ct+ 
cmmSZZ(1 r^   c                f    t               x}d uxr" t        | |j                  |j                  f      S rc   )r   r   r   r   )r   r<   s     r_   r   r   `  s4    JDt+ 
dnndkk*1 r^   c                L    t        |       xs t        |       xs t        |       S rc   )r   r   r   r   s    r_   is_native_pandas_liker   f  s#    L!4L8Lr^   c                L    t        |       xs t        |       xs t        |       S rc   )r   r   r   r   s    r_   r   r   l  s)    3 	*S!	*$S)r^   )r   r   rh   zTypeIs[_NativePolars])r   r   rh   zTypeIs[_NativeArrow])r   r   rh   zTypeIs[_NativeDask])r   r   rh   zTypeIs[_NativePandas])r   r   rh   zTypeIs[_NativeModin])r   r   rh   zTypeIs[_NativeCuDF])r   r   rh   zTypeIs[_NativePandasLike])r   r   rh   zTypeIs[_NativeSparkLike])__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   r   narwhals.utilsr   r   typesr   r   r9   r;   r   r3   r   r5   r   pyspark.sqlsqlpyspark_sqlpyspark.sql.connect.dataframer   rv   typing_extensionsr   r   r   r!   r   r#   r   r%   r   r'   r   r)   narwhals._spark_like.dataframer*   r   r,   narwhals.typingr-   r.   r/   r0   r1   r2   r\   r4   r6   r8   r:   r>   rA   rB   rC   rD   rE   r   rF   r   rG   r   rH   r   rI   r   r   r   rJ   r   r   r   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rU   ra   rj   rm   rn   ro   rp   rq   rr   rs   rt   ru   rw   rx   ry   rz   r{   __all__r|   r   r   r   r   r   r   r   r   r   r   r   r   r]   r^   r_   <module>r
     s   8 "          < = * + , , - 3 4 > 6 7 ) " %R+(86:C:@A-+/,A4FI4 *GY*	*FI*vE9& *GY*$%>?K?#$9:J	:2J	25M959Iy93L)3)>)> >?FI?v~'='==>E9>e^%8%889D)9)>)> >?FI?#^**N,?,?AUAUUJ	  #&&	(Iy  0Iy/2L)25Hi50K0;K;HKH (A9  A,3		-	 ,h ,Dh D*( *,x ,  IM9H?L)?8M98>M9>>L)>#OyO!4OY4 7NI7'@9@B i  AK  AF 9  9Iy8-x!./ x!v" += ' <.C + C,@ ) @;W 8 W[r^   