§
    Šhþh=j  ã                  ó²  — U d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dl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 d dlmZmZmZmZmZmZ d dl m!Z! er…d d	l"m#Z#m$Z$m%Z% d d
l&m'Z' d dl(m)Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@  e
de3¬¦  «        ZAe?ZBdeCd<   e?ZDdeCd<   eeeEgef         ZFdeCd<   eEZGdeCd<   ejH        ejI        ejJ        hZKdZL ejM        eLejN        ¦  «        ZOdZP ejM        ePejN        ¦  «        ZQdZR ejM        eRejN        ¦  «        ZSdZT ejM        eTejN        ¦  «        ZUe	d         ZVdeCd <   d!d"d#œZWd$d%d&d'd(d)d*d+d,d-d.œ
ZXd/eCd0<   ejH         Y                    ¦   «         ZZ	 d®d5„Z[d¯d;„Z\d°d@„Z]d±dC„Z^ ej_        dD¬E¦  «        d²dJ„¦   «         Z`d³dM„Za	 d´dµdP„Zbd¶dR„ZcdSdTœd·dV„ZdejH         Y                    ¦   «         dWk    rd¸dZ„Zend¸d[„Zed¹d]„Zfdºda„Zg ej_        dD¬E¦  «        d»dc„¦   «         Zheji        jj        Zjejjk        ddejjl        deiZmdfeCdg<   ejjn        dhdidjdkœejjo        dldmdndkœejjp        dodpdqdkœejjq        drdsdtdkœejjr        dudvdwdkœejjs        dxdydzdkœejjt        d{d|d}dkœejju        d~dd€dkœejjv        d�d‚dƒdkœejjw        d„d…d†dkœejjx        d‡dˆd4dkœiZyd‰eCdŠ<   ejjz        fZ{d¼dŽ„Z|d½d�„Z}d¾d’„Z~ej        d“fej        d”fej€        efej        d“fej€        efej€        d“fej€        efej€        efej€        efd•œ	Z�d–eCd—<   d¿d�„Z‚eeedždŸœZƒd eCd¡<   dÀd¢„Z„dÁd¨„Z…dÂd©„Z†dÃd«„Z‡ G d¬„ d­ed7ef         ¦  «        ZˆdS )Äé    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚTypeVarÚcast)ÚEagerSeriesNamespace)ÚMS_PER_SECONDÚNS_PER_MICROSECONDÚNS_PER_MILLISECONDÚNS_PER_SECONDÚSECONDS_PER_DAYÚUS_PER_SECOND)Úissue_warning)ÚImplementationÚVersionÚ_DeferredIterableÚcheck_columns_existÚisinstance_or_issubclassÚrequires)Ú
ShapeError)ÚIterableÚIteratorÚMapping)Ú
ModuleType)ÚDtype©ÚBaseMaskedDtype)Ú	TypeAliasÚTypeIs)ÚIntervalUnit)ÚPandasLikeExpr©ÚPandasLikeSeries)ÚNativeDataFrameTÚNativeNDFrameTÚNativeSeriesT)ÚDType)ÚDTypeBackendÚ	IntoDTypeÚTimeUnitÚ_1DArrayÚExprT)Úboundr    ÚUnitCurrentÚ
UnitTargetÚBinOpBroadcastÚIntoRhsaÉ  ^
    datetime64\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
        (?:,                                      # Begin non-capturing group for optional timezone
            \s*                                   # Optional whitespace after comma
            (?P<time_zone>                        # Start named group for timezone
                [a-zA-Z\/]+                       # Match timezone name, e.g., UTC, America/New_York
                (?:[+-]\d{2}:\d{2})?              # Optional offset in format +HH:MM or -HH:MM
                |                                 # OR
                pytz\.FixedOffset\(\d+\)          # Match pytz.FixedOffset with integer offset in parentheses
            )                                     # End time_zone group
        )?                                        # End optional timezone group
    \]                                            # Closing bracket for datetime64
$a  ^
    timestamp\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
        (?:,                                      # Begin non-capturing group for optional timezone
            \s?tz=                                # Match "tz=" prefix
            (?P<time_zone>                        # Start named group for timezone
                [a-zA-Z\/]*                       # Match timezone name (e.g., UTC, America/New_York)
                (?:                               # Begin optional non-capturing group for offset
                    [+-]\d{2}:\d{2}               # Match offset in format +HH:MM or -HH:MM
                )?                                # End optional offset group
            )                                     # End time_zone group
        )?                                        # End optional timezone group
    \]                                            # Closing bracket for timestamp
    \[pyarrow\]                                   # Literal string "[pyarrow]"
$z¿^
    timedelta64\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
    \]                                            # Closing bracket for timedelta64
$a  ^
    duration\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
    \]                                            # Closing bracket for duration
    \[pyarrow\]                                   # Literal string "[pyarrow]"
$)ÚyearÚquarterÚmonthÚweekÚdayÚhourÚminuteÚsecondÚmillisecondÚmicrosecondÚ
nanosecondÚNativeIntervalUnitÚDÚmin)ÚdÚmr4   r5   r6   r8   r9   r:   r;   r<   r=   r>   )
ÚyÚqÚmorB   ÚhrC   ÚsÚmsÚusÚnsz)Mapping[IntervalUnit, NativeIntervalUnit]Ú
UNITS_DICTÚimplementationr   ÚreturnÚboolc                ó6   — | t           j        t           j        hv S ©N)r   ÚPANDASÚMODIN©rM   s    úR/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_pandas_like/utils.pyÚis_pandas_or_modinrV   �   s   € Ø�nÔ3µ^Ô5IÐJÐJÐJó    Úlhsr%   ÚrhsúPandasLikeSeries | objectú7tuple[pd.Series[Any] | object, pd.Series[Any] | object]c                óÐ  — ddl m} | j        j        }| j        r0t          ||¦  «        r |j        s| j        j        d         |j        fS t          ||¦  «        r_|j        r| j        |j        j        d         fS |j        j        |ur#| j        t          |j        ||j        ¬¦  «        fS | j        |j        fS t          |t          ¦  «        rd}t          |¦  «        ‚| j        |fS )z²Validate RHS of binary operation.

    If the comparison isn't supported, return `NotImplemented` so that the
    "right-hand-side" operation (e.g. `__radd__`) can be tried.
    r   r$   rT   z$Expected Series or scalar, got list.)Únarwhals._pandas_like.seriesr%   ÚnativeÚindexÚ
_broadcastÚ
isinstanceÚilocÚ	set_indexÚ_implementationÚlistÚ	TypeError)rX   rY   r%   Ú	lhs_indexÚmsgs        rU   Úalign_and_extract_nativeri   ‘   s  € ð >Ð=Ð=Ð=Ð=Ð=à”
Ô €Ià
„~ð .�* SÐ*:Ñ;Ô;ð .ÀCÄNð .ØŒzŒ˜qÔ! 3¤:Ð-Ð-å�#Ð'Ñ(Ô(ð (ØŒ>ð 	4Ø”J ¤
¤°Ô 2Ð3Ð3ØŒ:Ô 9Ð,Ð,à”
Ý˜#œ* iÀÔ@SÐTÑTÔTðð ð ”
˜CœJÐ'Ð'å�#•tÑÔð Ø4ˆÝ˜‰nŒnÐàŒ:�sˆ?ÐrW   Úobjr'   r_   r   c               óÞ  — t          ||                     ¦   «         j        ¦  «        r;t          |¦  «        x}t          | ¦  «        x}k    rd|› d|› �}t	          |¦  «        ‚|t
          j        u r|                      d¬¦  «        } || _        | S |t
          j	        u r:d| 
                    ¦   «         cxk    rdk     rn n|                      |dd¬¦  «        S |                      |d¬	¦  «        S )
z}Wrapper around pandas' set_axis to set object index.

    We can set `copy` / `inplace` based on implementation/version.
    zExpected object of length z, got length: F)Údeep©é   é   ©é   r   )ÚaxisÚcopy)rr   )ra   Úto_native_namespaceÚIndexÚlenr   r   ÚCUDFrs   r_   rR   Ú_backend_versionÚset_axis)rj   r_   rM   Úexpected_lenÚ
actual_lenrh   s         rU   rc   rc   ±   s  € õ �%˜×;Ò;Ñ=Ô=ÔCÑDÔDð Ý˜E™
œ
Ð"ˆÝ˜C™œÐ
 ˆ*òJ"ð J"ð T¨<ÐSÐSÀzÐSÐSˆÝ˜‰oŒoÐØ�Ô,Ð,Ð,Ø�hŠh˜EˆhÑ"Ô"ˆØˆŒ	Øˆ
Ø�Ô.Ð.Ð.Ø�.×1Ò1Ñ3Ô3Ð:Ð:Ò:Ð:°dÒ:Ð:Ð:Ð:Ð:à�|Š|˜E¨°ˆ|Ñ6Ô6Ð6Ø�<Š<˜ Aˆ<Ñ&Ô&Ð&rW   ÚargsÚkwargsc               ó¶   — |t           j        u r*|                     ¦   «         dk    r | j        |i |¤ddi¤Ž}n | j        |i |¤dddœ¤Ž}t	          d|¦  «        S )zXWrapper around pandas' rename so that we can set `copy` based on implementation/version.rp   ÚinplaceF)rs   r   r'   )r   rR   rx   Úrenamer	   )rj   rM   r|   r}   Úresults        rU   r€   r€   È   s€   € ð �Ô.Ð.Ð.Ø×'Ò'Ñ)Ô)¨TÒ1Ð1à�”˜TÐ; VÐ;Ð;°UÐ;Ð;Ð;ˆˆà�”˜TÐG VÐG°%ÀÐGÐGÐGÐGˆÝÐ  &Ñ)Ô)Ð)rW   é   )ÚmaxsizeÚnative_dtypeÚversionr   r)   c                óp  — t          | ¦  «        }|j        }|dv r|                     ¦   «         S |dv r|                     ¦   «         S |dv r|                     ¦   «         S |dv r|                     ¦   «         S |dv r|                     ¦   «         S |dv r|                     ¦   «         S |dv r|                     ¦   «         S |dv r| 	                    ¦   «         S |d	v r| 
                    ¦   «         S |d
v r|                     ¦   «         S |dv r|                     ¦   «         S |dv r|                     ¦   «         S |                     d¦  «        r|                     ¦   «         S |dk    rt!          | |¦  «        S t"                               |¦  «        x}st&                               |¦  «        x}r@|                     d¦  «        }|                     d¦  «        }|                     ||¦  «        S t,                               |¦  «        x}st.                               |¦  «        x}r*|                     d¦  «        }|                     |¦  «        S |dk    r|                     ¦   «         S |                     d¦  «        r)|                     d¦  «        r|                     ¦   «         S |                     d¦  «        r)|                     d¦  «        r|                     ¦   «         S |                     d¦  «        r)|                     d¦  «        r|                     ¦   «         S |                     ¦   «         S )N>   úint64[pyarrow]ÚInt64Úint64úInt64[pyarrow]>   úint32[pyarrow]ÚInt32Úint32úInt32[pyarrow]>   úint16[pyarrow]ÚInt16Úint16úInt16[pyarrow]>   úint8[pyarrow]ÚInt8Úint8úInt8[pyarrow]>   úuint64[pyarrow]ÚUInt64Úuint64úUInt64[pyarrow]>   úuint32[pyarrow]ÚUInt32Úuint32úUInt32[pyarrow]>   úuint16[pyarrow]ÚUInt16Úuint16úUInt16[pyarrow]>   úuint8[pyarrow]ÚUInt8Úuint8úUInt8[pyarrow]>   údouble[pyarrow]úfloat64[pyarrow]ÚFloat64Úfloat64úFloat64[pyarrow]>   úfloat[pyarrow]úfloat32[pyarrow]ÚFloat32Úfloat32úFloat32[pyarrow]>   ústring[python]ústring[pyarrow]úlarge_string[pyarrow]ústring[pyarrow_numpy]ÚstrÚstring>   úbool[pyarrow]rO   Úbooleanúboolean[pyarrow]zdictionary<ÚcategoryÚ	time_unitÚ	time_zonezdate32[day][pyarrow]Údecimalz	[pyarrow]ÚtimeÚbinary)rµ   Údtypesrˆ   rŒ   r�   r”   r˜   rœ   r    r¤   r©   r®   ÚStringÚBooleanÚ
startswithÚCategoricalÚ$native_categorical_to_narwhals_dtypeÚPATTERN_PD_DATETIMEÚmatchÚPATTERN_PA_DATETIMEÚgroupÚDatetimeÚPATTERN_PD_DURATIONÚPATTERN_PA_DURATIONÚDurationÚDateÚendswithÚDecimalÚTimeÚBinaryÚUnknown)r„   r…   ÚdtyperÀ   Úmatch_Údt_time_unitÚdt_time_zoneÚdu_time_units           rU   Ú#non_object_native_to_narwhals_dtyperÙ   Õ   sI  € å�ÑÔ€EàŒ^€FØÐFÐFÐFØ�|Š|‰~Œ~ÐØÐFÐFÐFØ�|Š|‰~Œ~ÐØÐFÐFÐFØ�|Š|‰~Œ~ÐØÐBÐBÐBØ�{Š{‰}Œ}ÐØÐJÐJÐJØ�}Š}‰ŒÐØÐJÐJÐJØ�}Š}‰ŒÐØÐJÐJÐJØ�}Š}‰ŒÐØÐFÐFÐFØ�|Š|‰~Œ~ÐØð ð ð ð �~Š~ÑÔÐØð ð ð ð �~Š~ÑÔÐØð ð ð ð �}Š}‰ŒÐØÐHÐHÐHØ�~Š~ÑÔÐØ×Ò˜Ñ&Ô&ð $Ø×!Ò!Ñ#Ô#Ð#Ø�
ÒÐÝ3°LÀ'ÑJÔJÐJÝ%×+Ò+¨EÑ2Ô2Ð2ˆð ;Ý%×+Ò+¨EÑ2Ô2Ð2ˆð;ð "(§¢¨kÑ!:Ô!:ˆØ#)§<¢<°Ñ#<Ô#<ˆØ�Š˜|¨\Ñ:Ô:Ð:Ý%×+Ò+¨EÑ2Ô2Ð2ˆð -Ý%×+Ò+¨EÑ2Ô2Ð2ˆð-ð "(§¢¨kÑ!:Ô!:ˆØ�Š˜|Ñ,Ô,Ð,ØÐ&Ò&Ð&Ø�{Š{‰}Œ}ÐØ×Ò˜	Ñ"Ô"ð   u§~¢~°kÑ'BÔ'Bð  Ø�~Š~ÑÔÐØ×Ò˜ÑÔð  E§N¢N°;Ñ$?Ô$?ð Ø�{Š{‰}Œ}ÐØ×Ò˜Ñ!Ô!ð  e§n¢n°[Ñ&AÔ&Að Ø�}Š}‰ŒÐØ�>Š>ÑÔÐrW   ÚseriesúPandasLikeSeries | Nonec                ó¨  — |j         }|t          j        u r|                     ¦   «         S t          j        j        j        }| €dn ||                      d¦  «        d¬¦  «        }|dk    r|                     ¦   «         S |dk    r"|t          j
        ur|                     ¦   «         S |dk    r|                     ¦   «         S |                     ¦   «         S )NÚemptyéd   T)Úskipnar¶   )rÀ   r   rw   rÁ   ÚpdÚapiÚtypesÚinfer_dtypeÚheadr   ÚV1ÚObject)rÚ   r…   rM   rÀ   ÚinferÚinferred_dtypes         rU   Úobject_native_to_narwhals_dtyperé      sÃ   € ð Œ^€FØ�Ô,Ð,Ð,ð �}Š}‰ŒÐåŒFŒLÔ$€Eà & �W�W°E°E¸&¿+º+ÀcÑ:JÔ:JÐSWÐ4XÑ4XÔ4X€NØ˜Ò!Ð!Ø�}Š}‰ŒÐØ˜Ò Ð  WµG´JÐ%>Ð%>à�}Š}‰ŒÐØ˜Ò Ð à�}Š}‰ŒÐØ�=Š=‰?Œ?ÐrW   úpd.CategoricalDtypeú#Literal[Implementation.CUDF] | Nonec                ó   — |j         }|t          j        u r|                     ¦   «         S | j        rK|t
          j        u rt          | ¦  «        n| j        j	        }| 
                    t          |¦  «        ¦  «        S |                     ¦   «         S rQ   )rÀ   r   rå   rÄ   Úorderedr   rw   Ú_cudf_categorical_to_listÚ
categoriesÚto_listÚEnumr   )r„   r…   rM   rÀ   Ú	into_iters        rU   rÅ   rÅ   7  s’   € ð
 Œ^€FØ•'”*ÐÐØ×!Ò!Ñ#Ô#Ð#ØÔð 9ð ¥Ô!4Ð4Ð4õ & lÑ3Ô3Ð3àÔ(Ô0ð 	ð
 �{Š{Õ,¨YÑ7Ô7Ñ8Ô8Ð8Ø×ÒÑÔÐrW   úCallable[[], list[Any]]c                ó   ‡ — dˆ fd„}|S )NrN   ú	list[Any]c                 óZ   •— ‰ j                              ¦   «                              ¦   «         S rQ   )rï   Úto_arrowÚ	to_pylist)r„   s   €rU   Úfnz%_cudf_categorical_to_list.<locals>.fnM  s$   ø€ ØÔ&×/Ò/Ñ1Ô1×;Ò;Ñ=Ô=Ð=rW   )rN   rõ   © )r„   rù   s   ` rU   rî   rî   I  s(   ø€ ð>ð >ð >ð >ð >ð >ð €IrW   F)Úallow_objectrû   c               ó   — t          | ¦  «        }|                     d¦  «        rEddlm} t	          | d¦  «        r ||                      ¦   «         |¦  «        S  || j        |¦  «        S |dk    r/|                     ¦   «         rt          | |t          j
        ¦  «        S |dk    rt          | |¦  «        S |t          j        u r|j                             ¦   «         S |rt          d ||¦  «        S d}t!          |¦  «        ‚)N)Ú
large_listre   ÚstructÚfixed_size_listr   )Únative_to_narwhals_dtyper÷   rº   Úobjectz;Unreachable code, object dtype should be handled separately)rµ   rÃ   Únarwhals._arrow.utilsr   Úhasattrr÷   Úpyarrow_dtypeÚis_cudfrÅ   r   rw   rÙ   ÚDASKrÀ   rÁ   ré   ÚAssertionError)r„   r…   rM   rû   Ú	str_dtypeÚarrow_native_to_narwhals_dtyperh   s          rU   r   r   S  s?  € õ �LÑ!Ô!€Ià×ÒÐOÑPÔPð Sð	
ð 	
ð 	
ð 	
ð 	
ð 	
õ �< Ñ,Ô,ð 	Tà1Ð1°,×2GÒ2GÑ2IÔ2IÈ7ÑSÔSÐSØ-Ð-¨lÔ.HÈ'ÑRÔRÐRØ�JÒÐ >×#9Ò#9Ñ#;Ô#;Ðõ 4Ø˜'¥>Ô#6ñ
ô 
ð 	
ð �HÒÐÝ2°<ÀÑIÔIÐIØ�Ô,Ð,Ð,ð Œ~×$Ò$Ñ&Ô&Ð&Øð NÝ.¨t°W¸nÑMÔMÐMàEð õ ˜Ñ
Ô
ÐrW   )rn   é   rÔ   úTypeIs[BaseMaskedDtype]c                óŒ   — t          ¦   «         }t          | t          j        j        j        ¦  «        ot          | d|¦  «        du S )z/Return `True` if `dtype` is `"numpy_nullable"`.ÚbaseN)r  ra   rà   rá   Ú
extensionsÚExtensionDtypeÚgetattr)rÔ   Úsentinels     rU   Úis_dtype_numpy_nullabler  {  s@   € õ ‘8”8ˆå�u�bœfÔ/Ô>Ñ?Ô?ð 9Ý˜˜v xÑ0Ô0°DÐ8ð	
rW   c                óz   — t          | t          j        j        j        ¦  «        rddlm} t          | |¦  «        S dS )Nr   r   F)ra   rà   rá   r  r  Úpandas.core.arrays.maskedr   )rÔ   ÚOldBaseMaskedDtypes     rU   r  r  †  sT   € õ �e�RœVÔ.Ô=Ñ>Ô>ð 	9ðð ð ð ð ð õ ˜eÐ%7Ñ8Ô8Ð8ØˆurW   r*   c                ój   — |t           j        u rdS t          | ¦  «        rdS t          | ¦  «        rdndS )zjGet dtype backend for pandas type.

    Matches pandas' `dtype_backend` argument in `convert_dtypes`.
    NÚpyarrowÚnumpy_nullable)r   rw   Úis_dtype_pyarrowr  )rÔ   rM   s     rU   Úget_dtype_backendr  •  sE   € ð
 �Ô,Ð,Ð,ØˆtÝ˜ÑÔð ØˆyÝ6°uÑ=Ô=ÐGÐÐÀ4ÐGrW   rÀ   úIterable[Any]úIterator[DTypeBackend]c                ó    ‡— ˆfd„| D ¦   «         S )ziYield a `DTypeBackend` per-dtype.

    Matches pandas' `dtype_backend` argument in `convert_dtypes`.
    c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S rQ   )r  )Ú.0rÔ   rM   s     €rU   ú	<genexpr>z&iter_dtype_backends.<locals>.<genexpr>©  s.   øè è € ÐIÐI¸Õ˜e ^Ñ4Ô4ÐIÐIÐIÐIÐIÐIrW   rú   )rÀ   rM   s    `rU   Úiter_dtype_backendsr!  ¢  s    ø€ ð JÐIÐIÐIÀ&ÐIÑIÔIÐIrW   úTypeIs[pd.ArrowDtype]c                ó`   — t          t          d¦  «        ot          | t          j        ¦  «        S )NÚ
ArrowDtype)r  rà   ra   r$  ©rÔ   s    rU   r  r  ¬  s#   € å•2�|Ñ$Ô$ÐI­°E½2¼=Ñ)IÔ)IÐIrW   rº   r  zMapping[type[DType], str]ÚNW_TO_PD_DTYPES_INVARIANTr«   r©   rª   )r  r  Nr°   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¸   z<Mapping[type[DType], Mapping[DTypeBackend, str | type[Any]]]ÚNW_TO_PD_DTYPES_BACKENDr+   Údtype_backendústr | PandasDtypec                óx  — |dvrd|› d�}t          |¦  «        ‚|j        }|                      ¦   «         }t                               |¦  «        x}r|S t
                               |¦  «        x}r||         S t          ||j        ¦  «        r?|dk    r*dd l}	t          j
        |	                     ¦   «         ¦  «        S |dk    rdS t          S t          | |j        ¦  «        rÁt          |¦  «        rut           dk     rjt#          | |j        ¦  «        rR| j        d	k    rGt'          j        t           ¦  «        }
d
|
›d�}d}d| j        ›d|› d|› d�}t+          |t,          ¦  «         d	}n| j        }|dk    r| j        x}rd|› �nd}d|› |› d�S | j        x}rd|› �nd}d|› |› d�S t          | |j        ¦  «        r6t          |¦  «        rt           dk     rd	}n| j        }|dk    rd|› d�nd|› d�S t          | |j        ¦  «        r,	 dd l}	n$# t4          $ r}d}t5          |¦  «        |‚d }~ww xY wdS t          | |j        ¦  «        ru|t8          j        u rd}t=          |¦  «        ‚t#          | |j        ¦  «        r0|                     ¦   «         }|                      | j!        d¬¦  «        S d}t          |¦  «        ‚t          ||j"        |j#        |j$        |j%        |j&        f¦  «        rtO          | ||¦  «        S t          |tP          ¦  «        rd |j)        › d!|› d�}t=          |¦  «        ‚d"| › �}tU          |¦  «        ‚)#N>   Nr  r  z;Expected one of {None, 'pyarrow', 'numpy_nullable'}, got: 'ú'r  r   r  r¶   )r
  rK   z*available in 'pandas>=2.0', found version ú.z…https://pandas.pydata.org/docs/dev/whatsnew/v2.0.0.html#construction-with-datetime64-or-timedelta64-dtype-with-unsupported-resolutionz`nw.Datetime(time_unit=z)` is only zŠ
Narwhals has fallen back to using `time_unit='ns'` to avoid an error.

Hint: to avoid this warning, consider either:
- Upgrading pandas: zA
- Using a bare `nw.Datetime`, if this precision is not importantz, tz=Ú z
timestamp[z
][pyarrow]z, zdatetime64[ú]z	duration[ztimedelta64[z/'pyarrow>=13.0.0' is required for `Date` dtype.zdate32[pyarrow]z9Converting to Enum is not supported in narwhals.stable.v1T)rí   z9Can not cast / initialize Enum without categories presentúConverting to z dtype is not supported for zUnknown dtype: )+Ú
ValueErrorrÀ   Ú	base_typer&  Úgetr'  Ú
issubclassrÁ   r  rà   r$  r¶   rµ   r   rÊ   rV   ÚPANDAS_VERSIONra   r»   r   Ú_unparse_versionr   ÚUserWarningr¼   rÍ   rÎ   ÚModuleNotFoundErrorrñ   r   rå   ÚNotImplementedErrorrt   ÚCategoricalDtyperï   ÚStructÚArrayÚListrÑ   rÒ   Únarwhals_to_native_arrow_dtypeÚUNSUPPORTED_DTYPESÚ__name__r  )rÔ   r(  rM   r…   rh   rÀ   r1  Úpd_typeÚinto_pd_typeÚpaÚfoundÚ	availableÚchangelog_urlrÖ   ÚtzÚtz_partrØ   ÚexcrK   s                      rU   Únarwhals_to_native_dtyperI  á  s.  € ð Ð?Ð?Ð?Ø^ÈmÐ^Ð^Ð^ˆÝ˜‰oŒoÐØŒ^€FØ—’Ñ!Ô!€IÝ+×/Ò/°	Ñ:Ô:Ð:€wð ØˆÝ.×2Ò2°9Ñ=Ô=Ð=€|ð +Ø˜MÔ*Ð*Ý�)˜Vœ]Ñ+Ô+ð Ø˜IÒ%Ð%Ø Ð Ð Ð õ ”= §¢¡¤Ñ-Ô-Ð-ØÐ,Ò,Ð,Ø�8Ýˆ
Ý  v¤Ñ7Ô7ð 6Ý˜nÑ-Ô-ð 	+µ.ð D
ò 3
ð 3
õ ˜% ¤Ñ1Ô1ð 0°e´oÈÒ6MÐ6MÝ Ô1µ.ÑAÔA�ØSÈÐSÐSÐS�	ð !h�ðX¨e¬oð Xð XÈIð Xð Xð ,9ðXð Xð Xð õ ˜c¥;Ñ/Ô/Ð/ØˆLˆLà œ?ˆLà˜IÒ%Ð%Ø-2¬_Ð'< rÐE�l˜b�l�l�lÀ2ˆGØA ÐA¨gÐAÐAÐAÐAØ&+¤oÐ 5 Ð>�)�r�)�)�)¸BˆØ5˜\Ð5¨7Ð5Ð5Ð5Ð5Ý  v¤Ñ7Ô7ð 
Ý˜nÑ-Ô-ð 	+µ.ð D
ò 3
ð 3
ð  ˆLˆLà œ?ˆLð  	Ò)Ð)ð 1˜Ð0Ð0Ð0Ð0à/ Ð/Ð/Ð/ð	
õ
    v¤{Ñ3Ô3ð !ð	4Ø Ð Ð Ð Ð øÝ"ð 	4ð 	4ð 	4àCˆCÝ% cÑ*Ô*°Ð3øøøøð	4øøøð !Ð Ý  v¤{Ñ3Ô3ð Ø•g”jÐ Ð ØMˆCÝ% cÑ*Ô*Ð*Ý�e˜Vœ[Ñ)Ô)ð 	GØ×3Ò3Ñ5Ô5ˆBØ×&Ò& uÔ'7ÀÐ&ÑFÔFÐFØIˆÝ˜‰oŒoÐÝØ�F”M 6¤<°´¸f¼kÈ6Ì=ÐYñô ð Nõ .¨e°^ÀWÑMÔMÐMÝ�)Õ/Ñ0Ô0ð 'Ø`˜yÔ1Ð`Ð`È~Ð`Ð`Ð`ˆÝ! #Ñ&Ô&Ð&Ø
#˜EÐ
#Ð
#€CÝ
˜Ñ
Ô
Ðs   ÈH È
H(ÈH#È#H(úpd.ArrowDtypec                ó  — t          |¦  «        rdt          dk    rY	 dd l}n/# t          $ r"}d| › d|j        › �}t          |¦  «        |‚d }~ww xY wddlm} t          j         || |¦  «        ¦  «        S d| › d|› d|› d	�}t          |¦  «        ‚)
N)r
  r
  r   zUnable to convert to z  to to the following exception: )rI  r/  z+ dtype is not supported for implementation z and version r,  )
rV   r4  r  ÚImportErrorrh   r  rI  rà   r$  r8  )rÔ   rM   r…   rB  rH  rh   Ú_to_arrow_dtypes          rU   r=  r=  D  sð   € õ ˜.Ñ)Ô)ð >­nÀÒ.FÐ.Fð	,Ø Ð Ð Ð Ð øÝð 	,ð 	,ð 	,ØZ¨%ÐZÐZÐQTÔQXÐZÐZˆCÝ˜cÑ"Ô"¨Ð+øøøøð	,øøøð 	VÐUÐUÐUÐUÐUåŒ}˜_˜_¨U°GÑ<Ô<Ñ=Ô=Ð=ð	3˜ð 	3ð 	3Øð	3ð 	3Ø(/ð	3ð 	3ð 	3ð õ ˜cÑ
"Ô
"Ð"s   œ! ¡
A«AÁArµ   c                ó”   — dt          | ¦  «        v rdS t          | ¦  «                             ¦   «         t          | ¦  «        k    rdS dS )Nr  rŠ   rˆ   r‰   )rµ   Úlowerr%  s    rU   Úint_dtype_mapperrP  W  sF   € Ø•C˜‘J”JÐÐØÐÝ
ˆ5�z„z×ÒÑÔ�S ™ZœZÒ'Ð'ØˆwØˆ7rW   iè  i@B )	)rK   rJ   )rK   rI   )rJ   rK   )rJ   rI   )rI   rK   )rI   rJ   )rH   rK   )rH   rJ   )rH   rI   zGMapping[tuple[UnitCurrent, UnitTarget], tuple[BinOpBroadcast, IntoRhs]]Ú_TIMESTAMP_DATETIME_OP_FACTORrH   r(   Úcurrentr,   r»   c                óš   — ||k    r| S t                                ||f¦  «        x}r|\  }} || |¦  «        S d|› d�}t          |¦  «        ‚)Nzunexpected time unit zD, please report an issue at https://github.com/narwhals-dev/narwhals)rQ  r2  r  )rH   rR  r»   Úitemrù   Úfactorrh   s          rU   Úcalculate_timestamp_datetimerV  n  sx   € ð �)ÒÐØˆÝ,×0Ò0°'¸9Ð1EÑFÔFÐF€tð Ø‰
ˆˆFØˆr�!�V‰}Œ}Ðð	3 ð 	3ð 	3ð 	3ð õ ˜Ñ
Ô
ÐrW   rn   )rK   rJ   rI   rH   zMapping[TimeUnit, int]Ú_TIMESTAMP_DATE_FACTORc                ó2   — | t           z  t          |         z  S rQ   )r   rW  )rH   r»   s     rU   Úcalculate_timestamp_daterY  …  s   € Ø�ÑÕ!7¸	Ô!BÑBÐBrW   Údfr&   Úcolumn_namesúlist[str] | _1DArrayúNativeDataFrameT | Anyc                óþ  — t          |¦  «        | j        d         k    r| j        |k                         ¦   «         r| S | j        j        j        dk    s&|t          j        u rU|                     ¦   «         dk     r=t          || j         
                    ¦   «         ¬¦  «        x}r|‚| j        dd…|f         S 	 | |         S # t          $ r3}t          || j         
                    ¦   «         ¬¦  «        x}r||‚‚ d}~ww xY w)zsSelect columns by name.

    Prefer this over `df.loc[:, column_names]` as it's
    generally more performant.
    rn   Úbrm   )rD  N)rv   ÚshapeÚcolumnsÚallrÔ   Úkindr   rR   rx   r   ÚtolistÚlocÚKeyError)rZ  r[  rM   ÚerrorÚes        rU   Úselect_columns_by_nameri  ‰  s  € õ ˆ<ÑÔ˜BœH QœKÒ'Ð'¨R¬Z¸<Ò-G×,LÒ,LÑ,NÔ,NÐ'Øˆ	Ø
Œ
ÔÔ Ò$Ð$Ø�.Ô/Ð/Ð/Ø×+Ò+Ñ-Ô-°Ò6Ð6õ (¨ÀÄ
×@QÒ@QÑ@SÔ@SÐTÑTÔTÐTˆ5ð 	ØˆKØŒv�a�a�a˜�oÔ&Ð&ðØ�,ÔÐøÝð ð ð Ý'¨ÀÄ
×@QÒ@QÑ@SÔ@SÐTÑTÔTÐTˆ5ð 	Ø˜QÐØøøøøðøøøs   Â7B? Â?
C<Ã	.C7Ã7C<c                óv   — | j         t          j        t          j        t          j        hv o| j        j        dk    S )NrO   )rd   r   rR   rS   r  r^   rÔ   )rH   s    rU   Úis_non_nullable_booleanrk  ¦  s9   € ð 	
ÔÝÔ!¥>Ô#7½Ô9LÐMð	Nð 	%àŒHŒN˜fÒ$ðrW   r   c               ó’   — | t           j        t           j        hv rddl}|S | t           j        u rddl}|S d| › �}t          |¦  «        ‚)zCReturns numpy or cupy module depending on the given implementation.r   Nz!Expected pandas/modin/cudf, got: )r   rR   rS   Únumpyrw   Úcupyr  )rM   ÚnpÚcprh   s       rU   Úimport_array_modulerq  ¯  sc   € à�.Ô/µÔ1EÐFÐFÐFØÐÐÐàˆ	Ø�Ô,Ð,Ð,ØÐÐÐàˆ	Ø
>¨nÐ
>Ð
>€CÝ
˜Ñ
Ô
ÐrW   c                  ó   — e Zd ZdS )ÚPandasLikeSeriesNamespaceN)r?  Ú
__module__Ú__qualname__rú   rW   rU   rs  rs  ½  s   € € € € € € € rW   rs  )rM   r   rN   rO   )rX   r%   rY   rZ   rN   r[   )rj   r'   r_   r   rM   r   rN   r'   )
rj   r'   r|   r   rM   r   r}   r   rN   r'   )r„   r   r…   r   rN   r)   )rÚ   rÛ   r…   r   rM   r   rN   r)   rQ   )r„   rê   r…   r   rM   rë   rN   r)   )r„   r   rN   ró   )
r„   r   r…   r   rM   r   rû   rO   rN   r)   )rÔ   r   rN   r  )rÔ   r   rM   r   rN   r*   )rÀ   r  rM   r   rN   r  )rÔ   r   rN   r"  )
rÔ   r+   r(  r*   rM   r   r…   r   rN   r)  )rÔ   r+   rM   r   r…   r   rN   rJ  )rÔ   r   rN   rµ   )rH   r(   rR  r,   r»   r,   rN   r(   )rH   r(   r»   r,   rN   r(   )rZ  r&   r[  r\  rM   r   rN   r]  )rH   r%   rN   rO   )rM   r   rN   r   )‰Ú
__future__r   Ú	functoolsÚoperatorÚreÚtypingr   r   r   r   r   r	   Úpandasrà   Únarwhals._compliantr
   Únarwhals._constantsr   r   r   r   r   r   Únarwhals._exceptionsr   Únarwhals._utilsr   r   r   r   r   r   Únarwhals.exceptionsr   Úcollections.abcr   r   r   râ   r   Úpandas._typingr   ÚPandasDtypeÚpandas.core.dtypes.dtypesr   Útyping_extensionsr    r!   Únarwhals._durationr"   Únarwhals._pandas_like.exprr#   r]   r%   Únarwhals._pandas_like.typingr&   r'   r(   Únarwhals.dtypesr)   Únarwhals.typingr*   r+   r,   r-   r.   r0   Ú__annotations__r1   Úintr2   r3   rR   rw   rS   ÚPANDAS_LIKE_IMPLEMENTATIONÚPD_DATETIME_RGXÚcompileÚVERBOSErÆ   ÚPA_DATETIME_RGXrÈ   ÚPD_DURATION_RGXrË   ÚPA_DURATION_RGXrÌ   r?   Ú
ALIAS_DICTrL   rx   r4  rV   ri   rc   r€   Ú	lru_cacherÙ   ré   rÅ   rî   r   r  r  r!  r  ÚMAINrÀ   rÄ   ræ   r&  r©   r®   rˆ   rŒ   r�   r”   r˜   rœ   r    r¤   rÂ   r'  rÐ   r>  rI  r=  rP  ÚfloordivÚmulrQ  rV  rW  rY  ri  rk  rq  rs  rú   rW   rU   ú<module>r™     sv  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *àð Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø Ð Ð Ð Ð Ð à3Ð3Ð3Ð3Ð3Ð3Ø9Ð9Ð9Ð9Ð9Ð9Ø3Ð3Ð3Ð3Ð3Ð3Ð3Ð3à/Ð/Ð/Ð/Ð/Ð/Ø9Ð9Ð9Ð9Ð9Ð9Ø=Ð=Ð=Ð=Ð=Ð=ðð ð ð ð ð ð ð ð ð ð
 &Ð%Ð%Ð%Ð%Ð%ØKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKàˆG�G >Ð2Ñ2Ô2€EØ%€KÐ%Ð%Ð%Ñ%Ø$€JÐ$Ð$Ð$Ñ$Ø (¨#¨s¨°S¨Ô 9€NÐ9Ð9Ð9Ñ9Ø€GÐÐÐÑð ÔØÔØÔðÐ ð
€ð !�b”j °"´*Ñ=Ô=Ð ð€ð !�b”j °"´*Ñ=Ô=Ð ð€ð !�b”j °"´*Ñ=Ô=Ð ð€ð !�b”j °"´*Ñ=Ô=Ð à 'ð
ô!Ð ð ð ð ñ ð ˜UÐ#Ð#€
à	Ø	Ø
Ø	Ø	Ø	Ø	Ø
Ø
Ø
ð9ð 9€
ð ð ð ñ ð  Ô&×7Ò7Ñ9Ô9€ððKð Kð Kð Kðð ð ð ð@'ð 'ð 'ð 'ð.
*ð 
*ð 
*ð 
*ð €Ô˜RÐ Ñ Ô ðGð Gð Gñ !Ô ðGðTð ð ð ð4 ;?ð ð  ð  ð  ð  ð$ð ð ð ð ð#ð #ð #ð #ð #ð #ðL Ô×)Ò)Ñ+Ô+¨vÒ5Ð5ð
ð 
ð 
ð 
ð 
ðð ð ð ð	Hð 	Hð 	Hð 	HðJð Jð Jð Jð €Ô˜RÐ Ñ Ô ðJð Jð Jñ !Ô ðJð 
ŒÔ	€ð
 Ô˜
Ø
„M�8ð8Ð ð ð ð ñ ð „NØ%Ø#Øðð ð
 „NØ%Ø#Øðð ð
 „LÐ.À'ÐQXÐYÐYØ
„LÐ.À'ÐQXÐYÐYØ
„LÐ.À'ÐQXÐYÐYØ
„K˜_ÀÈfÐUÐUØ
„MØ$Ø"Øðð ð
 „MØ$Ø"Øðð ð
 „MØ$Ø"Øðð ð
 „LÐ.À'ÐQXÐYÐYØ
„NØ%Ø#Øðð ð?$YÐ ð $ð $ð $ñ $ðJ ”nÐ&Ð ð`ð `ð `ð `ðF#ð #ð #ð #ð&ð ð ð ð Ô$ eÐ,ØÔ$ iÐ0Ø”<Ð!3Ð4ØÔ$ eÐ,Ø”<Ð!3Ð4Ø”< Ð'Ø”, Ð.Ø”, Ð.Ø”, Ð.ð
ð 
ð ð ð ð ñ ðð ð ð ð  Ø
Ø
Ø	
ð	2ð 2Ð ð ð ð ñ ðCð Cð Cð Cðð ð ð ð:ð ð ð ðð ð ð ð TÐ SÐ SÐ SÐ SÐ 4Ð5GÈÐ5LÔ MÑ SÔ SÐ SÐ SÐ SrW   