Ë
    ýéñi¯g  ã                  ó”  — 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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!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+Z,d dl-m.Z/ d dl0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZCmDZDmEZE  e
de8¬«      ZFeDZGdeHd<   eDZIdeHd<   eeeJgef   ZKdeHd<   eJZLdeHd<   ejš                  ejœ                  ejž                  hZPdZQ ej¤                  eQej¦                  «      ZTdZU ej¤                  eUej¦                  «      ZVe	d   ZWdeHd<   dd d!œZXd"d#d$d%d&d'd(d)d*d+d,œ
ZYd-eHd.<   ejš                  jµ                  «       Z[	  e!e«      Z\	 d‚d0„Z]	 	 	 	 	 	 dƒd2„Z^	 	 	 	 	 	 	 	 d„d3„Z_	 	 	 	 	 	 	 	 	 	 d…d4„Z` ejÂ                  d5¬6«      d†d7„«       Zb ejÂ                  d5¬6«      d‡d8„«       Zc	 	 	 	 	 	 	 	 dˆd9„Zd	 	 	 	 	 	 	 	 d‰d:„Ze	 	 	 	 dŠd;„Zfd<Zgd=d>œ	 	 	 	 	 	 	 	 	 d‹d?„Zhejš                  jµ                  «       d@k\  rdŒdA„ZindŒdB„Zid�dC„Zj	 	 	 	 	 	 dŽdD„Zk ejÂ                  d5¬6«      d�dE„«       ZlejÚ                  jÜ                  ZnenjÞ                  dFenjà                  dGiZqdHeHdI<   enjä                  dJdKdLdMœenjæ                  dNdOdPdMœenjè                  dQdRdSdMœenjê                  dTdUdVdMœenjì                  dWdXdYdMœenjî                  dZd[d\dMœenjð                  d]d^d_dMœenjò                  d`dadbdMœenjô                  dcdddedMœenjö                  dfdgdhdMœenjø                  didjd/dMœiZ}dkeHdl<   	 	 	 	 	 	 	 	 	 	 d�dm„Z~	 	 	 	 	 	 	 	 d‘dn„Zd’do„Z€e�j                  dpfe�j                  dqfe�j                  efe�j                  dpfe�j                  efe�j                  dpfe�j                  efe�j                  efe�j                  efdrœ	ZƒdseHdt<   	 	 	 	 	 	 	 	 d“du„Z„eeedvdwœZ…dxeHdy<   d”dz„Z†	 	 	 	 	 	 	 	 d•d{„Z‡d–d|„Zˆd—d}„Z‰ G d~„ ded1ef   «      ZŠd˜d€„Z‹	 	 	 	 	 	 	 	 	 	 d™d�„ZŒy)šé    )Ú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Úparse_versionÚ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
$z¿^
    timedelta64\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
    \]                                            # Closing bracket for timedelta64
$)ÚyearÚquarterÚmonthÚweekÚdayÚhourÚminuteÚsecondÚmillisecondÚmicrosecondÚ
nanosecondÚNativeIntervalUnitÚDÚmin)ÚdÚmr5   r6   r7   r9   r:   r;   r<   r=   r>   r?   )
ÚyÚqÚmorC   ÚhrD   ÚsÚmsÚusÚnsz)Mapping[IntervalUnit, NativeIntervalUnit]Ú
UNITS_DICTÚboolc                óF   — | t         j                  t         j                  hv S ©N)r   ÚPANDASÚMODIN©Úimplementations    ú]/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/narwhals/_pandas_like/utils.pyÚis_pandas_or_modinrV      s   € Øœn×3Ñ3´^×5IÑ5IÐJÐJÐJó    r&   c                óX  — ddl m} | j                  j                  }| j                  r=t        ||«      r1|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%   rS   z$Expected Series or scalar, got list.)Únarwhals._pandas_like.seriesr&   ÚnativeÚindexÚ
_broadcastÚ
isinstanceÚilocÚ	set_indexÚ_implementationÚlistÚ	TypeError)ÚlhsÚrhsr&   Ú	lhs_indexÚmsgs        rU   Úalign_and_extract_nativerg   ƒ   sî   € õ >à—
‘
× Ñ €Ià
‡~‚~œ* SÐ*:Ô;ÀCÇNÂNØ�z‰z�‰˜qÑ! 3§:¡:Ð-Ð-ä�#Ð'Ô(Ø�>Š>Ø—J‘J §
¡
§¡°Ñ 2Ð3Ð3Ø�:‰:×Ñ 9Ñ,à—
‘
Ü˜#Ÿ*™* iÀ×@SÑ@SÔTðð ð —
‘
˜CŸJ™JÐ'Ð'ä�#”tÔØ4ˆÜ˜‹nÐð �:‰:�sˆ?ÐrW   c               óª  — t        ||j                  «       j                  «      r.t        |«      x}t        | «      x}k7  rd|› d|› �}t	        |«      ‚|t
        j                  u r| j                  d¬«      } || _        | S |t
        j                  u r0d|j                  «       cxk  rdk  rn n| j                  |dd¬«      S | j                  |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)ro   )r]   Úto_native_namespaceÚIndexÚlenr   r   ÚCUDFrp   r[   rQ   Ú_backend_versionÚset_axis)Úobjr[   rT   Úexpected_lenÚ
actual_lenrf   s         rU   r_   r_   ¤   sÏ   € ô �%˜×;Ñ;Ó=×CÑCÔDÜ˜E›
Ð"ˆÜ˜C›Ð
 ˆ*òJ"ð +¨<¨.¸ÀzÀlÐSˆÜ˜‹oÐØœ×,Ñ,Ñ,Ø�h‰h˜EˆhÓ"ˆØˆŒ	Øˆ
Øœ×.Ñ.Ñ.Ø�.×1Ñ1Ó3Ô:°dÕ:à�|‰|˜E¨°ˆ|Ó6Ð6Ø�<‰<˜ Aˆ<Ó&Ð&rW   c               óÀ   — |t         j                  u r*|j                  «       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.rm   ÚinplaceF)rp   r{   r(   )r   rQ   ru   Úrenamer	   )rw   rT   ÚargsÚkwargsÚresults        rU   r|   r|   »   sg   € ð œ×.Ñ.Ñ.Ø×'Ñ'Ó)¨TÒ1à�—‘˜TÐ; VÑ;°UÒ;‰à�—‘˜TÐG VÐG°%ÀÓGˆÜÐ  &Ó)Ð)rW   é   )Úmaxsizec                óT   — t        | t        j                  «      xs t        | «      dv S )zR*There is no problem which can't be solved by adding an extra string type* pandas.>   ústring[python]ústring[pyarrow_numpy]ú<StringDtype(na_value=nan)>ÚstrÚstring)r]   ÚpdÚStringDtyper†   ©Únative_dtypes    rU   Úis_dtype_non_pyarrow_stringrŒ   È   s.   € ô
 �l¤B§N¡NÓ3ò ´s¸<Ó7Hð Mð 8ð rW   c                óF  — t        | «      }|j                  }|dv r|j                  «       S |dv r|j                  «       S |dv r|j	                  «       S |dv r|j                  «       S |dv r|j                  «       S |dv r|j                  «       S |dv r|j                  «       S |dv r|j                  «       S |d	v r|j                  «       S |d
v r|j                  «       S t        | «      r|j                  «       S |dv r|j                  «       S t        j!                  |«      x}r4|j#                  d«      }|j#                  d«      }|j%                  ||«      S t&        j!                  |«      x}r"|j#                  d«      }|j)                  |«      S |j+                  «       S )N>   ÚInt64Úint64>   ÚInt32Úint32>   ÚInt16Úint16>   ÚInt8Úint8>   ÚUInt64Úuint64>   ÚUInt32Úuint32>   ÚUInt16Úuint16>   ÚUInt8Úuint8>   ÚFloat64Úfloat64>   ÚFloat32Úfloat32>   rN   ÚbooleanÚ	time_unitÚ	time_zone)r†   ÚdtypesrŽ   r�   r’   r”   r–   r˜   rš   rœ   rž   r    rŒ   ÚStringÚBooleanÚPATTERN_PD_DATETIMEÚmatchÚgroupÚDatetimeÚPATTERN_PD_DURATIONÚDurationÚUnknown)r‹   ÚversionÚdtyper¥   Úmatch_Údt_time_unitÚdt_time_zoneÚdu_time_units           rU   Ú#non_object_native_to_narwhals_dtyperµ   Ö   s–  € ä�Ó€Eà�^‰^€FØÐ"Ñ"Ø�|‰|‹~ÐØÐ"Ñ"Ø�|‰|‹~ÐØÐ"Ñ"Ø�|‰|‹~ÐØÐ Ñ Ø�{‰{‹}ÐØÐ$Ñ$Ø�}‰}‹ÐØÐ$Ñ$Ø�}‰}‹ÐØÐ$Ñ$Ø�}‰}‹ÐØÐ"Ñ"Ø�|‰|‹~ÐØÐ&Ñ&Ø�~‰~ÓÐØÐ&Ñ&Ø�~‰~ÓÐÜ" <Ô0Ø�}‰}‹ÐØÐ#Ñ#Ø�~‰~ÓÐÜ$×*Ñ*¨5Ó1Ð1€vÐ1Ø!'§¡¨kÓ!:ˆØ#)§<¡<°Ó#<ˆØ�‰˜|¨\Ó:Ð:Ü$×*Ñ*¨5Ó1Ð1€vÐ1Ø!'§¡¨kÓ!:ˆØ�‰˜|Ó,Ð,Ø�>‰>ÓÐrW   c                ó¢  — |j                   }|t        j                  u r|j                  «       S t        j
                  j                  j                  }| €dn || j                  d«      d¬«      }|dk(  r|j                  «       S |dk(  r"|t        j                  ur|j                  «       S |dk(  r|j                  «       S |j                  «       S )NÚemptyéd   T)Úskipnar‡   )r¥   r   rt   r¦   rˆ   ÚapiÚtypesÚinfer_dtypeÚheadr   ÚV1ÚObject)Úseriesr¯   rT   r¥   ÚinferÚinferred_dtypes         rU   Úobject_native_to_narwhals_dtyperÃ   ý   s«   € ð �^‰^€FØœ×,Ñ,Ñ,ð �}‰}‹Ðä�F‰F�L‰L×$Ñ$€Eà & ‘W±E¸&¿+¹+ÀcÓ:JÐSWÔ4X€NØ˜Ò!Ø�}‰}‹ÐØ˜Ò  W´G·J±JÑ%>à�}‰}‹ÐØ˜Ò à�}‰}‹ÐØ�=‰=‹?ÐrW   c                ó0  — |j                   }|t        j                  u r|j                  «       S | j                  rM|t
        j                  u rt        | «      n| j                  j                  }|j                  t        |«      «      S |j                  «       S rP   )r¥   r   r¾   ÚCategoricalÚorderedr   rt   Ú_cudf_categorical_to_listÚ
categoriesÚto_listÚEnumr   )r‹   r¯   rT   r¥   Ú	into_iters        rU   Ú$native_categorical_to_narwhals_dtyperÌ     s…   € ð �^‰^€FØ”'—*‘*ÑØ×!Ñ!Ó#Ð#Ø×Òð ¤×!4Ñ!4Ñ4ô & lÔ3à×(Ñ(×0Ñ0ð 	ð
 �{‰{Ô,¨YÓ7Ó8Ð8Ø×ÑÓÐrW   c                ó   ‡ — dˆ fd„}|S )Nc                 óT   •— ‰ j                   j                  «       j                  «       S rP   )rÈ   Úto_arrowÚ	to_pylistrŠ   s   €rU   Úfnz%_cudf_categorical_to_list.<locals>.fn*  s!   ø€ Ø×&Ñ&×/Ñ/Ó1×;Ñ;Ó=Ð=rW   )Úreturnz	list[Any]© )r‹   rÑ   s   ` rU   rÇ   rÇ   $  s   ø€ õ>ð €IrW   )ra   ÚstructÚdecimalF)Úallow_objectc               óž  — t        | «      }t        | «      s|j                  t        «      r8ddlm} t        | d«      r| j                  «       }n| j                  } |||«      S |dk(  rt        | ||«      S |dk7  rt        | |«      S |t        j                  u r|j                  j                  «       S |rt        d ||«      S d}t!        |«      ‚)Nr   )Únative_to_narwhals_dtyperÏ   ÚcategoryÚobjectz;Unreachable code, object dtype should be handled separately)r†   Úis_dtype_pyarrowÚ
startswithÚCUDF_BASE_DTYPE_PREFIXÚnarwhals._arrow.utilsrØ   ÚhasattrrÏ   Úpyarrow_dtyperÌ   rµ   r   ÚDASKr¥   r¦   rÃ   ÚAssertionError)r‹   r¯   rT   rÖ   Ú	str_dtypeÚarrow_native_to_narwhals_dtypeÚpa_dtyperf   s           rU   rØ   rØ   3  sÑ   € ô �LÓ!€Iä˜Ô%¨×)=Ñ)=Ô>TÔ)Uõ	
ô �< Ô,Ø$0×$9Ñ$9Ó$;‰Hà#×1Ñ1ˆHÙ-¨h¸Ó@Ð@Ø�JÒÜ3°LÀ'È>ÓZÐZØ�HÒÜ2°<ÀÓIÐIØœ×,Ñ,Ñ,ð �~‰~×$Ñ$Ó&Ð&ÙÜ.¨t°W¸nÓMÐMàEð ô ˜Ó
ÐrW   )rk   é   c                ó”   — t        «       }t        | t        j                  j                  j
                  «      xr t        | d|«      du S )z/Return `True` if `dtype` is `"numpy_nullable"`.ÚbaseN)rÚ   r]   rˆ   rº   Ú
extensionsÚExtensionDtypeÚgetattr)r°   Úsentinels     rU   Úis_dtype_numpy_nullablerí   X  s@   € ô “8ˆä�uœbŸf™f×/Ñ/×>Ñ>Ó?ò 9Ü˜˜v xÓ0°DÐ8ð	
rW   c                ó„   — t        | t        j                  j                  j                  «      rddlm} t        | |«      S y)Nr   r   F)r]   rˆ   rº   ré   rê   Úpandas.core.arrays.maskedr    )r°   ÚOldBaseMaskedDtypes     rU   rí   rí   c  s6   € ô �eœRŸV™V×.Ñ.×=Ñ=Ô>õô ˜eÐ%7Ó8Ð8ØrW   c                ó^   — |t         j                  u ryt        | «      ryt        | «      rdS dS )zjGet dtype backend for pandas type.

    Matches pandas' `dtype_backend` argument in `convert_dtypes`.
    NÚpyarrowÚnumpy_nullable)r   rt   rÛ   rí   )r°   rT   s     rU   Úget_dtype_backendrô   r  s3   € ð
 œ×,Ñ,Ñ,ØÜ˜ÔØÜ6°uÔ=ÐÐGÀ4ÐGrW   c                ó   ‡— ˆfd„| D «       S )ziYield a `DTypeBackend` per-dtype.

    Matches pandas' `dtype_backend` argument in `convert_dtypes`.
    c              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wrP   )rô   )Ú.0r°   rT   s     €rU   ú	<genexpr>z&iter_dtype_backends.<locals>.<genexpr>†  s   øè ø€ ÒI¸Ô˜e ^×4ÑIùs   ƒrÓ   )r¥   rT   s    `rU   Úiter_dtype_backendsrù     s   ø€ ó JÀ&ÔIÐIrW   c                óZ   — t        t        d«      xr t        | t        j                  «      S )NÚ
ArrowDtype)rß   rˆ   r]   rû   ©r°   s    rU   rÛ   rÛ   ‰  s   € ä”2�|Ó$ÒI¬°E¼2¿=¹=Ó)IÐIrW   rÙ   rÚ   zMapping[type[DType], str]ÚNW_TO_PD_DTYPES_INVARIANTzFloat64[pyarrow]rž   rŸ   )rò   ró   NzFloat32[pyarrow]r    r¡   úInt64[pyarrow]rŽ   r�   zInt32[pyarrow]r�   r‘   zInt16[pyarrow]r’   r“   zInt8[pyarrow]r”   r•   zUInt64[pyarrow]r–   r—   zUInt32[pyarrow]r˜   r™   zUInt16[pyarrow]rš   r›   zUInt8[pyarrow]rœ   r�   zboolean[pyarrow]r¢   z<Mapping[type[DType], Mapping[DTypeBackend, str | type[Any]]]ÚNW_TO_PD_DTYPES_BACKENDc           	     ó  — |dvrd|› d�}t        |«      ‚|j                  }| j                  «       }t        j	                  |«      x}r|S t
        j	                  |«      x}r||   S t        ||j                  «      r9|dk(  r(dd l}	t        j                   |	j                  «       «      S |dk(  ryt        S t        | |j                  «      rÎt        |«      rxt         dk  rot#        | |j                  «      rV| j$                  d	k7  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        | |j0                  «      r4t        |«      rt         dk  rd	}n| j$                  }|dk(  rd|› d�S d|› d�S t        | |j2                  «      r	 dd l}	yt        | |j6                  «      ro|t8        j:                  u rd}t=        |«      ‚t#        | |j6                  «      r-|j?                  «       }|jA                  | jB                  d¬«      S d}t        |«      ‚t        ||jD                  |jF                  |jH                  |jJ                  |jL                  |jN                  f«      rtQ        | ||«      S d | › �}tS        |«      ‚# t4        $ r}d}t5        |«      |‚d }~ww xY w)!N>   Nrò   ró   z;Expected one of {None, 'pyarrow', 'numpy_nullable'}, got: 'ú'rò   r   ró   r‡   )ræ   rL   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 presentzUnknown dtype: )*Ú
ValueErrorr¥   Ú	base_typerý   Úgetrÿ   Ú
issubclassr¦   rò   rˆ   rû   r‡   r†   r   r«   rV   ÚPANDAS_VERSIONr]   r£   r   Ú_unparse_versionr   ÚUserWarningr¤   r­   ÚDateÚModuleNotFoundErrorrÊ   r   r¾   ÚNotImplementedErrorrq   ÚCategoricalDtyperÈ   ÚStructÚArrayÚListÚTimeÚBinaryÚDecimalÚnarwhals_to_native_arrow_dtyperâ   )r°   Údtype_backendrT   r¯   rf   r¥   r  Úpd_typeÚinto_pd_typeÚpaÚfoundÚ	availableÚchangelog_urlr²   ÚtzÚtz_partr´   ÚexcrL   s                      rU   Únarwhals_to_native_dtyper!  ½  sD  € ð Ð?Ñ?ØMÈmÈ_Ð\]Ð^ˆÜ˜‹oÐØ�^‰^€FØ—‘Ó!€IÜ+×/Ñ/°	Ó:Ð:€wÐ:ØˆÜ.×2Ñ2°9Ó=Ð=€|Ð=Ø˜MÑ*Ð*Ü�)˜VŸ]™]Ô+Ø˜IÒ%Û ô —=‘=  §¡£Ó-Ð-ØÐ,Ò,ØÜˆ
Ü  v§¡Ô7Ü˜nÔ-´.ð D
ò 3
ô ˜% §¡Ô1°e·o±oÈÒ6MÜ ×1Ñ1´.ÓA�ØHÈÈ	ÐQRÐS�	ð !h�à-¨e¯o©oÐ-@ÀÈIÈ;ð W+ð ,9¨/ð :WðXð ô ˜c¤;Ô/Ø‰Là Ÿ?™?ˆLà˜IÒ%Ø-2¯_©_Ð'< rÐ'<˜˜b˜T‘lÀ2ˆGØ ˜~¨g¨Y°jÐAÐAØ&+§o¡oÐ 5 Ð 5�B�r�d‘)¸BˆØ˜\˜N¨7¨)°1Ð5Ð5Ü  v§¡Ô7Ü˜nÔ-´.ð D
ò 3
ð  ‰Là Ÿ?™?ˆLð  	Ò)ð ˜�~ ZÐ0ð	
ð   ˜~¨QÐ/ð	
ô
    v§{¡{Ô3ð	4Û ð
 !Ü  v§{¡{Ô3Ø”g—j‘jÑ ØMˆCÜ% cÓ*Ð*Ü�e˜VŸ[™[Ô)Ø×3Ñ3Ó5ˆBØ×&Ñ& u×'7Ñ'7ÀÐ&ÓFÐFØIˆÜ˜‹oÐÜØà�M‰MØ�L‰LØ�K‰KØ�K‰KØ�M‰MØ�N‰Nð	
ô
ô .¨e°^ÀWÓMÐMØ˜E˜7Ð
#€CÜ
˜Ó
Ðøô7 #ò 	4àCˆCÜ% cÓ*°Ð3ûð	4ús   Ç;K0 Ë0	LË9LÌLc                ó  — t        |«      r0t        dk\  r'	 dd l}ddlm} t        j                   || |«      «      S d| › d|› d|› d	�}t        |«      ‚# t        $ r#}d| › d|j                  › �}t        |«      |‚d }~ww xY w)
N)ræ   ræ   r   zUnable to convert to z! due to the following exception: )r!  zConverting to z+ dtype is not supported for implementation z and version r  )
rV   r	  rò   ÚImportErrorrf   rÞ   r!  rˆ   rû   r  )r°   rT   r¯   r  r   rf   Ú_to_arrow_dtypes          rU   r  r  %  s¤   € ô ˜.Ô)¬nÀÒ.Fð	,Û õ 	Vä�}‰}™_¨U°GÓ<Ó=Ð=à
˜˜ÐJØÐ
˜-¨ y°ð	3ð ô ˜cÓ
"Ð"øô ò 	,à'¨ wÐ.OÐPS×PWÑPWÈyÐYð ô ˜cÓ"¨Ð+ûð		,ús   –A Á	A?ÁA:Á:A?c                ól   — dt        | «      v ryt        | «      j                  «       t        | «      k7  ryy)Nrò   rþ   rŽ   r�   )r†   Úlowerrü   s    rU   Úint_dtype_mapperr'  :  s0   € Ø”C˜“JÑØÜ
ˆ5ƒz×ÑÓœS ›ZÒ'ØØrW   iè  i@B )	)rL   rK   )rL   rJ   )rK   rL   )rK   rJ   )rJ   rL   )rJ   rK   )rI   rL   )rI   rK   )rI   rJ   zGMapping[tuple[UnitCurrent, UnitTarget], tuple[BinOpBroadcast, IntoRhs]]Ú_TIMESTAMP_DATETIME_OP_FACTORc                ó€   — ||k(  r| S t         j                  ||f«      x}r|\  }} || |«      S d|› d�}t        |«      ‚)Nzunexpected time unit zD, please report an issue at https://github.com/narwhals-dev/narwhals)r(  r  râ   )rI   Úcurrentr£   ÚitemrÑ   Úfactorrf   s          rU   Úcalculate_timestamp_datetimer-  Q  sd   € ð �)ÒØˆÜ,×0Ñ0°'¸9Ð1EÓFÐF€tÐFØ‰
ˆˆFÙ�!�V‹}Ðà
 ˜yð )3ð 	3ð ô ˜Ó
ÐrW   rk   )rL   rK   rJ   rI   zMapping[TimeUnit, int]Ú_TIMESTAMP_DATE_FACTORc                ó(   — | t         z  t        |   z  S rP   )r   r.  )rI   r£   s     rU   Úcalculate_timestamp_dater0  h  s   € ØŒÑÔ!7¸	Ñ!BÑBÐBrW   c                ó  — t        |«      | j                  d   k(  r| j                  |k(  j                  «       r| S | j                  j                  j
                  dk(  s%|t        j                  u rO|j                  «       dk  r<t        || j                  j                  «       ¬«      x}r|‚| j                  dd…|f   S 	 | |   S # t        $ r0}t        || j                  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.
    rk   Úbrj   )r  N)rs   ÚshapeÚcolumnsÚallr°   Úkindr   rQ   ru   r   ÚtolistÚlocÚKeyError)ÚdfÚcolumn_namesrT   ÚerrorÚes        rU   Úselect_columns_by_namer>  l  sì   € ô ˆ<Ó˜BŸH™H Q™KÒ'¨R¯Z©Z¸<Ñ-G×,LÑ,LÔ,NØˆ	Ø
�
‰
×Ñ×Ñ Ò$Øœ.×/Ñ/Ñ/Ø×+Ñ+Ó-°Ò6ô (¨ÀÇ
Á
×@QÑ@QÓ@SÔTÐTˆ5ÐTØˆKØ�v‰v’a˜�oÑ&Ð&ðØ�,ÑÐøÜò Ü'¨ÀÇ
Á
×@QÑ@QÓ@SÔTÐTˆ5ÐTØ˜QÐØûðús   Ã C Ã	C>Ã+C9Ã9C>c                ó®   — | j                   t        j                  t        j                  t        j                  hv xr | j
                  j                  dk(  S )NrN   )r`   r   rQ   rR   rá   rZ   r°   )rI   s    rU   Úis_non_nullable_booleanr@  ‰  sI   € ð 	
×ÑÜ×!Ñ!¤>×#7Ñ#7¼×9LÑ9LÐMð	Nò 	%à�H‰H�N‰N˜fÑ$ðrW   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   rQ   rR   Únumpyrt   Úcupyrâ   )rT   ÚnpÚcprf   s       rU   Úimport_array_modulerF  ’  sQ   € àœ.×/Ñ/´×1EÑ1EÐFÑFÛàˆ	Øœ×,Ñ,Ñ,Ûàˆ	Ø-¨nÐ-=Ð
>€CÜ
˜Ó
ÐrW   c                  ó   — e Zd Zy)ÚPandasLikeSeriesNamespaceN)Ú__name__Ú
__module__Ú__qualname__rÓ   rW   rU   rH  rH     s   … rW   rH  c                ó   — dd| ddœS )NFT)ÚsortÚas_indexÚdropnaÚobservedrÓ   )Údrop_null_keyss    rU   Úmake_group_by_kwargsrR  £  s   € Ø t°~ÐSWÑXÐXrW   c               óü   — | j                   d   }|rLddlm} t        j                   ||t        |«      «      | j                  ¬«      } |||| j                  ¬«      S  |||| j                  | j                  ¬«      S )a`  Broadcast a scalar value from a (one element) Series to match a target index.

    For nested (arrow-backed) types, we rely on
    [`pandas.array`](https://pandas.pydata.org/docs/reference/api/pandas.array.html).

    Arguments:
        native: The native pandas-like Series containing the scalar value to broadcast.
        index: The target index to broadcast to.
        is_nested: Whether the Series has a nested (arrow-backed) dtype.
        series_class: Series class to use for constructing the result.

    Returns:
        A new Series with the scalar value broadcast to match the target index.
    r   )Úrepeatrü   )r[   Úname)r[   r°   rU  )r^   rÞ   rT  rˆ   Úarrayrs   r°   rU  )rZ   r[   Ú	is_nestedÚseries_classÚvaluerT  Úpa_arrays          rU   Úbroadcast_series_to_indexr[  §  sd   € ð* �K‰K˜‰N€EÙÝ0ô —8‘8™F 5¬#¨e«*Ó5¸V¿\¹\ÔJˆá˜H¨E¸¿¹ÔDÐDá˜ U°&·,±,ÀVÇ[Á[ÔQÐQrW   )rT   r   rÒ   rN   )rc   r&   rd   zPandasLikeSeries | objectrÒ   z.tuple[pd.Series[Any], pd.Series[Any] | object])rw   r(   r[   r   rT   r   rÒ   r(   )
rw   r(   r}   r   rT   r   r~   r   rÒ   r(   )r‹   r   rÒ   rN   )r‹   r   r¯   r   rÒ   r*   )rÀ   zPandasLikeSeries | Noner¯   r   rT   r   rÒ   r*   )r‹   zpd.CategoricalDtyper¯   r   rT   r   rÒ   r*   )r‹   r   rÒ   zCallable[[], list[Any]])
r‹   r   r¯   r   rT   r   rÖ   rN   rÒ   r*   )r°   r   rÒ   zTypeIs[BaseMaskedDtype])r°   r   rT   r   rÒ   r+   )r¥   zIterable[Any]rT   r   rÒ   zIterator[DTypeBackend])r°   r   rÒ   zTypeIs[pd.ArrowDtype])
r°   r,   r  r+   rT   r   r¯   r   rÒ   zstr | PandasDtype)r°   r,   rT   r   r¯   r   rÒ   zpd.ArrowDtype)r°   r   rÒ   r†   )rI   r)   r*  r-   r£   r-   rÒ   r)   )rI   r)   r£   r-   rÒ   r)   )r:  r'   r;  zlist[str] | _1DArrayrT   r   rÒ   zNativeDataFrameT | Any)rI   r&   rÒ   rN   )rT   r   rÒ   r   )rQ  rN   rÒ   zdict[str, bool])
rZ   úpd.Series[Any]r[   r   rW  rN   rX  ztype[pd.Series[Any]]rÒ   r\  )�Ú
__future__r   Ú	functoolsÚoperatorÚreÚtypingr   r   r   r   r   r	   rB  rD  Úpandasrˆ   Únarwhals._compliantr
   Únarwhals._constantsr   r   r   r   r   r   Únarwhals._exceptionsr   Únarwhals._utilsr   r   r   r   r   r   r   Únarwhals.exceptionsr   Úcollections.abcr   r   r   r»   r   rò   r  Úpandas._typingr   ÚPandasDtypeÚpandas.core.dtypes.dtypesr    Útyping_extensionsr!   r"   Únarwhals._durationr#   Únarwhals._pandas_like.exprr$   rY   r&   Únarwhals._pandas_like.typingr'   r(   r)   Únarwhals.dtypesr*   Únarwhals.typingr+   r,   r-   r.   r/   r1   Ú__annotations__r2   Úintr3   r4   rQ   rt   rR   ÚPANDAS_LIKE_IMPLEMENTATIONÚPD_DATETIME_RGXÚcompileÚVERBOSEr¨   ÚPD_DURATION_RGXr¬   r@   Ú
ALIAS_DICTrM   ru   r	  ÚNUMPY_VERSIONrV   rg   r_   r|   Ú	lru_cacherŒ   rµ   rÃ   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  r'  ÚfloordivÚmulr(  r-  r.  r0  r>  r@  rF  rH  rR  r[  rÓ   rW   rU   ú<module>r     sL  ðÞ "ã Û Û 	ß G× Gã Û å 4÷÷ õ /÷÷ ñ õ +áß;Ñ;Ý ãÝ3Ý9ß3å/Ý9Ý=÷ñ õ
 &ßKÓKá�G >Ô2€EØ%€K�Ó%Ø$€J�	Ó$Ø (¨#¨s¨°S¨Ñ 9€N�IÓ9Ø€GˆYÓð ×ÑØ×ÑØ×ÑðÐ ð
€ð !�b—j‘j °"·*±*Ó=Ð ð€ð
 !�b—j‘j °"·*±*Ó=Ð à 'ð
ñ!Ð �Ió ð ˜UÑ#€
à	Ø	Ø
Ø	Ø	Ø	Ø	Ø
Ø
Ø
ñ9€
Ð5ó ð  ×&Ñ&×7Ñ7Ó9€ðñ
 ˜bÓ!€ðóKðØ	ðØ 9ðà3óðB'Ø	ð'Ø #ð'Ø8Fð'àó'ð.
*Ø	ð
*Ø #ð
*Ø5Cð
*ØORð
*àó
*ð €×Ñ˜RÔ ò
ó !ð
ð €×Ñ˜RÔ ò#ó !ð#ðLØ#ðØ.5ðØGUðà
óð. Ø%ð Ø07ð ØIWð à
ó ð 	Øð	àó	ð 7Ð ð ñ Øð àð ð #ð ð
 ð ð ó ðF ×Ñ×)Ñ)Ó+¨vÒ5ô
óó	HðJØðJØ+9ðJàóJð €×Ñ˜RÔ òJó !ðJð 
�‰×	Ñ	€ð
 ×Ñ˜
Ø
‡M�M�8ð8Ð Ð4ó ð ‡N�NØ%Ø#Øñð
 ‡N�NØ%Ø#Øñð
 ‡L�LÐ.À'ÐQXÑYØ
‡L�LÐ.À'ÐQXÑYØ
‡L�LÐ.À'ÐQXÑYØ
‡K�K˜_ÀÈfÑUØ
‡M�MØ$Ø"Øñð
 ‡M�MØ$Ø"Øñð
 ‡M�MØ$Ø"Øñð
 ‡L�LÐ.À'ÐQXÑYØ
‡N�NØ%Ø#Øñð?$YÐ ÐUó $ðNeØðeàðeð #ðeð ð	eð
 óeðP#Øð#Ø&4ð#Ø?Fð#àó#ó*ð ×$Ò$ eÐ,Ø×$Ò$ iÐ0Ø—<’<Ð!3Ð4Ø×$Ò$ eÐ,Ø—<’<Ð!3Ð4Ø—<’< Ð'Ø—,’, Ð.Ø—,’, Ð.Ø—,’, Ð.ñ
ð ð  ó ðØðØ'ðØ4<ðàóð  Ø
Ø
Ø	
ñ	2Ð Ð.ó óCðØðà&ðð #ðð ó	ó:óô TÐ 4Ð5GÈÐ5LÑ MÔ SóYðRØðRàðRð ð	Rð
 'ðRð ôRrW   