§
    Šhþh}`  ã                  ó@  — 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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 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*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7  ed¦  «        Z8e9e:e;e<e=e>efZ?ej@        ejA        ejB        fZCeddœdbd„¦   «         ZDeddœdcd„¦   «         ZDeddœddd„¦   «         ZDeded„¦   «         ZDd dœdfd#„ZDedgd'„¦   «         ZEedhd)„¦   «         ZEedid+„¦   «         ZEedd,œdjd3„¦   «         ZEedddd4œdkd6„¦   «         ZEedddd4œdld7„¦   «         ZEeddd8œdmd9„¦   «         ZEeddd8œdnd:„¦   «         ZEeddd;œdod=„¦   «         ZEeddd>œdpd?„¦   «         ZEeddddd@œdqdA„¦   «         ZEeddddd@œdrdB„¦   «         ZEeddddCœdsdD„¦   «         ZEeddddEœdtdH„¦   «         ZEeddddIœdudJ„¦   «         ZEedvdL„¦   «         ZEd d d dd@œdwdO„ZEd d d d ddPœdxdT„ZFdydW„ZGdydX„ZH	 dzdYd d dYd@œd{d]„ZId|d_„ZJd}d`„ZKg da¢ZLdS )~é    )ÚannotationsN)ÚDecimal©Úwraps)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚTypeVarÚoverload)ÚEPOCHÚMS_PER_SECOND)Úis_native_arrowÚis_native_pandas_likeÚis_native_polarsÚis_native_spark_like)ÚImplementationÚVersionÚhas_native_namespace)Ú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©Ú	DataFrameÚ	LazyFrame©ÚSeries)	Ú
DataFrameTÚFrameÚIntoDataFrameTÚ	IntoFrameÚIntoLazyFrameTÚ
IntoSeriesÚIntoSeriesTÚ
LazyFrameTÚSeriesTÚT.©Úpass_throughÚnarwhals_objectúDataFrame[IntoDataFrameT]r3   úLiteral[False]Úreturnr*   c               ó   — d S ©N© ©r4   r3   s     úI/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/translate.pyÚ	to_nativer=   5   ó	   € ð �Só    úLazyFrame[IntoLazyFrameT]r,   c               ó   — d S r9   r:   r;   s     r<   r=   r=   9   r>   r?   úSeries[IntoSeriesT]r.   c               ó   — d S r9   r:   r;   s     r<   r=   r=   =   s	   € ð �#r?   r   Úboolc               ó   — d S r9   r:   r;   s     r<   r=   r=   A   s   € ØCFÀ3r?   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   )Ú	BaseFramer&   zExpected Narwhals object, got ú.)Únarwhals.dataframerI   Únarwhals.seriesr'   Ú
isinstanceÚ_compliant_frameÚ_native_frameÚ_compliant_seriesÚnativeÚtypeÚ	TypeError)r4   r3   rI   r'   Úmsgs        r<   r=   r=   E   s–   € ð& -Ð,Ð,Ð,Ð,Ð,Ø&Ð&Ð&Ð&Ð&Ð&å�/ 9Ñ-Ô-ð >ØÔ/Ô=Ð=Ý�/ 6Ñ*Ô*ð 8ØÔ0Ô7Ð7àð ØG­t°OÑ/DÔ/DÐGÐGÐGˆÝ˜‰nŒnÐØÐr?   Únative_objectr0   Úkwdsc                ó   — d S r9   r:   ©rU   rV   s     r<   Úfrom_nativerY   f   s   € ØADÀr?   r(   c                ó   — d S r9   r:   rX   s     r<   rY   rY   j   ó   € ØGJÀsr?   r/   c                ó   — d S r9   r:   rX   s     r<   rY   rY   n   r[   r?   )Úseries_onlyúIntoDataFrameT | IntoSeriesTúLiteral[True]Ú
eager_onlyr]   Úallow_seriesú/DataFrame[IntoDataFrameT] | Series[IntoSeriesT]c               ó   — d S r9   r:   ©rU   r3   r`   r]   ra   s        r<   rY   rY   r   s	   € ð 7:°cr?   )r`   r]   ra   ÚNonec               ó   — d S r9   r:   rd   s        r<   rY   rY   }   ó	   € ð !$ r?   c               ó   — d S r9   r:   rd   s        r<   rY   rY   ˆ   ó	   € ð 	ˆr?   )r]   ra   c               ó   — d S r9   r:   rd   s        r<   rY   rY   “   rg   r?   c               ó   — d S r9   r:   rd   s        r<   rY   rY   ž   ri   r?   )r`   r]   ú-IntoDataFrameT | IntoLazyFrameT | IntoSeriesTc               ó   — d S r9   r:   rd   s        r<   rY   rY   ©   s   € ð SVÐRUr?   )r`   ra   c               ó   — d S r9   r:   rd   s        r<   rY   rY   ´   ó	   € ð ˜#r?   ©r3   r`   r]   ra   c               ó   — d S r9   r:   rd   s        r<   rY   rY   ¿   rg   r?   c               ó   — d S r9   r:   rd   s        r<   rY   rY   Ê   rg   r?   )r3   r]   ra   c               ó   — d S r9   r:   rd   s        r<   rY   rY   Õ   rg   r?   )r3   r`   r]   úIntoFrame | IntoSeriesú-DataFrame[Any] | LazyFrame[Any] | Series[Any]c               ó   — d S r9   r:   rd   s        r<   rY   rY   à   s	   € ð 58°Cr?   )r3   r`   ra   c               ó   — d S r9   r:   rd   s        r<   rY   rY   ë   ro   r?   úbool | Nonec               ó   — d S r9   r:   rd   s        r<   rY   rY   ÷   s	   € ð ˆ#r?   úJIntoLazyFrameT | IntoDataFrameT | IntoSeriesT | IntoFrame | IntoSeries | TúOLazyFrame[IntoLazyFrameT] | DataFrame[IntoDataFrameT] | Series[IntoSeriesT] | Tc          	     ó¢   — |r.dt          t          |¦  «        ¦  «        ›�}t          |¦  «        ‚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.
    z1from_native() got an unexpected keyword argument F)r3   r`   Úeager_or_interchange_onlyr]   ra   Úversion)ÚnextÚiterrS   Ú_from_native_implr   ÚMAIN)rU   r3   r`   r]   ra   rV   rT   s          r<   rY   rY     sb   € ðX ð ØVÅ$ÅtÈDÁzÄzÑBRÔBRÐVÐVˆÝ˜‰nŒnÐåØØ!ØØ"'ØØ!Ý”ðñ ô ð r?   )r3   r`   r}   r]   ra   r}   r~   r   c               ó  — ddl m} ddlm}m}	m}
 ddlm}m} ddl	m
} t          | ||f¦  «        r|s| S t          | |¦  «        r|s|r| S |r|du rd}t          |¦  «        ‚d}|r|rd	}t          |¦  «        ‚ || ¦  «        rS|r|sd
}t          |¦  «        ‚| S |                     |                      ¦   «                              |¦  «        d¬¦  «        S  |	| ¦  «        rl|r|sd}t          |¦  «        ‚| S |s|r|sd}t          |¦  «        ‚| S |                     |                      ¦   «                              |¦  «        d¬¦  «        S  |
| ¦  «        rS|s|sd}t          |¦  «        ‚| S |                     |                      ¦   «                              |¦  «        d¬¦  «        S t+          | ¦  «        rÍ|r9t-          | ¦  «        s*|s&dt/          | ¦  «        j        › �}t          |¦  «        ‚| S |s|r$t3          | ¦  «        r|sd}t          |¦  «        ‚| S |s$t-          | ¦  «        r|sd}t          |¦  «        ‚| S |j                             | ¦  «        j                             | ¦  «                             ¦   «         S t?          | ¦  «        r—tA          | ¦  «        r-|r*|s&dt/          | ¦  «        j        › �}t          |¦  «        ‚| S n|s|sd}t          |¦  «        ‚| S |j                             | ¦  «        j                             | ¦  «                             ¦   «         S tC          | ¦  «        r—tE          | ¦  «        r-|r*|s&dt/          | ¦  «        j        › �}t          |¦  «        ‚| S n|s|sd}t          |¦  «        ‚| S |j                             | ¦  «        j                             | ¦  «                             ¦   «         S tG          | ¦  «        r¿|r|sd}t          |¦  «        ‚| S |s|r|sd}t          |¦  «        ‚| S tH          j%         &                    ¦   «         dk    rtO          ¦   «         €d}tQ          |¦  «        ‚|j         )                    tH          j%        ¦  «        j                             | ¦  «                             ¦   «         S tU          | ¦  «        r]|s|r|sd}t          |¦  «        ‚| S |j                             | ¦  «        j                             | ¦  «                             ¦   «         S tW          | ¦  «        r]|s|r|sd}t          |¦  «        ‚| S |j                             | ¦  «        j                             | ¦  «                             ¦   «         S tY          | ¦  «        rj|j                             | ¦  «        }|s|s|r|sd|j-        › d�}t          |¦  «        ‚| S |j                             | ¦  «                             ¦   «         S  || ¦  «        rlddl m.} |s|r|sd}t          |¦  «        ‚| S |t^          j0        ur|r| S d}t          |¦  «        ‚t^          j0                              || ¦  «        d¬¦  «        S |s!dt/          | ¦  «        › �}t          |¦  «        ‚| S )Nr   )Úsupports_dataframe_interchange)Úis_compliant_dataframeÚis_compliant_lazyframeÚis_compliant_seriesr#   r&   FzJInvalid parameter combination: `series_only=True` and `allow_series=False`TzUInvalid parameter combination: `eager_only=True` and `eager_or_interchange_only=True`z,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 lazyframez4Please set `allow_series=True` or `series_only=True`z#Cannot only use `series_only` with zQCannot only use `eager_only` or `eager_or_interchange_only` with polars.LazyFramez1Cannot 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__a+  The Dataframe Interchange Protocol is no longer supported in the main `narwhals` namespace.

You may want to:
 - Use `narwhals.stable.v1`, where it is still supported.
    - See https://narwhals-dev.github.io/narwhals/backcompat
 - Use `pass_through=True` to pass the object through without raising.ÚinterchangezLExpected pandas-like dataframe, Polars dataframe, or Polars lazyframe, got: )1Únarwhals._interchange.dataframer„   Únarwhals._utilsr…   r†   r‡   rK   r$   r%   rL   r'   rM   Ú
ValueErrorrS   Ú	dataframeÚ__narwhals_dataframe__Ú_with_versionÚ	lazyframeÚ__narwhals_lazyframe__ÚseriesÚ__narwhals_series__r   r    rR   Ú__qualname__r   Ú	namespaceÚfrom_native_objectÚ	compliantrY   Úto_narwhalsr   r   r   r"   r   r   ÚDASKÚ_backend_versionr   ÚImportErrorÚfrom_backendr   r   r   ÚimplementationrŒ   r   ÚV1)rU   r3   r`   r}   r]   ra   r~   r„   r…   r†   r‡   r$   r%   r'   rT   Úns_sparkrŒ   s                    r<   r�   r�   =  sc  € ð OÐNÐNÐNÐNÐNðð ð ð ð ð ð ð ð ð ð
 8Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø&Ð&Ð&Ð&Ð&Ð&õ �- )¨YÐ!7Ñ8Ô8ð Àð ØÐÝ�- Ñ(Ô(ð ¨kð ¸\ð ØÐàð Ø˜5Ð Ð Ø^ˆCÝ˜S‘/”/Ð!ØˆØð Ð/ð ØeˆÝ˜‰oŒoÐð Ð˜mÑ,Ô,ð 
Øð 	!Øð %ØD�Ý ‘n”nÐ$Ø Ð Ø× Ò Ø×0Ò0Ñ2Ô2×@Ò@ÀÑIÔIÐQWð !ñ 
ô 
ð 	
ð Ð˜mÑ,Ô,ð 
Øð 	!Øð %ØD�Ý ‘n”nÐ$Ø Ð Øð 	!Ð2ð 	!Øð %Øb�Ý ‘n”nÐ$Ø Ð Ø× Ò Ø×0Ò0Ñ2Ô2×@Ò@ÀÑIÔIÐQWð !ñ 
ô 
ð 	
ð Ð˜=Ñ)Ô)ð 
Øð 	!Øð %ØL�Ý ‘n”nÐ$Ø Ð Ø�~Š~Ø×-Ò-Ñ/Ô/×=Ò=¸gÑFÔFÈfð ñ 
ô 
ð 	
õ
 ˜Ñ&Ô&ð 
Øð 	!Õ/°Ñ>Ô>ð 	!Øð %Ø^½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ð &Ð% mÑ4Ô4ð ZØDÐDÐDÐDÐDÐDàð 	!˜ð 	!Øð %ðFð õ   ‘n”nÐ$Ø Ð Ø�'œ*Ð$Ð$Øð %Ø$Ð$ðYð õ ˜C‘.”.Ð ÝŒz×#Ò#Ð$4Ð$4°]Ñ$CÔ$CÈ=Ð#ÑYÔYÐYàð ØrÕ]aÐboÑ]pÔ]pÐrÐrˆÝ˜‰nŒnÐØÐr?   Ú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 r:   )Ú _get_native_namespace_single_obj)Ú.0Úxs     r<   ú	<setcomp>z'get_native_namespace.<locals>.<setcomp>8  s!   € Ð?Ð?Ð?°aÕ.¨qÑ1Ô1Ð?Ð?Ð?r?   r‹   z0Found objects with different native namespaces: rJ   )r�   ÚlenÚpop)r¤   rT   Úresults      r<   Úget_native_namespacer¯     sk   € ð, ð ØMˆÝ˜‰oŒoÐØ?Ð?¸3Ð?Ñ?Ô?€FÝ
ˆ6�{„{�aÒÐØJÀÐJÐJÐJˆÝ˜‰oŒoÐØ�:Š:‰<Œ<Ðr?   c                ó¾   — t          | ¦  «        r|                      ¦   «         S t          j        j                             | ¦  «        j                             ¦   «         S r9   )r   Ú__native_namespace__r   r‚   r™   rš   r¡   Úto_native_namespace)r¤   s    r<   r¨   r¨   ?  sU   € õ ˜CÑ Ô ð *Ø×'Ò'Ñ)Ô)Ð)ÝŒ<Ô!×4Ò4Øñô ä×(Ò(Ñ*Ô*ð+r?   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µ   r7   c                óH   •‡ — t          ‰ ¦  «        dˆˆˆ ˆˆfd„¦   «         }|S )NÚargsr   Úkwargsr7   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 ©rp   ©rY   )r©   Úargra   r`   r3   r]   s     €€€€r<   ú
<listcomp>zBnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>„  sI   ø€ ð 	ð 	ð 	ð õ ØØ!-Ø)Ø +Ø!-ðñ ô ð	ð 	ð 	r?   c           
     ó@   •— i | ]\  }}|t          |‰‰‰‰¬ ¦  «        “ŒS r¼   r½   )r©   ÚnameÚvaluera   r`   r3   r]   s      €€€€r<   ú
<dictcomp>zBnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<dictcomp>�  sO   ø€ ð 	ð 	ð 	ñ  �D˜%ð •kØØ!-Ø)Ø +Ø!-ðñ ô ð	ð 	ð 	r?   c                óJ   •— h | ]}t          |d d¦  «        xŠ¯ ‰¦   «         ’Œ S )r±   N)Úgetattr)r©   ÚvÚbs     €r<   r«   zAnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<setcomp>š  sG   ø€ ð ð ð àÝ  Ð$:¸DÑAÔAÐA�AðØ�‘”ðð ð r?   r‹   z_Found multiple backends. Make sure that all dataframe/series inputs come from the same backend.r2   )ÚitemsÚvaluesr¬   r�   r=   )r¸   r¹   ÚbackendsrT   r®   rÇ   ra   r`   r³   r3   r]   s        @€€€€€r<   Úwrapperz.narwhalify.<locals>.decorator.<locals>.wrapper‚  s  øø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð  ð	ñ 	ô 	ˆDð	ð 	ð 	ð 	ð 	ð 	ð 	ð $*§<¢<¡>¤>ð	ñ 	ô 	ˆFðð ð ð à2˜4Ð2 &§-¢-¡/¤/Ð2Ð2ðñ ô ˆHõ �8‰}Œ}˜qÒ Ð Øw�Ý  ‘o”oÐ%à�T˜4Ð* 6Ð*Ð*ˆFå˜V°,Ð?Ñ?Ô?Ð?r?   )r¸   r   r¹   r   r7   r   r   )r³   rË   ra   r`   r3   r]   s   ` €€€€r<   Ú	decoratorznarwhalify.<locals>.decorator�  sX   øø€ Ý	ˆt‰Œð#	@ð #	@ð #	@ð #	@ð #	@ð #	@ð #	@ð #	@ð #	@ñ 
Œð#	@ðJ ˆr?   N)r³   rµ   r7   rµ   r:   )r³   r3   r`   r]   ra   rÌ   s    ```` r<   Ú
narwhalifyrÍ   I  sP   øøøø€ ðp'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ðR €|ØÐàˆ9�T‰?Œ?Ðr?   Ú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   rM   ÚNON_TEMPORAL_SCALAR_TYPESr   Ú
datetime64ÚdtypeÚitemr   r   ÚdtÚ	timedeltar   r   Ú	TimestampÚto_pydatetimeÚ	TimedeltaÚto_pytimedeltaÚTEMPORAL_SCALAR_TYPESÚ_is_pandas_nar!   Úas_pyrR   r�   )rÎ   ÚpdÚscalarÚnpÚmsrT   s         r<   Úto_py_scalarrâ   °  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ÐØ€Mr?   c                ó¤   — t          t          ¦   «         x}o3|j        j                             | ¦  «        o|                     | ¦  «        ¦  «        S r9   )rD   r   ÚapiÚtypesÚ	is_scalarÚisna)r¤   rÞ   s     r<   rÜ   rÜ   è  s@   € Ý•z‘|”|Ð#�ÐU¨¬¬×)?Ò)?ÀÑ)DÔ)DÐUÈÏÊÐQTÉÌÑVÔVÐVr?   )r¯   rÍ   r=   râ   )r4   r5   r3   r6   r7   r*   )r4   r@   r3   r6   r7   r,   )r4   rB   r3   r6   r7   r.   )r4   r   r3   rD   r7   r   )r4   rF   r3   rD   r7   rG   )rU   r0   rV   r   r7   r0   )rU   r(   rV   r   r7   r(   )rU   r/   rV   r   r7   r/   )rU   r^   r3   r_   r`   r_   r]   r6   ra   r_   r7   rb   )rU   r*   r3   r_   r`   r6   r]   r6   ra   re   r7   r5   )rU   r1   r3   r_   r`   r6   r]   r6   ra   re   r7   r1   )rU   r*   r3   r_   r`   r_   r]   r6   ra   re   r7   r5   )rU   r1   r3   r_   r`   r_   r]   r6   ra   re   r7   r1   )rU   rl   r3   r_   r`   r6   r]   r6   ra   r_   r7   rF   )rU   r.   r3   r_   r`   r6   r]   r_   ra   re   r7   rB   )rU   r,   r3   r6   r`   r6   r]   r6   ra   re   r7   r@   )rU   r*   r3   r6   r`   r6   r]   r6   ra   re   r7   r5   )rU   r*   r3   r6   r`   r_   r]   r6   ra   re   r7   r5   )rU   rt   r3   r6   r`   r6   r]   r6   ra   r_   r7   ru   )rU   r.   r3   r6   r`   r6   r]   r_   ra   re   r7   rB   )rU   r   r3   rD   r`   rD   r]   rD   ra   rx   r7   r   )rU   rz   r3   rD   r`   rD   r]   rD   ra   rx   rV   r   r7   r{   )rU   r   r3   rD   r`   rD   r}   rD   r]   rD   ra   rx   r~   r   r7   r   )r¤   r¥   r7   r   r9   )r³   r´   r3   rD   r`   rD   r]   rD   ra   rx   r7   rµ   )rÎ   r   r7   r   )r¤   r   r7   rD   )MÚ
__future__r   ÚdatetimerÕ   Údecimalr   Ú	functoolsr   Útypingr   r   r	   r
   r   r   Únarwhals._constantsr   r   Únarwhals._nativer   r   r   r   r�   r   r   r   Únarwhals.dependenciesr   r   r   r   r   r   r   r   r   r   r    r!   r"   rK   r$   r%   rL   r'   Únarwhals.typingr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   rD   ÚbytesÚstrÚintÚfloatÚcomplexrÑ   ÚdaterÖ   ÚtimerÛ   r=   rY   r�   r¯   r¨   rÍ   râ   rÜ   Ú__all__r:   r?   r<   ú<module>rù      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kà 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  ð Ø7Ð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 
Ø DÐ DÐ Dñ 
„Ø Dð 
Ø JÐ JÐ Jñ 
„Ø Jð 
Ø JÐ JÐ Jñ 
„Ø Jð 
ð #&ð:ð :ð :ð :ð :ñ 
„ð:ð 
ð
 "%Ø"%Øð$ð $ð $ð $ð $ñ 
„ð$ð 
ð
 "%Ø"%Øðð ð ð ð ñ 
„ðð 
ð #&Øð$ð $ð $ð $ð $ñ 
„ð$ð 
ð #&Øðð ð ð ð ñ 
„ðð 
ð
 "%Ø"%ðVð Vð Vð Vð Vñ 
„ðVð 
ð
 "%àðð ð ð ð ñ 
„ðð 
ð $'Ø!$Ø"%Øð$ð $ð $ð $ð $ñ 
„ð$ð 
ð $'Ø!$Ø"%Øð$ð $ð $ð $ð $ñ 
„ð$ð 
ð $'à"%Øð$ð $ð $ð $ð $ñ 
„ð$ð 
ð $'Ø!$Ø"%ð8ð 8ð 8ð 8ð 8ñ 
„ð8ð 
ð $'Ø!$àðð ð ð ð ñ 
„ðð 
ðð ð ñ 
„ðð$ ØØØ $ð8ð 8ð 8ð 8ð 8ð 8ð| Øà&+ØØ $ð_ð _ð _ð _ð _ð _ðDð ð ð ð@+ð +ð +ð +ð '+ðdð ØØØ $ðdð dð dð dð dð dðN5ð 5ð 5ð 5ðpWð Wð Wð Wð NÐ
MÐ
M€€€r?   