Ë
    ÚÍ:jÿi  ã                  óp  — 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
 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'm(Z( d d
l)m*Z* d dlm+Z+ d dl,Z-d dl.m/Z0 d dl1m2Z2 d dl3m4Z4 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‚d1„Z]	 	 	 	 	 	 dƒd3„Z^	 	 	 	 	 	 	 	 d„d4„Z_	 	 	 	 	 	 	 	 	 	 d…d5„Z` ejÂ                  d6¬7«      d†d8„«       Zb ejÂ                  d6¬7«      d‡d9„«       Zc	 	 	 	 	 	 	 	 dˆd:„Zd	 	 	 	 	 	 	 	 d‰d;„Ze	 	 	 	 dŠd<„Zfd=Zgd>d?œ	 	 	 	 	 	 	 	 	 d‹d@„ZhdŒdA„Zid�dB„Zj	 	 	 	 	 	 dŽdC„Zk ejÂ                  d6¬7«      d�dD„«       ZlejÚ                  jÜ                  ZnenjÞ                  dEenjà                  dFiZqdGeHdH<   enjä                  dIdJdKdLœenjæ                  dMdNdOdLœenjè                  dPdQdRdLœenjê                  dSdTdUdLœenjì                  dVdWdXdLœenjî                  dYdZd[dLœenjð                  d\d]d^dLœenjò                  d_d`dadLœenjô                  dbdcdddLœenjö                  dedfdgdLœenjø                  dhdid0dLœiZ}djeHdk<   	 	 	 	 	 	 	 	 	 	 d�dl„Z~	 	 	 	 	 	 	 	 d‘dm„Zd’dn„Z€e�j                  dofe�j                  dpfe�j                  efe�j                  dofe�j                  efe�j                  dofe�j                  efe�j                  efe�j                  efdqœ	ZƒdreHds<   	 	 	 	 	 	 	 	 d“dt„Z„eeedudvœZ…dweHdx<   d”dy„Z†	 	 	 	 	 	 	 	 d•dz„Z‡d–d{„Zˆd—d|„Z‰ G d}„ d~ed2ef   «      ZŠd˜d„Z‹	 	 	 	 	 	 	 	 	 	 d™d€„ZŒ	 	 	 	 	 	 	 	 dšd�„Z�y)›é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚ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)ÚCallableÚIterableÚIteratorÚMapping)Ú
ModuleType)Ú	TypeAlias)ÚDtype)ÚBaseMaskedDtype)Ú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Úmr4   r5   r6   r8   r9   r:   r;   r<   r=   r>   )
ÚyÚqÚmorB   ÚhrC   ÚsÚmsÚusÚnsz)Mapping[IntervalUnit, NativeIntervalUnit]Ú
UNITS_DICTÚboolc                óF   — | t         j                  t         j                  hv S ©N)r   ÚPANDASÚMODIN©Úimplementations    úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/narwhals/_pandas_like/utils.pyÚis_pandas_or_modinrU   €   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$   rR   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        rT   Úalign_and_extract_nativerf   „   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ˆ?ÐrV   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)rn   )r\   Úto_native_namespaceÚIndexÚlenr   r   ÚCUDFro   rZ   rP   Ú_backend_versionÚset_axis)ÚobjrZ   rS   Úexpected_lenÚ
actual_lenre   s         rT   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ˆ<Ó&Ð&rV   c               ó¸   — |t         j                  u r+|j                  «       dk  r | j                  |i |¤dddœ¤Ž}n | j                  |i |¤Ž}t	        d|«      S )zXWrapper around pandas' rename so that we can set `copy` based on implementation/version.rl   F)ro   Úinplacer'   )r   rP   rt   Úrenamer   )rv   rS   ÚargsÚkwargsÚresults        rT   r{   r{   ¼   sb   € ð œ×.Ñ.Ñ.Ø×'Ñ'Ó)¨DÒ0à�—‘˜TÐG VÐG°%ÀÓG‰à�—‘˜TÐ, VÑ,ˆÜÐ  &Ó)Ð)rV   é   )Ú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    rT   Úis_dtype_non_pyarrow_stringr‹   É   s.   € ô
 �l¤B§N¡NÓ3ò ´s¸<Ó7Hð Mð 8ð rV   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>   rM   Ú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           rT   Ú#non_object_native_to_narwhals_dtyper´   ×   s–  € ä�Ó€Eà�^‰^€FØÐ"Ñ"Ø�|‰|‹~ÐØÐ"Ñ"Ø�|‰|‹~ÐØÐ"Ñ"Ø�|‰|‹~ÐØÐ Ñ Ø�{‰{‹}ÐØÐ$Ñ$Ø�}‰}‹ÐØÐ$Ñ$Ø�}‰}‹ÐØÐ$Ñ$Ø�}‰}‹ÐØÐ"Ñ"Ø�|‰|‹~ÐØÐ&Ñ&Ø�~‰~ÓÐØÐ&Ñ&Ø�~‰~ÓÐÜ" <Ô0Ø�}‰}‹ÐØÐ#Ñ#Ø�~‰~ÓÐÜ$×*Ñ*¨5Ó1Ð1€vÐ1Ø!'§¡¨kÓ!:ˆØ#)§<¡<°Ó#<ˆØ�‰˜|¨\Ó:Ð:Ü$×*Ñ*¨5Ó1Ð1€vÐ1Ø!'§¡¨kÓ!:ˆØ�‰˜|Ó,Ð,Ø�>‰>ÓÐrV   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   rs   r¥   r‡   ÚapiÚtypesÚinfer_dtypeÚheadr   ÚV1ÚObject)Úseriesr®   rS   r¤   ÚinferÚinferred_dtypes         rT   Úobject_native_to_narwhals_dtyperÂ   þ   s«   € ð �^‰^€FØœ×,Ñ,Ñ,ð �}‰}‹Ðä�F‰F�L‰L×$Ñ$€Eà & ‘W±E¸&¿+¹+ÀcÓ:JÐSWÔ4X€NØ˜Ò!Ø�}‰}‹ÐØ˜Ò  W´G·J±JÑ%>à�}‰}‹ÐØ˜Ò à�}‰}‹ÐØ�=‰=‹?ÐrV   c                ó0  — |j                   }|t        j                  u r|j                  «       S | j                  rM|t
        j                  u rt        | «      n| j                  j                  }|j                  t        |«      «      S |j                  «       S rO   )r¤   r   r½   ÚCategoricalÚorderedr   rs   Ú_cudf_categorical_to_listÚ
categoriesÚto_listÚEnumr   )rŠ   r®   rS   r¤   Ú	into_iters        rT   Ú$native_categorical_to_narwhals_dtyperË     s…   € ð �^‰^€FØ”'—*‘*ÑØ×!Ñ!Ó#Ð#Ø×Òð ¤×!4Ñ!4Ñ4ô & lÔ3à×(Ñ(×0Ñ0ð 	ð
 �{‰{Ô,¨YÓ7Ó8Ð8Ø×ÑÓÐrV   c                ó   ‡ — dˆ fd„}|S )Nc                 óT   •— ‰ j                   j                  «       j                  «       S rO   )rÇ   Úto_arrowÚ	to_pylistr‰   s   €rT   Úfnz%_cudf_categorical_to_list.<locals>.fn+  s!   ø€ Ø×&Ñ&×/Ñ/Ó1×;Ñ;Ó=Ð=rV   )Úreturnz	list[Any]© )rŠ   rÐ   s   ` rT   rÆ   rÆ   %  s   ø€ õ>ð €IrV   )r`   Ú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®   rS   rÕ   Ú	str_dtypeÚarrow_native_to_narwhals_dtypeÚpa_dtypere   s           rT   r×   r×   4  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ð ô ˜Ó
ÐrV   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     rT   Úis_dtype_numpy_nullablerë   W  s@   € ô ‹x€Hä�5œ"Ÿ&™&×+Ñ+×:Ñ:Ó;ò 	5Ü�E˜6 8Ó,°Ð4ðrV   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   rs   rÚ   rë   )r¯   rS   s     rT   Úget_dtype_backendrï   b  s3   € ð
 œ×,Ñ,Ñ,ØÜ˜ÔØÜ6°uÔ=ÐÐGÀ4ÐGrV   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rO   )rï   )Ú.0r¯   rS   s     €rT   ú	<genexpr>z&iter_dtype_backends.<locals>.<genexpr>v  s   øè ø€ ÒI¸Ô˜e ^×4ÑIùs   ƒrÒ   )r¤   rS   s    `rT   Úiter_dtype_backendsrô   o  s   ø€ ó JÀ&ÔIÐIrV   c                óZ   — t        t        d«      xr t        | t        j                  «      S )NÚ
ArrowDtype)rÞ   r‡   r\   rö   ©r¯   s    rT   rÚ   rÚ   y  s   € ä”2�|Ó$ÒI¬°E¼2¿=¹=Ó)IÐIrV   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†   )é   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 presentzUnknown dtype: )*Ú
ValueErrorr¤   Ú	base_typerø   Úgetrú   Ú
issubclassr¥   rí   r‡   rö   r†   r…   r   rª   rU   ÚPANDAS_VERSIONr\   r¢   r   Ú_unparse_versionr   ÚUserWarningr£   r¬   ÚDateÚModuleNotFoundErrorrÉ   r   r½   ÚNotImplementedErrorrp   ÚCategoricalDtyperÇ   ÚStructÚArrayÚListÚTimeÚBinaryÚDecimalÚnarwhals_to_native_arrow_dtyperá   )r¯   Údtype_backendrS   r®   re   r¤   r  Úpd_typeÚinto_pd_typeÚpaÚfoundÚ	availableÚchangelog_urlr±   ÚtzÚtz_partr³   ÚexcrK   s                      rT   Ú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þ   )
rU   r  rí   ÚImportErrorre   rÝ   r  r‡   rö   r
  )r¯   rS   r®   r  r  re   Ú_to_arrow_dtypes          rT   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    rT   Úint_dtype_mapperr#  *  s0   € Ø”C˜“JÑØÜ
ˆ5ƒz×ÑÓœS ›ZÒ'ØØrV   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_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á   )rH   Úcurrentr¢   ÚitemrÐ   Úfactorre   s          rT   Úcalculate_timestamp_datetimer)  A  sd   € ð �)ÒØˆÜ,×0Ñ0°'¸9Ð1EÓFÐF€tÐFØ‰
ˆˆFÙ�!�V‹}Ðà
 ˜yð )3ð 	3ð ô ˜Ó
ÐrV   rj   )rK   rJ   rI   rH   zMapping[TimeUnit, int]Ú_TIMESTAMP_DATE_FACTORc                ó(   — | t         z  t        |   z  S rO   )r   r*  )rH   r¢   s     rT   Úcalculate_timestamp_dater,  X  s   € ØŒÑÔ!7¸	Ñ!BÑBÐBrV   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.
    rj   Úbri   )r  N)rr   ÚshapeÚcolumnsÚallr¯   Úkindr   rP   rt   r   ÚtolistÚlocÚKeyError)ÚdfÚcolumn_namesrS   ÚerrorÚes        rT   Úselect_columns_by_namer:  \  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 )NrM   )r_   r   rP   rQ   rà   rY   r¯   )rH   s    rT   Úis_non_nullable_booleanr<  y  sI   € ð 	
×ÑÜ×!Ñ!¤>×#7Ñ#7¼×9LÑ9LÐMð	Nò 	%à�H‰H�N‰N˜fÑ$ðrV   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   rP   rQ   Únumpyrs   Úcupyrá   )rS   ÚnpÚcpre   s       rT   Úimport_array_modulerB  ‚  sQ   € àœ.×/Ñ/´×1EÑ1EÐFÑFÛàˆ	Øœ×,Ñ,Ñ,Ûàˆ	Ø-¨nÐ-=Ð
>€CÜ
˜Ó
ÐrV   c                  ó   — e Zd Zy)ÚPandasLikeSeriesNamespaceN)Ú__name__Ú
__module__Ú__qualname__rÒ   rV   rT   rD  rD  �  s   … rV   rD  c                ó   — dd| ddœS )NFT)ÚsortÚas_indexÚdropnaÚobservedrÒ   )Údrop_null_keyss    rT   Úmake_group_by_kwargsrN  “  s   € Ø t°~ÐSWÑXÐXrV   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÷   )rZ   Úname)rZ   r¯   rQ  )r]   rÝ   rP  r‡   Úarrayrr   r¯   rQ  )rY   rZ   Ú	is_nestedÚseries_classÚvaluerP  Úpa_arrays          rT   Úbroadcast_series_to_indexrW  —  sd   € ð* �K‰K˜‰N€EÙÝ0ô —8‘8™F 5¬#¨e«*Ó5¸V¿\¹\ÔJˆá˜H¨E¸¿¹ÔDÐDá˜ U°&·,±,ÀVÇ[Á[ÔQÐQrV   c                óD  — | j                   }t        |«      }|dk(  r:t        |t        «      r*dd l}|  |j                  | |j
                  «       ¬«      z   S t        ||j                  «      �r/|j                   }|dk(  r| j                  |«      |z   S t        | j                  d«      rßt        |j                  d«      rÉdd l}| j                  j                  «       j                  }|j                  j                  «       j                  }|j                  j                  |«      rc|j                  j                  |«      rHt        j                    |j
                  «       «      }	| j                  |	«      |j                  |	«      z   S 	 | |j                  |«      z   S | |z   S )Nzlarge_string[pyarrow]r   )ÚtyperÙ   Ú__arrow_array__)r¯   r…   r\   rí   ÚscalarÚlarge_stringÚSeriesÚastyperÞ   ÚvaluesrZ  rY  rº   Ú	is_stringÚis_large_stringr‡   rö   )
ÚleftÚrightÚpdxÚ
left_dtypeÚleft_dtype_strr  Úright_dtypeÚ
left_arrowÚright_arrowÚpd_pa_large_strings
             rT   Úbinary_string_sum_fallbackrk  ¹  sO  € ð —‘€JÜ˜“_€NØÐ0Ò0´ZÀÄsÔ5KÛà�i�b—i‘i ¨O¨B¯O©OÓ,=Ô>Ñ>Ð>Ü�%˜Ÿ™Õ$Ø—k‘kˆØ˜XÒ%à—;‘;˜{Ó+¨eÑ3Ð3Ü�4—;‘;Ð 1Ô2´wØ�L‰LÐ+ô8
ó !àŸ™×4Ñ4Ó6×;Ñ;ˆJØŸ,™,×6Ñ6Ó8×=Ñ=ˆKØ�x‰x×!Ñ! *Ô-°"·(±(×2JÑ2JÈ;Ô2Wä%'§]¡]°?°2·?±?Ó3DÓ%EÐ"Ø—{‘{Ð#5Ó6¸¿¹ÐFXÓ9YÑYÐYàà�e—l‘l :Ó.Ñ.Ð.Ø�%‰<ÐrV   )rS   r   rÑ   rM   )rb   r%   rc   zPandasLikeSeries | objectrÑ   z.tuple[pd.Series[Any], pd.Series[Any] | object])rv   r'   rZ   r   rS   r   rÑ   r'   )
rv   r'   r|   r   rS   r   r}   r   rÑ   r'   )rŠ   r   rÑ   rM   )rŠ   r   r®   r   rÑ   r)   )r¿   zPandasLikeSeries | Noner®   r   rS   r   rÑ   r)   )rŠ   zpd.CategoricalDtyper®   r   rS   r   rÑ   r)   )rŠ   r   rÑ   zCallable[[], list[Any]])
rŠ   r   r®   r   rS   r   rÕ   rM   rÑ   r)   )r¯   r   rÑ   zTypeIs[BaseMaskedDtype])r¯   r   rS   r   rÑ   r*   )r¤   zIterable[Any]rS   r   rÑ   zIterator[DTypeBackend])r¯   r   rÑ   zTypeIs[pd.ArrowDtype])
r¯   r+   r  r*   rS   r   r®   r   rÑ   zstr | PandasDtype)r¯   r+   rS   r   r®   r   rÑ   zpd.ArrowDtype)r¯   r   rÑ   r…   )rH   r(   r&  r,   r¢   r,   rÑ   r(   )rH   r(   r¢   r,   rÑ   r(   )r6  r&   r7  zlist[str] | _1DArrayrS   r   rÑ   zNativeDataFrameT | Any)rH   r%   rÑ   rM   )rS   r   rÑ   r   )rM  rM   rÑ   zdict[str, bool])
rY   úpd.Series[Any]rZ   r   rS  rM   rT  ztype[pd.Series[Any]]rÑ   rl  )rb  ú	pd.Seriesrc  r   rd  r   rÑ   rm  )ŽÚ
__future__r   Ú	functoolsÚoperatorÚreÚtypingr   r   r   r   r   r>  r@  Ú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   rí   r  Úpandas._typingr   ÚPandasDtypeÚpandas.core.dtypes.dtypesr    Útyping_extensionsr!   Únarwhals._durationr"   Únarwhals._pandas_like.exprr#   rX   r%   Únarwhals._pandas_like.typingr&   r'   r(   Únarwhals.dtypesr)   Únarwhals.typingr*   r+   r,   r-   r.   r0   Ú__annotations__r1   Úintr2   r3   rP   rs   rQ   ÚPANDAS_LIKE_IMPLEMENTATIONÚPD_DATETIME_RGXÚcompileÚVERBOSEr§   ÚPD_DURATION_RGXr«   r?   Ú
ALIAS_DICTrL   rt   r  ÚNUMPY_VERSIONrU   rf   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*  r,  r:  r<  rB  rD  rN  rW  rk  rÒ   rV   rT   ú<module>r�     sW  ðÞ "ã Û Û 	ß =Õ =ã Û å 4÷÷ õ /÷÷ ñ õ +áßEÓEÝ Ý ãÝ3Ý9Ý(å/Ý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ó	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ðD Ø
ð Øð Ø&)ð àô rV   