§
    cŠtj‰^  ã                  óÆ  — d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZ d d	lmZmZmZmZ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*m+Z+m,Z, e	r@d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF  ed¦  «        ZGeHeIeJeKeLeMefZNejO        ejP        ejQ        fZReddœd^d„¦   «         ZSeddœd_d„¦   «         ZSeddœd`d „¦   «         ZSedad#„¦   «         ZSd$dœdbd'„ZSedcd,„¦   «         ZTeddd.„¦   «         ZTeded1„¦   «         ZTedfd4„¦   «         ZTedgd5„¦   «         ZTedhd6„¦   «         ZTedid7„¦   «         ZTedjd8„¦   «         ZTedkd;„¦   «         ZTedld>„¦   «         ZTedmd@„¦   «         ZTedndE„¦   «         ZTd$d$d$ddFœdodI„ZTd$d$dJœdpdO„ZUd$d$dJœdqdP„ZVdrdS„ZWdrdT„ZX	 dsdUd$d$dUdFœdtdY„ZYdud[„ZZdvd\„Z[g d]¢Z\dS )wé    )ÚannotationsN)ÚDecimal©Úwraps)ÚTYPE_CHECKINGÚAnyÚLiteralÚTypeVarÚoverload)Úplugins)ÚEPOCHÚMS_PER_SECOND)Úis_native_arrowÚis_native_pandas_likeÚis_native_polarsÚis_native_spark_like)ÚImplementationÚVersionÚhas_native_namespaceÚis_compliant_dataframeÚis_compliant_lazyframeÚis_compliant_series)Úget_dask_exprÚ	get_numpyÚ
get_pandasÚis_cupy_scalarÚis_dask_dataframeÚis_duckdb_relationÚis_ibis_tableÚis_numpy_scalarÚis_pandas_like_dataframeÚis_polars_lazyframeÚis_polars_seriesÚis_pyarrow_scalarÚis_pyarrow_table)ÚCallable)ÚUnpack)ÚAllowAnyÚ	AllowLazyÚAllowSeriesÚExcludeSeriesÚ
OnlySeriesÚPassThroughUnknown©Ú	DataFrameÚ	LazyFrame©ÚSeries)	Ú
DataFrameTÚFrameÚIntoDataFrameTÚ	IntoFrameÚIntoLazyFrameTÚ
IntoSeriesÚIntoSeriesTÚ
LazyFrameTÚSeriesTÚT.©Úpass_throughÚnarwhals_objectúDataFrame[IntoDataFrameT]r>   úLiteral[False]Úreturnr5   c               ó   — d S ©N© ©r?   r>   s     úP/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/translate.pyÚ	to_nativerH   I   ó	   € ð �Só    úLazyFrame[IntoLazyFrameT]r7   c               ó   — d S rD   rE   rF   s     rG   rH   rH   M   rI   rJ   úSeries[IntoSeriesT]r9   c               ó   — d S rD   rE   rF   s     rG   rH   rH   Q   s	   € ð �#rJ   r   Úboolc               ó   — d S rD   rE   rF   s     rG   rH   rH   U   s   € ØCFÀ3rJ   FúKDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT]ú3IntoDataFrameT | IntoLazyFrameT | IntoSeriesT | Anyc               óÖ   — ddl m} ddlm} t	          | |¦  «        r| j        j        S t	          | |¦  «        r| j        j        S |s"dt          | ¦  «        › d�}t          |¦  «        ‚| S )a]  Convert Narwhals object to native one.

    Arguments:
        narwhals_object: Narwhals object.
        pass_through: Determine what happens if `narwhals_object` isn't a Narwhals class

            - `False` (default): raise an error
            - `True`: pass object through as-is

    Returns:
        Object of class that user started with.
    r   )Ú	BaseFramer1   zExpected Narwhals object, got ú.)Únarwhals.dataframerT   Únarwhals.seriesr2   Ú
isinstanceÚ_compliant_frameÚ_native_frameÚ_compliant_seriesÚnativeÚtypeÚ	TypeError)r?   r>   rT   r2   Úmsgs        rG   rH   rH   Y   s–   € ð& -Ð,Ð,Ð,Ð,Ð,Ø&Ð&Ð&Ð&Ð&Ð&å�/ 9Ñ-Ô-ð >ØÔ/Ô=Ð=Ý�/ 6Ñ*Ô*ð 8ØÔ0Ô7Ð7àð ØG­t°OÑ/DÔ/DÐGÐGÐGˆÝ˜‰nŒnÐØÐrJ   Únative_objectr;   ÚkwdsúUnpack[OnlySeries]c                ó   — d S rD   rE   ©r`   ra   s     rG   Úfrom_nativere   z   s   € ØPSÐPSrJ   úUnpack[AllowSeries]c                ó   — d S rD   rE   rd   s     rG   re   re   |   s   € ØQTÐQTrJ   r3   úUnpack[ExcludeSeries]c                ó   — d S rD   rE   rd   s     rG   re   re   ~   s	   € ð �rJ   r:   úUnpack[AllowLazy]c                ó   — d S rD   rE   rd   s     rG   re   re   ƒ   s   € ØUXÐUXrJ   c                ó   — d S rD   rE   rd   s     rG   re   re   …   ó	   € ð !$ rJ   c                ó   — d S rD   rE   rd   s     rG   re   re   ‰   ó	   € ð ˜#rJ   c                ó   — d S rD   rE   rd   s     rG   re   re   �   ro   rJ   c                ó   — d S rD   rE   rd   s     rG   re   re   ‘   rm   rJ   úIntoDataFrameT | IntoSeriesTú/DataFrame[IntoDataFrameT] | Series[IntoSeriesT]c                ó   — d S rD   rE   rd   s     rG   re   re   •   s	   € ð 7:°crJ   ú-IntoDataFrameT | IntoLazyFrameT | IntoSeriesTúUnpack[AllowAny]c                ó   — d S rD   rE   rd   s     rG   re   re   ™   s   € ð SVÐRUrJ   úUnpack[PassThroughUnknown]c                ó   — d S rD   rE   rd   s     rG   re   re   �   s   € ØLOÈCrJ   Ú
eager_onlyÚseries_onlyÚallow_seriesúbool | Nonec               ó   — d S rD   rE   ©r`   r>   rz   r{   r|   s        rG   re   re       s	   € ð ˆ#rJ   ©r>   rz   r{   r|   úJIntoLazyFrameT | IntoDataFrameT | IntoSeriesT | IntoFrame | IntoSeries | TúOLazyFrame[IntoLazyFrameT] | DataFrame[IntoDataFrameT] | Series[IntoSeriesT] | Tc          	     óB   — t          | ||d||t          j        ¬¦  «        S )a�  Convert `native_object` to Narwhals Dataframe, Lazyframe, or Series.

    Arguments:
        native_object: Raw object from user.
            Depending on the other arguments, input object can be

            - a Dataframe / Lazyframe / Series supported by Narwhals (pandas, Polars, PyArrow, ...)
            - an object which implements `__narwhals_dataframe__`, `__narwhals_lazyframe__`,
              or `__narwhals_series__`
        pass_through: Determine what happens if the object can't be converted to Narwhals

            - `False` (default): raise an error
            - `True`: pass object through as-is
        eager_only: Whether to only allow eager objects

            - `False` (default): don't require `native_object` to be eager
            - `True`: only convert to Narwhals if `native_object` is eager
        series_only: Whether to only allow Series

            - `False` (default): don't require `native_object` to be a Series
            - `True`: only convert to Narwhals if `native_object` is a Series
        allow_series: Whether to allow Series (default is only Dataframe / Lazyframe)

            - `False` or `None` (default): don't convert to Narwhals if `native_object` is a Series
            - `True`: allow `native_object` to be a Series

    Returns:
        DataFrame, LazyFrame, Series, or original object, depending
            on which combination of parameters was passed.
    F©r>   rz   Úeager_or_interchange_onlyr{   r|   Úversion)Ú_from_native_implr   ÚMAINr   s        rG   re   re   ©   s3   € õV ØØ!ØØ"'ØØ!Ý”ðñ ô ð rJ   )r>   rz   Úcompliant_objectr…   r†   r   c               ó„  — t          | ¦  «        rS|r|sd}t          |¦  «        ‚| S |                     |                      ¦   «                              |¦  «        d¬¦  «        S t          | ¦  «        rl|r|sd}t          |¦  «        ‚| S |s|r|sd}t          |¦  «        ‚| S |                     |                      ¦   «                              |¦  «        d¬¦  «        S t          | ¦  «        rS|s|sd}t          |¦  «        ‚| S | 	                    |  
                    ¦   «                              |¦  «        d¬¦  «        S d S )Nz,Cannot only use `series_only` with dataframeÚfull©Úlevelz,Cannot only use `series_only` with lazyframezJCannot only use `eager_only` or `eager_or_interchange_only` with lazyframeú4Please set `allow_series=True` or `series_only=True`)r   r^   Ú	dataframeÚ__narwhals_dataframe__Ú_with_versionr   Ú	lazyframeÚ__narwhals_lazyframe__r   ÚseriesÚ__narwhals_series__)r‰   r>   rz   r…   r{   r|   r†   r_   s           rG   Ú_translate_if_compliantr–   ß   s›  € õ Ð.Ñ/Ô/ð 
Øð 	$Øð %ØD�Ý ‘n”nÐ$Ø#Ð#Ø× Ò Ø×3Ò3Ñ5Ô5×CÒCÀGÑLÔLÐTZð !ñ 
ô 
ð 	
õ Ð.Ñ/Ô/ð 
Øð 	$Øð %ØD�Ý ‘n”nÐ$Ø#Ð#Øð 	$Ð2ð 	$Øð %Øb�Ý ‘n”nÐ$Ø#Ð#Ø× Ò Ø×3Ò3Ñ5Ô5×CÒCÀGÑLÔLÐTZð !ñ 
ô 
ð 	
õ Ð+Ñ,Ô,ð 
Øð 	$Øð %ØL�Ý ‘n”nÐ$Ø#Ð#Ø�~Š~Ø×0Ò0Ñ2Ô2×@Ò@ÀÑIÔIÐQWð ñ 
ô 
ð 	
ð ˆ4rJ   c          	     óä  — ddl m} ddlm}m}	 ddlm}
 t          | ||	f¦  «        re|sc| j        |u r| S |  	                    ¦   «         }|j
                             |¦  «        j                             |¦  «                             ¦   «         S t          | |
¦  «        rg|s|rc| j        |u r| S |  	                    ¦   «         }|j
                             |¦  «        j                             |¦  «                             ¦   «         S |r|du rd}t          |¦  «        ‚d}|r|rd}t          |¦  «        ‚t!          | ||||||¬	¦  «        x}	 �|S t#          | ¦  «        rÍ|r9t%          | ¦  «        s*|s&d
t'          | ¦  «        j        › �}t+          |¦  «        ‚| S |s|r$t-          | ¦  «        r|sd}t+          |¦  «        ‚| S |s$t%          | ¦  «        r|sd}t+          |¦  «        ‚| S |j
                             | ¦  «        j                             | ¦  «                             ¦   «         S t/          | ¦  «        r—t1          | ¦  «        r-|r*|s&d
t'          | ¦  «        j        › �}t+          |¦  «        ‚| S n|s|sd}t+          |¦  «        ‚| S |j
                             | ¦  «        j                             | ¦  «                             ¦   «         S t3          | ¦  «        r—t5          | ¦  «        r-|r*|s&d
t'          | ¦  «        j        › �}t+          |¦  «        ‚| S n|s|sd}t+          |¦  «        ‚| S |j
                             | ¦  «        j                             | ¦  «                             ¦   «         S t7          | ¦  «        r¿|r|sd}t+          |¦  «        ‚| S |s|r|sd}t+          |¦  «        ‚| S t8          j                             ¦   «         dk    rt?          ¦   «         €d}tA          |¦  «        ‚|j
         !                    t8          j        ¦  «        j                             | ¦  «                             ¦   «         S tE          | ¦  «        r]|s|r|sd}t+          |¦  «        ‚| S |j
                             | ¦  «        j                             | ¦  «                             ¦   «         S tG          | ¦  «        r]|s|r|sd}t+          |¦  «        ‚| S |j
                             | ¦  «        j                             | ¦  «                             ¦   «         S tI          | ¦  «        rj|j
                             | ¦  «        }|s|s|r|sd|j%        › d�}t+          |¦  «        ‚| S |j                             | ¦  «                             ¦   «         S |tL          j'        u rT || ¦  «        rIddl m(} |s|r|sd}t+          |¦  «        ‚| S tL          j'         )                     || ¦  «        d¬¦  «        S tU          j        | |¦  «        x}�t!          |||||||¬	¦  «        S |sLdt'          | ¦  «        › �}tU          j+        t'          | ¦  «        ¦  «        x}r|d|z   z  }t+          |¦  «        ‚| S )Nr   )Úsupports_dataframe_interchanger.   r1   FzJInvalid parameter combination: `series_only=True` and `allow_series=False`TzUInvalid parameter combination: `eager_only=True` and `eager_or_interchange_only=True`r„   z#Cannot only use `series_only` with zQCannot only use `eager_only` or `eager_or_interchange_only` with polars.LazyFramerŽ   z1Cannot only use `series_only` with dask DataFramezOCannot only use `eager_only` or `eager_or_interchange_only` with dask DataFrame)iè  é   é   zPlease install dask-exprzNCannot only use `series_only=True` or `eager_only=False` with DuckDBPyRelationzHCannot only use `series_only=True` or `eager_only=False` with ibis.TablezPCannot only use `series_only`, `eager_only` or `eager_or_interchange_only` with z
 DataFrame)ÚInterchangeFramezhCannot only use `series_only=True` or `eager_only=False` with object which only implements __dataframe__ÚinterchangerŒ   z!Unsupported dataframe type, got: z

),Únarwhals._interchange.dataframer˜   rV   r/   r0   rW   r2   rX   Ú_versionrH   Ú	namespaceÚfrom_native_objectÚ	compliantre   Úto_narwhalsÚ
ValueErrorr–   r   r#   r]   Ú__qualname__r^   r"   r   r!   r   r%   r   r   ÚDASKÚ_backend_versionr   ÚImportErrorÚfrom_backendr   r   r   Úimplementationr   ÚV1r›   r�   r   Ú_show_suggestions)r`   r>   rz   r…   r{   r|   r†   r˜   r/   r0   r2   Úreal_native_objectr_   Ú
translatedÚns_sparkr›   r‰   Úhints                     rG   r‡   r‡     sÍ  € ð OÐNÐNÐNÐNÐNØ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø&Ð&Ð&Ð&Ð&Ð&õ �- )¨YÐ!7Ñ8Ô8ð 	
Àð 	
ØÔ! WÐ,Ð,Ø Ð à*×4Ò4Ñ6Ô6ÐàÔ×0Ò0Ð1CÑDÔDÜ—{’{Ð#5Ñ6Ô6ßŠ[‰]Œ]ð	
õ
 �- Ñ(Ô(ð 	
¨kð 	
¸\ð 	
ØÔ! WÐ,Ð,Ø Ð à*×4Ò4Ñ6Ô6ÐàÔ×0Ò0Ð1CÑDÔDÜ—{’{Ð#5Ñ6Ô6ßŠ[‰]Œ]ð	
ð ð Ø˜5Ð Ð Ø^ˆCÝ˜S‘/”/Ð!ØˆØð Ð/ð ØeˆÝ˜‰oŒoÐõ .ØØ%Ø!Ø&?Ø#Ø%Øð
ñ 
ô 
ð 	
ˆ
ð ð
ð Ðõ ˜Ñ&Ô&ð 
Øð 	!Õ/°Ñ>Ô>ð 	!Øð %Ø^½DÀÑ<OÔ<OÔ<\Ð^Ð^�Ý ‘n”nÐ$Ø Ð Øð 	!Ð3ð 	!Õ9LØñ:
ô :
ð 	!ð  ð %Øi�Ý ‘n”nÐ$Ø Ð Øð 	!Õ"2°=Ñ"AÔ"Að 	!Øð %ØL�Ý ‘n”nÐ$Ø Ð àÔ×0Ò0°Ñ?Ô?Ü—{’{ =Ñ1Ô1ßŠ[‰]Œ]ð	
õ ˜]Ñ+Ô+ð 
Ý# MÑ2Ô2ð 
	!Øð %Ø#ð )ØbÅÀ]Ñ@SÔ@SÔ@`ÐbÐb�CÝ# C™.œ.Ð(Ø$Ð$ð	%ð
 ð 	!Øð %ØL�Ý ‘n”nÐ$Ø Ð àÔ×0Ò0°Ñ?Ô?Ü—{’{ =Ñ1Ô1ßŠ[‰]Œ]ð	
õ �}Ñ%Ô%ð 
Ý˜MÑ*Ô*ð 
	!Øð %Ø#ð )ØbÅÀ]Ñ@SÔ@SÔ@`ÐbÐb�CÝ# C™.œ.Ð(Ø$Ð$ð	%ð
 ð 	!Øð %ØL�Ý ‘n”nÐ$Ø Ð àÔ×0Ò0°Ñ?Ô?Ü—{’{ =Ñ1Ô1ßŠ[‰]Œ]ð	
õ ˜Ñ'Ô'ð 
Øð 	!Øð %ØI�Ý ‘n”nÐ$Ø Ð Øð 	!Ð2ð 	!Øð %Øg�Ý ‘n”nÐ$Ø Ð åÔ×0Ò0Ñ2Ô2°mÒCÐCÝ‘”Ð'à,ˆCÝ˜cÑ"Ô"Ð"àÔ×*Ò*­>Ô+>Ñ?Ô?Ü—{’{ =Ñ1Ô1ßŠ[‰]Œ]ð	
õ ˜-Ñ(Ô(ð 

Øð 	!˜ð 	!Øð %Øf�Ý ‘n”nÐ$Ø Ð àÔ×0Ò0°Ñ?Ô?Ü—{’{ =Ñ1Ô1ßŠ[‰]Œ]ð	
õ �]Ñ#Ô#ð 

Øð 	!˜ð 	!Øð %Ø`�Ý ‘n”nÐ$Ø Ð àÔ×0Ò0°Ñ?Ô?Ü—{’{ =Ñ1Ô1ßŠ[‰]Œ]ð	
õ ˜MÑ*Ô*ð 
KØÔ$×7Ò7¸ÑFÔFˆØð 	!˜*ð 	!Ð(Að 	!Øð %ð@Ø$Ô3ð@ð @ð @ð õ   ‘n”nÐ$Ø Ð ØÔ!×-Ò-¨mÑ<Ô<×HÒHÑJÔJÐJð •'”*ÐÐÐ!?Ð!?ÀÑ!NÔ!NÐØDÐDÐDÐDÐDÐDàð 	!˜ð 	!Øð %ðFð õ   ‘n”nÐ$Ø Ð ÝŒz×#Ò#Ð$4Ð$4°]Ñ$CÔ$CÈ=Ð#ÑYÔYÐYå#Ô/°¸wÑGÔGÐGÐÐTÝ&ØØ%Ø!Ø&?Ø#Ø%Øð
ñ 
ô 
ð 	
ð ð ØGµ$°}Ñ2EÔ2EÐGÐGˆÝÔ,­T°-Ñ-@Ô-@ÑAÔAÐAˆ4ð 	!Ø�6˜D‘=Ñ ˆCÝ˜‰nŒnÐØÐrJ   Úobjú,Frame | Series[Any] | IntoFrame | IntoSeriesc                 ó¸   — | sd}t          |¦  «        ‚d„ | D ¦   «         }t          |¦  «        dk    rd|› d�}t          |¦  «        ‚|                     ¦   «         S )aŸ  Get native namespace from object.

    Arguments:
        obj: Dataframe, Lazyframe, or Series. Multiple objects can be
            passed positionally, in which case they must all have the
            same native namespace (else an error is raised).

    Returns:
        Native module.

    Examples:
        >>> import polars as pl
        >>> import pandas as pd
        >>> import narwhals as nw
        >>> df = nw.from_native(pd.DataFrame({"a": [1, 2, 3]}))
        >>> nw.get_native_namespace(df)
        <module 'pandas'...>
        >>> df = nw.from_native(pl.DataFrame({"a": [1, 2, 3]}))
        >>> nw.get_native_namespace(df)
        <module 'polars'...>
    z=At least one object must be passed to `get_native_namespace`.c                ó,   — h | ]}t          |¦  «        ’ŒS rE   )Ú _get_native_namespace_single_obj)Ú.0Úxs     rG   ú	<setcomp>z'get_native_namespace.<locals>.<setcomp>  s!   € Ð?Ð?Ð?°aÕ.¨qÑ1Ô1Ð?Ð?Ð?rJ   rš   z0Found objects with different native namespaces: rU   )r£   ÚlenÚpop)r°   r_   Úresults      rG   Úget_native_namespacer»   é  sk   € ð, ð ØMˆÝ˜‰oŒoÐØ?Ð?¸3Ð?Ñ?Ô?€FÝ
ˆ6�{„{�aÒÐØJÀÐJÐJÐJˆÝ˜‰oŒoÐØ�:Š:‰<Œ<ÐrJ   c                ó¾   — t          | ¦  «        r|                      ¦   «         S t          j        j                             | ¦  «        j                             ¦   «         S rD   )r   Ú__native_namespace__r   rˆ   rŸ   r    r©   Úto_native_namespace)r°   s    rG   r´   r´   	  sU   € õ ˜CÑ Ô ð *Ø×'Ò'Ñ)Ô)Ð)ÝŒ<Ô!×4Ò4Øñô ä×(Ò(Ñ*Ô*ð+rJ   TÚfuncúCallable[..., Any] | NoneúCallable[..., Any]c               ó:   ‡‡‡‡— dˆˆˆˆfd„}| €|S  || ¦  «        S )a¸  Decorate function so it becomes dataframe-agnostic.

    This will try to convert any dataframe/series-like object into the Narwhals
    respective DataFrame/Series, while leaving the other parameters as they are.
    Similarly, if the output of the function is a Narwhals DataFrame or Series, it will be
    converted back to the original dataframe/series type, while if the output is another
    type it will be left as is.
    By setting `pass_through=False`, then every input and every output will be required to be a
    dataframe/series-like object.

    Arguments:
        func: Function to wrap in a `from_native`-`to_native` block.
        pass_through: Determine what happens if the object can't be converted to Narwhals

            - `False`: raise an error
            - `True` (default): pass object through as-is
        eager_only: Whether to only allow eager objects

            - `False` (default): don't require `native_object` to be eager
            - `True`: only convert to Narwhals if `native_object` is eager
        series_only: Whether to only allow Series

            - `False` (default): don't require `native_object` to be a Series
            - `True`: only convert to Narwhals if `native_object` is a Series
        allow_series: Whether to allow Series (default is only Dataframe / Lazyframe)

            - `False` or `None`: don't convert to Narwhals if `native_object` is a Series
            - `True` (default): allow `native_object` to be a Series

    Returns:
        Decorated function.

    Examples:
        Instead of writing

        >>> import narwhals as nw
        >>> def agnostic_group_by_sum(df):
        ...     df = nw.from_native(df, pass_through=True)
        ...     df = df.group_by("a").agg(nw.col("b").sum())
        ...     return nw.to_native(df)

        you can just write

        >>> @nw.narwhalify
        ... def agnostic_group_by_sum(df):
        ...     return df.group_by("a").agg(nw.col("b").sum())
    r¿   rÁ   rB   c                óH   •‡ — t          ‰ ¦  «        dˆˆˆ ˆˆfd„¦   «         }|S )NÚargsr   ÚkwargsrB   c                 ó2  •‡— ˆˆ	ˆˆfd„| D ¦   «         }ˆˆ	ˆˆfd„|                      ¦   «         D ¦   «         }ˆfd„g |¢|                     ¦   «         ¢R D ¦   «         }t          |¦  «        dk    rd}t          |¦  «        ‚ ‰
|i |¤Ž}t	          |‰¬¦  «        S )Nc           	     ó8   •— g | ]}t          |‰‰‰‰¬ ¦  «        ‘ŒS ©r€   ©re   )rµ   Úargr|   rz   r>   r{   s     €€€€rG   ú
<listcomp>zBnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>N  sI   ø€ ð 	ð 	ð 	ð õ ØØ!-Ø)Ø +Ø!-ðñ ô ð	ð 	ð 	rJ   c           
     ó@   •— i | ]\  }}|t          |‰‰‰‰¬ ¦  «        “ŒS rÈ   rÉ   )rµ   ÚnameÚvaluer|   rz   r>   r{   s      €€€€rG   ú
<dictcomp>zBnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<dictcomp>Y  sO   ø€ ð 	ð 	ð 	ñ  �D˜%ð •kØØ!-Ø)Ø +Ø!-ðñ ô ð	ð 	ð 	rJ   c                óJ   •— h | ]}t          |d d¦  «        xŠ¯ ‰¦   «         ’Œ S )r½   N)Úgetattr)rµ   ÚvÚbs     €rG   r·   zAnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<setcomp>d  sG   ø€ ð ð ð àÝ  Ð$:¸DÑAÔAÐA�AðØ�‘”ðð ð rJ   rš   z_Found multiple backends. Make sure that all dataframe/series inputs come from the same backend.r=   )ÚitemsÚvaluesr¸   r£   rH   )rÄ   rÅ   Úargs_nwÚ	kwargs_nwÚbackendsr_   rº   rÓ   r|   rz   r¿   r>   r{   s          @€€€€€rG   Úwrapperz.narwhalify.<locals>.decorator.<locals>.wrapperL  s
  øø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð  ð	ñ 	ô 	ˆGð	ð 	ð 	ð 	ð 	ð 	ð 	ð $*§<¢<¡>¤>ð	ñ 	ô 	ˆIðð ð ð à8˜7Ð8 Y×%5Ò%5Ñ%7Ô%7Ð8Ð8ðñ ô ˆHõ �8‰}Œ}˜qÒ Ð Øw�Ý  ‘o”oÐ%à�T˜7Ð0 iÐ0Ð0ˆFå˜V°,Ð?Ñ?Ô?Ð?rJ   )rÄ   r   rÅ   r   rB   r   r   )r¿   rÙ   r|   rz   r>   r{   s   ` €€€€rG   Ú	decoratorznarwhalify.<locals>.decoratorK  sX   øø€ Ý	ˆt‰Œð#	@ð #	@ð #	@ð #	@ð #	@ð #	@ð #	@ð #	@ð #	@ñ 
Œð#	@ðJ ˆrJ   N)r¿   rÁ   rB   rÁ   rE   )r¿   r>   rz   r{   r|   rÚ   s    ```` rG   Ú
narwhalifyrÛ     sP   øøøø€ ðp'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ðR €|ØÐàˆ9�T‰?Œ?ÐrJ   Úscalar_likec                ó&  — t          ¦   «         }| �t          | t          ¦  «        r| }�ngt          ¦   «         x}rZt          | |j        ¦  «        rE| j        dk    r:|                      ¦   «         t          z  }t          t          j
        |¬¦  «        z   }nýt          | ¦  «        st          | ¦  «        r|                      ¦   «         }nÊ|r*t          | |j        ¦  «        r|                      ¦   «         }nž|r*t          | |j        ¦  «        r|                      ¦   «         }nrt          | t"          ¦  «        r| }nZt%          | ¦  «        rd}nHt'          | ¦  «        r|                      ¦   «         }n$dt+          | ¦  «        › d| ›�}t-          |¦  «        ‚|S )aP  If a scalar is not Python native, converts it to Python native.

    Arguments:
        scalar_like: Scalar-like value.

    Raises:
        ValueError: If the object is not convertible to a scalar.

    Examples:
        >>> import narwhals as nw
        >>> import pandas as pd
        >>> df = nw.from_native(pd.DataFrame({"a": [1, 2, 3]}))
        >>> nw.to_py_scalar(df["a"].item(0))
        1
        >>> import pyarrow as pa
        >>> df = nw.from_native(pa.table({"a": [1, 2, 3]}))
        >>> nw.to_py_scalar(df["a"].item(0))
        1
        >>> nw.to_py_scalar(1)
        1
    Nzdatetime64[ns])Úmicrosecondsz/Expected object convertible to a scalar, found z.
)r   rX   ÚNON_TEMPORAL_SCALAR_TYPESr   Ú
datetime64ÚdtypeÚitemr   r   ÚdtÚ	timedeltar    r   Ú	TimestampÚto_pydatetimeÚ	TimedeltaÚto_pytimedeltaÚTEMPORAL_SCALAR_TYPESÚ_is_pandas_nar$   Úas_pyr]   r£   )rÜ   ÚpdÚscalarÚnpÚmsr_   s         rG   Úto_py_scalarrð   z  s±  € õ. 
‰Œ€BØÐ�j¨Õ6OÑPÔPÐØˆ‰å‰{Œ{Ð	ˆðå�{ B¤MÑ2Ô2ðð ÔÐ!1Ò1Ð1à×ÒÑÔ¥=Ñ0ˆÝ�œ°2Ð6Ñ6Ô6Ñ6ˆˆÝ	˜Ñ	%Ô	%ð ­¸Ñ)DÔ)Dð Ø×!Ò!Ñ#Ô#ˆˆØ	ð •
˜;¨¬Ñ5Ô5ð Ø×*Ò*Ñ,Ô,ˆˆØ	ð •
˜;¨¬Ñ5Ô5ð Ø×+Ò+Ñ-Ô-ˆˆõ 
�KÕ!6Ñ	7Ô	7ð ØˆˆÝ	�{Ñ	#Ô	#ð 	ØˆˆÝ	˜;Ñ	'Ô	'ð Ø×"Ò"Ñ$Ô$ˆˆð½dÀ;Ñ>OÔ>Oð ð Øðð ð 	õ ˜‰oŒoÐØ€MrJ   c                ó¤   — t          t          ¦   «         x}o3|j        j                             | ¦  «        o|                     | ¦  «        ¦  «        S rD   )rO   r   ÚapiÚtypesÚ	is_scalarÚisna)r°   rì   s     rG   rê   rê   ²  s@   € Ý•z‘|”|Ð#�ÐU¨¬¬×)?Ò)?ÀÑ)DÔ)DÐUÈÏÊÐQTÉÌÑVÔVÐVrJ   )r»   rÛ   rH   rð   )r?   r@   r>   rA   rB   r5   )r?   rK   r>   rA   rB   r7   )r?   rM   r>   rA   rB   r9   )r?   r   r>   rO   rB   r   )r?   rQ   r>   rO   rB   rR   )r`   r;   ra   rb   rB   r;   )r`   r;   ra   rf   rB   r;   )r`   r3   ra   rh   rB   r3   )r`   r:   ra   rj   rB   r:   )r`   r5   ra   rh   rB   r@   )r`   r9   ra   rb   rB   rM   )r`   r9   ra   rf   rB   rM   )r`   r7   ra   rj   rB   rK   )r`   rr   ra   rf   rB   rs   )r`   ru   ra   rv   rB   rQ   )r`   r<   ra   rx   rB   r<   )r`   r   r>   rO   rz   rO   r{   rO   r|   r}   rB   r   )r`   r�   r>   rO   rz   rO   r{   rO   r|   r}   rB   r‚   )r‰   r   r>   rO   rz   rO   r…   rO   r{   rO   r|   r}   r†   r   rB   r   )r`   r   r>   rO   rz   rO   r…   rO   r{   rO   r|   r}   r†   r   rB   r   )r°   r±   rB   r   rD   )r¿   rÀ   r>   rO   rz   rO   r{   rO   r|   r}   rB   rÁ   )rÜ   r   rB   r   )r°   r   rB   rO   )]Ú
__future__r   Údatetimerã   Údecimalr   Ú	functoolsr   Útypingr   r   r	   r
   r   Únarwhalsr   Únarwhals._constantsr   r   Únarwhals._nativer   r   r   r   Únarwhals._utilsr   r   r   r   r   r   Únarwhals.dependenciesr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úcollections.abcr&   Útyping_extensionsr'   Únarwhals._translater(   r)   r*   r+   r,   r-   rV   r/   r0   rW   r2   Únarwhals.typingr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   rO   ÚbytesÚstrÚintÚfloatÚcomplexrß   Údaterä   Útimeré   rH   re   r–   r‡   r»   r´   rÛ   rð   rê   Ú__all__rE   rJ   rG   ú<module>r     sR  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  ð Ø(Ð(Ð(Ð(Ð(Ð(à(Ð(Ð(Ð(Ð(Ð(ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø&Ð&Ð&Ð&Ð&Ð&ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð €GˆC�L„L€à! 5¨#¨s°E¸7ÀGÐLÐ Øœ "¤,°´Ð8Ð ð 
àRUðð ð ð ð ñ 
„ðð 
àRUðð ð ð ð ñ 
„ðð 
àLOðð ð ð ð ñ 
„ðð 
Ø FÐ FÐ Fñ 
„Ø Fð ðð ð ð ð ð ðB 
Ø SÐ SÐ Sñ 
„Ø SØ	Ø TÐ TÐ Tñ 
„Ø TØ	ðð ð ñ 
„ðð 
Ø XÐ XÐ Xñ 
„Ø XØ	ð$ð $ð $ñ 
„ð$ð 
ðð ð ñ 
„ðð 
ðð ð ñ 
„ðð 
ð$ð $ð $ñ 
„ð$ð 
ð:ð :ð :ñ 
„ð:ð 
ðVð Vð Vñ 
„ðVð 
Ø OÐ OÐ Oñ 
„Ø Oà	ðð ð ñ 
„ðð  ØØØ $ð3ð 3ð 3ð 3ð 3ð 3ðr Øð	,ð ,ð ,ð ,ð ,ð ,ðd Øð	Xð Xð Xð Xð Xð Xðvð ð ð ð@+ð +ð +ð +ð '+ðdð ØØØ $ðdð dð dð dð dð dðN5ð 5ð 5ð 5ðpWð Wð Wð Wð NÐ
MÐ
M€€€rJ   