Ë
    z�h×k  ã                  ó’  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  ede¬«      Ze	r:d dlmZ  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dlm'Z' d dl(m)Z) d dl(m*Z* d dl(m+Z+  ede$¬«      Z,ejZ                  ej\                  ej^                  hZ0dZ1 ejd                  e1ejf                  «      Z4dZ5 ejd                  e5ejf                  «      Z6d Z7 ejd                  e7ejf                  «      Z8d!Z9 ejd                  e9ejf                  «      Z:	 	 	 	 	 	 d9d#„Z;	 	 	 	 	 	 	 	 	 	 d:d$„Z<	 	 	 	 	 	 	 	 	 	 d;d%„Z=	 	 	 	 	 	 	 	 	 	 	 	 d<d&„Z> ej~                  d'¬(«      d=d)„«       Z@	 	 	 	 	 	 	 	 d>d*„ZA	 	 	 	 	 	 	 	 d?d+„ZB	 	 	 	 	 	 	 	 d@d,„ZCdAd-„ZD ej~                  d'¬(«      dBd.„«       ZE	 	 	 	 	 	 	 	 	 	 	 	 dCd/„ZF	 	 	 	 dDd0„ZGdEd1„ZH	 	 	 	 	 	 	 	 dFd2„ZIdGd3„ZJ	 	 	 	 	 	 	 	 	 	 dHd4„ZK	 	 	 	 	 	 	 	 	 	 	 	 dId5„ZLdJd6„ZM G d7„ d8ed"e
f   «      ZNy)Ké    )ÚannotationsN)Úsuppress)Úchain)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚSequence)ÚSized)ÚTypeVar)ÚEagerSeriesNamespace)Ú_DelayedCategories)ÚColumnNotFoundError)ÚDuplicateError)Ú
ShapeError)ÚImplementation)ÚVersion)Úisinstance_or_issubclassÚT)Úbound)ÚDtype©ÚPandasLikeDataFrame)ÚPandasLikeExpr©ÚPandasLikeSeries)ÚDType)ÚDTypeBackend)ÚTimeUnit)Ú_1DArrayÚExprTaÉ  ^
    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]"
$r   c                óž  — ddl m} ddlm} | j                  j
                  }t        ||«      rt        S | 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r9| j                  t        |j                  ||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   r   ©ÚimplementationÚbackend_versionz$Expected Series or scalar, got list.)Únarwhals._pandas_like.dataframer   Únarwhals._pandas_like.seriesr   ÚnativeÚindexÚ
isinstanceÚNotImplementedÚ
_broadcastÚilocÚ	set_indexÚ_implementationÚ_backend_versionÚlistÚ	TypeError)ÚlhsÚrhsr   r   Ú	lhs_indexÚmsgs         úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_pandas_like/utils.pyÚalign_and_extract_nativer7   ]   s  € õ DÝ=à—
‘
× Ñ €Iä�#Ð*Ô+ÜÐà
‡~‚~œ* SÐ*:Ô;ÀCÇNÂNØ�z‰z�‰˜qÑ! 3§:¡:Ð-Ð-ä�#Ð'Ô(Ø�>Š>Ø—J‘J §
¡
§¡°Ñ 2Ð3Ð3Ø�:‰:×Ñ 9Ñ,à—
‘
ÜØ—J‘JØØ#&×#6Ñ#6Ø$'×$8Ñ$8ô	ðð ð —
‘
˜CŸJ™JÐ'Ð'ä�#”tÔØ4ˆÜ˜‹nÐà�:‰:�sˆ?Ðó    c               ó´  — t        ||j                  «       j                  «      r.t        |«      x}t        | «      x}k7  rd|› d|› �}t	        |«      ‚|t
        j                  u r| j                  d¬«      } || _        | S |t
        j                  u r
|dk  rddi}ni }|t
        j                  u rd|cxk  rdk  r	n nd|d	<   n	  | j                  |fd
di|¤Ž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©é   Úinplace©r=   é   ©é   ÚcopyÚaxisr   )r)   Úto_native_namespaceÚIndexÚlenr   r   ÚCUDFrC   r(   ÚPANDASÚset_axis)Úobjr(   r#   r$   Úexpected_lenÚ
actual_lenr5   Úkwargss           r6   r-   r-   †   sê   € ô �%˜×;Ñ;Ó=×CÑCÔDÜ˜E›
Ð"ˆÜ˜C›Ð
 ˆ*òJ"ð +¨<¨.¸ÀzÀlÐSˆÜ˜‹oÐØœ×,Ñ,Ñ,Ø�h‰h˜EˆhÓ"ˆØˆŒ	Øˆ
Øœ×.Ñ.Ñ.Ø˜$Òà˜UÐ#‰àˆØœ×.Ñ.Ñ.Ø�/Ô( DÕ(àˆˆvŠàØˆ3�<‰<˜Ñ0 AÐ0¨Ñ0Ð0r8   c               ó  — |t         j                  u r| j                  d¬«      } || _        | S |t         j                  u r
|dk  rddi}ni }|t         j                  u rd|cxk  rdk  r	n nd|d<   n	  | j
                  |fdd	i|¤ŽS )
zWrapper around pandas' set_axis to set object columns.

    We can set `copy` / `inplace` based on implementation/version.
    Fr:   r<   r>   r?   rA   rC   rD   r=   )r   rH   rC   ÚcolumnsrI   rJ   )rK   rP   r#   r$   rN   s        r6   Úset_columnsrQ   ©   s•   € ð œ×,Ñ,Ñ,Ø�h‰h˜EˆhÓ"ˆØˆŒØˆ
Øœ×.Ñ.Ñ.Ø˜$Òà˜UÐ#‰àˆØœ×.Ñ.Ñ.Ø�/Ô( DÕ(àˆˆvŠàØˆ3�<‰<˜Ñ2 aÐ2¨6Ñ2Ð2r8   c               ó€   — |t         j                  u r|dk\  r | j                  |i |¤ŽS  | j                  |i |¤ddi¤ŽS )zXWrapper around pandas' rename so that we can set `copy` based on implementation/version.rA   rC   F)r   rI   Úrename)rK   r#   r$   ÚargsrN   s        r6   rS   rS   Ç   sK   € ð œ×.Ñ.Ñ.Ø˜4Òàˆs�z‰z˜4Ð* 6Ñ*Ð*Øˆ3�:‰:�tÐ2˜vÑ2¨EÒ2Ð2r8   é   )Úmaxsizec                óX  ‡ — 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 |dv r|j                  «       S |dv r|j                  «       S |j                  d«      r|j                  «       S |dk(  rt!        ‰ |ˆ fd„«      S t"        j%                  |«      x}st&        j%                  |«      x}r4|j)                  d«      }|j)                  d«      }|j+                  ||«      S t,        j%                  |«      x}st.        j%                  |«      x}r"|j)                  d«      }|j1                  |«      S |dk(  r|j3                  «       S |j                  d«      r!|j5                  d«      r|j7                  «       S |j                  d«      r!|j5                  d«      r|j9                  «       S |j                  d«      r!|j5                  d«      r|j;                  «       S |j=                  «       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]úlarge_string[pyarrow]Ústringústring[pyarrow]>   úbool[pyarrow]ÚboolÚbooleanúboolean[pyarrow]zdictionary<Úcategoryc                 ó.   •— t        ‰ j                  «      S ©N)ÚtupleÚ
categories©Únative_dtypes   €r6   ú<lambda>z5non_object_native_to_narwhals_dtype.<locals>.<lambda>  s   ø€ ¬5°×1HÑ1HÓ+I€ r8   Ú	time_unitÚ	time_zonezdate32[day][pyarrow]Údecimalz	[pyarrow]ÚtimeÚbinary)ÚstrÚdtypesrY   r]   ra   re   ri   rm   rq   ru   rz   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�   ÚversionÚdtyper˜   Úmatch_Údt_time_unitÚdt_time_zoneÚdu_time_units   `       r6   Ú#non_object_native_to_narwhals_dtyper²   Ö   s‘  ø€ ä�Ó€Eà�^‰^€FØÐFÑFØ�|‰|‹~ÐØÐFÑFØ�|‰|‹~ÐØÐFÑFØ�|‰|‹~ÐØÐBÑBØ�{‰{‹}ÐØÐJÑJØ�}‰}‹ÐØÐJÑJØ�}‰}‹ÐØÐJÑJØ�}‰}‹ÐØÐFÑFØ�|‰|‹~ÐØð ñ ð �~‰~ÓÐØð ñ ð �~‰~ÓÐØÐXÑXØ�}‰}‹ÐØÐHÑHØ�~‰~ÓÐØ×Ñ˜Ô&Ø×!Ñ!Ó#Ð#Ø�
ÒÜ3Ø˜'Ó#Ió
ð 	
ô &×+Ñ+¨EÓ2Ð2ˆÐ2Ü%×+Ñ+¨EÓ2Ð2ˆÐ2à!'§¡¨kÓ!:ˆØ#)§<¡<°Ó#<ˆØ�‰˜|¨\Ó:Ð:Ü%×+Ñ+¨EÓ2Ð2ˆÐ2Ü%×+Ñ+¨EÓ2Ð2ˆÐ2à!'§¡¨kÓ!:ˆØ�‰˜|Ó,Ð,ØÐ&Ò&Ø�{‰{‹}ÐØ×Ñ˜	Ô" u§~¡~°kÔ'BØ�~‰~ÓÐØ×Ñ˜Ô E§N¡N°;Ô$?Ø�{‰{‹}ÐØ×Ñ˜Ô! e§n¡n°[Ô&AØ�}‰}‹ÐØ�>‰>ÓÐr8   c                ó”  — |j                   }|t        j                  u r|j                  «       S t        j
                  j                  j                  | 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éd   T)Úskipnar„   Úempty)r˜   r   rH   r™   ÚpdÚapiÚtypesÚinfer_dtypeÚheadr   ÚV1ÚObject)Úseriesr¬   r#   r˜   Úinferred_dtypes        r6   Úobject_native_to_narwhals_dtyperÀ     s¤   € ð �^‰^€FØœ×,Ñ,Ñ,ð �}‰}‹Ðô —V‘V—\‘\×-Ñ-¨f¯k©k¸#Ó.>ÀtÐ-ÓL€NØ˜Ò!Ø�}‰}‹ÐØ˜Ò  W´G·J±JÑ%>à�}‰}‹ÐØ	˜7Ò	"à�}‰}‹ÐØ�=‰=‹?Ðr8   c                óÊ   — |j                   }|t        j                  u r|j                  «       S | j                  r|j                  t        |«      «      S |j                  «       S rŒ   )r˜   r   r¼   rœ   ÚorderedÚEnumr   )r�   r¬   Úget_categoriesr˜   s       r6   r�   r�   1  sU   € ð
 �^‰^€FØ”'—*‘*ÑØ×!Ñ!Ó#Ð#Ø×ÒØ�{‰{Ô-¨nÓ=Ó>Ð>Ø×ÑÓÐr8   c                ó’  ‡ — t        ‰ «      }|j                  d«      r<ddlm} t	        ‰ d«      r |‰ j                  «       |«      S  |‰ j                  |«      S |dk(  r |j                  «       rt        ‰ |ˆ fd„«      S |dk7  rt        ‰ |«      S |t        j                  u r|j                  j                  «       S d}t        |«      ‚)	N)Ú
large_listr0   ÚstructÚfixed_size_listr   )Únative_to_narwhals_dtypeÚto_arrowrŠ   c                 óJ   •— t        ‰ j                  j                  «       «      S rŒ   )r�   rŽ   Ú	to_pandasr�   s   €r6   r‘   z*native_to_narwhals_dtype.<locals>.<lambda>Q  s   ø€ ¬5°×1HÑ1H×1RÑ1RÓ1TÓ+U€ r8   Úobjectz;Unreachable code, object dtype should be handled separately)r—   r›   Únarwhals._arrow.utilsrÉ   ÚhasattrrÊ   Úpyarrow_dtypeÚis_cudfr�   r²   r   ÚDASKr˜   r™   ÚAssertionError)r�   r¬   r#   Ú	str_dtypeÚarrow_native_to_narwhals_dtyper5   s   `     r6   rÉ   rÉ   >  sÏ   ø€ ô
 �LÓ!€Ià×ÑÐOÔPõ	
ô �< Ô,á1°,×2GÑ2GÓ2IÈ7ÓSÐSÙ-¨l×.HÑ.HÈ'ÓRÐRØ�JÒ >×#9Ñ#9Ô#;ä3Ø˜'Ó#Uó
ð 	
ð �HÒÜ2°<ÀÓIÐIØ	œ>×.Ñ.Ñ	.ð �~‰~×$Ñ$Ó&Ð&àEð ô ˜Ó
Ðr8   c                óf  — |t         j                  u ryt        t        d«      rt	        | t        j
                  «      ryt        t        «      5  t        «       }t	        | t        j                  j                  j                  «      rt        | d|«      €
	 ddd«       yddd«       y# 1 sw Y   yxY w)zjGet dtype backend for pandas type.

    Matches pandas' `dtype_backend` argument in `convert_dtypes`.
    NÚ
ArrowDtypeÚpyarrowÚbaseÚnumpy_nullable)r   rH   rÏ   r·   r)   r×   r   ÚAttributeErrorrÍ   r¸   Ú
extensionsÚExtensionDtypeÚgetattr)r­   r#   Úsentinels      r6   Úget_dtype_backendrà   _  sŽ   € ð
 œ×,Ñ,Ñ,ØÜŒr�<Ô ¤Z°´r·}±}Ô%EØÜ	”.Ó	!ñ $Ü“8ˆä�uœbŸf™f×/Ñ/×>Ñ>Ô?Ü˜˜v xÓ0Ð8à#÷$÷ $ð $ð ÷$ð ús   ÁAB'Â'B0c                ó    — t        | |«      dk(  S )NrØ   )rà   )r­   r#   s     r6   Úis_pyarrow_dtype_backendrâ   r  s   € ä˜U NÓ3°yÑ@Ð@r8   c                ó´  — |�|dvrd|› d�}t        |«      ‚|j                  }t        | |j                  «      rd}t	        |«      ‚t        | |j
                  «      r|dk(  ry|dk(  ryy	t        | |j                  «      r|dk(  ry
|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ryyt        | |j                  «      r|dk(  ry|dk(  ry y!t        | |j                  «      r|dk(  ry"|dk(  ry#y$t        | |j                  «      r|dk(  ry%|dk(  ry&t         S t        | |j"                  «      r|dk(  ry'|dk(  ry(y)t        | |j$                  «      ry*t        | |j&                  «      re|t(        j*                  u r|d+k  rd,}n| j,                  }|dk(  r| j.                  x}rd-|› �nd.}	d/|› |	› d0�S | j.                  x}rd1|› �nd.}	d2|› |	› d3�S t        | |j0                  «      r7|t(        j*                  u r|d+k  rd,}
n| j,                  }
|dk(  rd4|
› d0�S d5|
› d3�S t        | |j2                  «      r	 d6d l}y8t        | |j8                  «      ro|t:        j<                  u rd9}t	        |«      ‚t?        | |j8                  «      r-|jA                  «       }|jC                  | jD                  d:¬;«      S d<}t        |«      ‚t        | |jF                  |jH                  |jJ                  |jL                  |jN                  f«      rW|t(        j*                  u r.|d=k\  r)	 d6d l(}d6d l}d6d@l+m,}  |jZ                   || |¬A«      «      S dB| › dC|› dD|› dE�}t	        |«      ‚dF| › �}t]        |«      ‚# t6        $ r d7}Y y8w xY w# tR        $ r#}d>| › d?|jT                  › �}tS        |«      |‚d }~ww xY w)GN>   rØ   rÚ   z;Expected one of {None, 'pyarrow', 'numpy_nullable'}, got: 'ú'z(Casting to Decimal is not supported yet.rØ   r|   rÚ   rz   r{   r�   r   r€   r[   rY   rZ   r_   r]   r^   rc   ra   rb   rg   re   rf   rk   ri   rj   ro   rm   rn   rs   rq   rr   rw   ru   rv   r…   r„   r‰   rˆ   r‡   rŠ   )é   Únsz, tz=Ú z
timestamp[z
][pyarrow]z, zdatetime64[ú]z	duration[ztimedelta64[r   z-PyArrow>=11.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)rå   rå   zUnable to convert to z  to to the following exception: )Únarwhals_to_native_dtype)r¬   zConverting to z+ dtype is not supported for implementation z and version ú.zUnknown dtype: )/Ú
ValueErrorr˜   r   r¨   ÚNotImplementedErrorrz   r   rY   r]   ra   re   ri   rm   rq   ru   r™   r—   rš   rœ   r¢   r   rI   r’   r“   r¥   r¦   rØ   ÚModuleNotFoundErrorrÃ   r   r¼   r)   rE   ÚCategoricalDtyperŽ   ÚStructÚArrayÚListr©   rª   ÚpandasÚImportErrorr5   rÎ   ré   r×   rÓ   )r­   Údtype_backendr#   r$   r¬   r5   r˜   r¯   ÚtzÚtz_partr±   Úparæ   r·   ÚexcÚarrow_narwhals_to_native_dtypes                   r6   ré   ré   w  sé  € ð Ð  ]Ð:WÑ%WØMÈmÈ_Ð\]Ð^ˆÜ˜‹oÐØ�^‰^€FÜ  v§~¡~Ô6Ø8ˆÜ! #Ó&Ð&Ü  v§~¡~Ô6Ø˜IÒ%Ø%ØÐ.Ò.ØØÜ  v§~¡~Ô6Ø˜IÒ%Ø%ØÐ.Ò.ØØÜ  v§|¡|Ô4Ø˜IÒ%Ø#ØÐ.Ò.ØØÜ  v§|¡|Ô4Ø˜IÒ%Ø#ØÐ.Ò.ØØÜ  v§|¡|Ô4Ø˜IÒ%Ø#ØÐ.Ò.ØØÜ  v§{¡{Ô3Ø˜IÒ%Ø"ØÐ.Ò.ØØÜ  v§}¡}Ô5Ø˜IÒ%Ø$ØÐ.Ò.ØØÜ  v§}¡}Ô5Ø˜IÒ%Ø$ØÐ.Ò.ØØÜ  v§}¡}Ô5Ø˜IÒ%Ø$ØÐ.Ò.ØØÜ  v§|¡|Ô4Ø˜IÒ%Ø#ØÐ.Ò.ØØÜ  v§}¡}Ô5Ø˜IÒ%Ø$ØÐ.Ò.ØÜˆ
Ü  v§~¡~Ô6Ø˜IÒ%Ø%ØÐ.Ò.ØØÜ  v×'9Ñ'9Ô:ð Ü  v§¡Ô7àœ^×2Ñ2Ñ2°ð J
ò 8
ð  ‰Là Ÿ?™?ˆLà˜IÒ%Ø-2¯_©_Ð'< rÐ'<˜˜b˜T‘lÀ2ˆGØ ˜~¨g¨Y°jÐAÐAà*/¯/©/Ð$9 BÐ$9˜˜2˜$‘iÀˆGØ   ¨w¨i°qÐ9Ð9Ü  v§¡Ô7Øœ^×2Ñ2Ñ2°ð J
ò 8
ð  ‰Là Ÿ?™?ˆLð  	Ò)ð ˜�~ ZÐ0ð	
ð   ˜~¨QÐ/ð	
ô
    v§{¡{Ô3ð	BÛ ð !Ü  v§{¡{Ô3Ø”g—j‘jÑ ØMˆCÜ% cÓ*Ð*Ü�e˜VŸ[™[Ô)Ø×3Ñ3Ó5ˆBØ×&Ñ& u×'7Ñ'7ÀÐ&ÓFÐFØIˆÜ˜‹oÐäØ�—‘˜vŸ|™|¨V¯[©[¸&¿+¹+ÀvÇ}Á}ÐUôð œ^×2Ñ2Ñ2°È&Ò7Pð0Û#Û$õð !�2—=‘=Ñ!?ÀÈwÔ!WÓXÐXð !  Ð'RØ!Ð" -°¨y¸ð;ð ô & cÓ*Ð*Ø˜E˜7Ð
#€CÜ
˜Ó
ÐøôG #ò 	BØA‰CØ ð	Bûô( ò 0Ø-¨e¨WÐ4TÐUX×U\ÑU\ÐT]Ð^�Ü! #Ó&¨CÐ/ûð0ús*   Ë&P ÏP+ ÐP(Ð'P(Ð+	QÐ4QÑQc                 óº  — | d   j                  «       }| D �cg c]  }t        |«      ‘Œ }}t        |«      }| |j                  |«         j                  j                  }g }| D ]ð  }|j
                  rm|j                  |j                  |j                  |j                  j                  d   g|z  ||j                  |j                  j                  ¬«      «      «       Œ||j                  j                  |urL|j                  |j                  t        |j                  ||j                  |j                  ¬«      «      «       Œà|j                  |«       Œò |S c c}w )Nr   )r(   Únamer­   r"   )Ú__native_namespace__rG   Úmaxr(   r'   r+   ÚappendÚ_with_nativeÚSeriesr,   rû   r­   r-   r.   r/   )r¾   Únative_namespaceÚsÚlengthsÚ
max_lengthÚidxÚ	reindexeds          r6   Úalign_series_full_broadcastr    s8  € ð ˜a‘y×5Ñ5Ó7Ðà%Ö&˜!Œs�1�vÐ&€GÐ&Ü�W“€Jà
�—‘˜zÓ*Ñ
+×
2Ñ
2×
8Ñ
8€CØ€IØò  ˆØ�<Š<Ø×ÑØ—‘Ø$×+Ñ+ØŸ™Ÿ™ qÑ)Ð*¨ZÑ7Ø!ØŸV™VØŸh™hŸn™nð	 ,ó óõ	ð �X‰X�^‰^ 3Ñ&Ø×ÑØ—‘ÜØŸ™ØØ'(×'8Ñ'8Ø()×(:Ñ(:ô	óõ	ð ×Ñ˜QÕð3 ð4 Ðùò? 's   ˜Ec                ól   — dt        | «      v ryt        | «      j                  «       t        | «      k7  ryy)NrØ   r[   rY   rZ   )r—   Úlower)r­   s    r6   Úint_dtype_mapperr
  B  s0   € Ø”C˜“JÑØÜ
ˆ5ƒz×ÑÓœS ›ZÒ'ØØr8   c                ó2  — |dk(  r|dk(  r| }|S |dk(  r| dz  }|S | dz  }|S |dk(  r|dk(  r| dz  }|S |dk(  r| }|S | dz  }|S |dk(  r|dk(  r| dz  }|S |dk(  r| dz  }|S | }|S |dk(  r|dk(  r| dz  }|S |dk(  r| dz  }|S | dz  }|S d|› d	�}t        |«      ‚)
Nræ   Úuséè  é@B Úmsr  é Êš;zunexpected time unit zA, please report a bug at https://github.com/narwhals-dev/narwhals)rÓ   )r  Úoriginal_time_unitr’   Úresultr5   s        r6   Úcalculate_timestamp_datetimer  J  sM  € ð ˜TÒ!Ø˜ÒØˆFð: €Mð9 ˜$ÒØ˜%‘ZˆFð6 €Mð3 ˜)‘^ˆFð2 €Mð1 
˜tÒ	#Ø˜ÒØ˜‘YˆFð, €Mð+ ˜$ÒØˆFð( €Mð% ˜%‘ZˆFð$ €Mð# 
˜tÒ	#Ø˜ÒØ˜‘]ˆFð €Mð ˜$ÒØ˜‘YˆFð €Mð ˆFð €Mð 
˜sÒ	"Ø˜ÒØ˜Ñ&ˆFð €Mð ˜$ÒØ˜‘]ˆFð €Mð	 ˜‘YˆFð €Mð &Ð&8Ð%9Ð9zÐ{ˆÜ˜SÓ!Ð!r8   c                óJ   — | dz  } |dk(  r| dz  }|S |dk(  r| dz  }|S | dz  }|S )Ni€Q ræ   r  r  r  r  © )r  r’   r  s      r6   Úcalculate_timestamp_dater  o  sN   € Ø	ˆF‰
€AØ�DÒØ�]Ñ"ˆð
 €Mð	 
�dÒ	Ø�Y‘ˆð €Mð �U‘ˆØ€Mr8   c                ó`  — t        |«      | j                  d   k(  rt        || j                  k(  «      r| S | j                  j                  j
                  dk(  s|t        j                  u r^|dk  rY| j                  j                  «       }|D �cg c]	  }||vsŒ|‘Œ }}|rt        j                  ||«      ‚| j                  dd…|f   S 	 | |   S c c}w # t        $ rP}| j                  j                  «       }|D �cg c]	  }||vsŒ|‘Œ nc c}w }}t        j                  ||«      |‚d}~ww xY w)zsSelect columns by name.

    Prefer this over `df.loc[:, column_names]` as it's
    generally more performant.
    r=   Úbr?   N)rG   ÚshapeÚallrP   r­   Úkindr   rI   Útolistr   Ú'from_missing_and_available_column_namesÚlocÚKeyError)ÚdfÚcolumn_namesr$   r#   Úavailable_columnsÚxÚmissing_columnsÚes           r6   Úselect_columns_by_namer&  z  s1  € ô ˆ<Ó˜BŸH™H Q™KÒ'¬C°ÀÇ
Á
Ñ0JÔ,KØˆ	Ø
�
‰
×Ñ×Ñ Ò$Øœ.×/Ñ/Ñ/°OÀfÒ4Lð ŸJ™J×-Ñ-Ó/ÐØ&2ÖQ °aÐ?PÒ6Pš1ÐQˆÐQÙÜ%×MÑMØÐ!2óð ð �v‰v’a˜�oÑ&Ð&ðØ�,ÑÐùò Røô ò ØŸJ™J×-Ñ-Ó/ÐØ&2ÖQ °aÐ?PÒ6Pš1ÑQùÒQˆÐQÜ!×IÑIØÐ.ó
àð	ûðús6   Â	CÂCÃ
C Ã	D-ÃD(Ã;	D
ÄD
Ä	D(Ä(D-c           	     ó�  ‡‡	— | j                   j                  j                  Šddi}| j                  t        j
                  u rc|j                  d«       t        t        |||«      «      Š	| j                  j                  «       }t        ˆˆ	fd„|D «       «      rd}t        |«      ‚ | j                  j                  d||||ddœ|¤ŽS )NÚobservedTc              3  óL   •K  — | ]  \  }}|‰v sŒt        |‰«      sŒ|–— Œ y ­wrŒ   )r)   )Ú.0rû   ÚtpÚcategoricalÚcolss      €€r6   ú	<genexpr>zpivot_table.<locals>.<genexpr>ª  s$   øè ø€ ÒY‘h�d˜B¨D°DªL¼ZÈÈKÕ=XŒrÑYùs   ƒ$�$�$z=`pivot` with Categoricals is not implemented for cuDF backendF)Úvaluesr(   rP   ÚaggfuncÚmarginsr  )Ú_versionr˜   rœ   r.   r   rH   ÚpopÚsetr   ÚschemaÚitemsÚanyrì   r'   Úpivot_table)
r   r/  r(   rP   Úaggregate_functionÚkwdsr5  r5   r,  r-  s
           @@r6   r8  r8  �  s¼   ù€ ð —+‘+×$Ñ$×0Ñ0€KØ&¨Ð-€DØ	×Ñœ^×0Ñ0Ñ0Ø�‰�ÔÜ”5˜ ¨Ó0Ó1ˆØ—‘—‘Ó"ˆÜÔY &ÔYÔYØQˆCÜ% cÓ*Ð*Ø ˆ2�9‰9× Ñ ð ØØØØ"Øñð ñð r8   c                ó$  — 	 t        | j                  «       «      }t        | «      |k7  rJddlm}  || «      }d}|j                  «       D ]  \  }}|dkD  sŒ|d|› d|› d�z  }Œ d	|› �}t        |«      ‚y # t        $ r d| › �}t        |«      d ‚w xY w)
Nz7Expected hashable (e.g. str or int) column names, got: r   )ÚCounterrç   r=   z
- 'z' z timesz"Expected unique column names, got:)rG   Údrop_duplicatesÚ	Exceptionrë   Úcollectionsr<  r6  r   )rP   Úlen_unique_columnsr5   r<  ÚcounterÚkeyÚvalues          r6   Úcheck_column_names_are_uniquerD  ·  s¼   € ð(Ü  ×!8Ñ!8Ó!:Ó;Ðô
 ˆ7ƒ|Ð)Ò)Ý'á˜'Ó"ˆØˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�q‹yØ˜˜s˜e 2 e W¨FÐ3Ñ3‘ð	4ð 3°3°%Ð8ˆÜ˜SÓ!Ð!ð *øô	 ò (ØGÈÀyÐQˆÜ˜‹o 4Ð'ð(ús   ‚A4 Á4Bc                  óB   — e Zd Zedd„«       Zedd„«       Zedd„«       Zy)ÚPandasLikeSeriesNamespacec                ó.   — | j                   j                  S rŒ   )Ú	compliantr.   ©Úselfs    r6   r#   z(PandasLikeSeriesNamespace.implementationË  s   € à�~‰~×-Ñ-Ð-r8   c                ó.   — | j                   j                  S rŒ   )rH  r/   rI  s    r6   r$   z)PandasLikeSeriesNamespace.backend_versionÏ  s   € à�~‰~×.Ñ.Ð.r8   c                ó.   — | j                   j                  S rŒ   )rH  r2  rI  s    r6   r¬   z!PandasLikeSeriesNamespace.versionÓ  s   € à�~‰~×&Ñ&Ð&r8   N)Úreturnr   )rM  útuple[int, ...])rM  r   )Ú__name__Ú
__module__Ú__qualname__Úpropertyr#   r$   r¬   r  r8   r6   rF  rF  Ê  s<   „ Øò.ó ð.ð ò/ó ð/ð ò'ó ñ'r8   rF  )r2   r   r3   zPandasLikeSeries | objectrM  z7tuple[pd.Series[Any] | object, pd.Series[Any] | object])
rK   r   r(   r   r#   r   r$   rN  rM  r   )
rK   r   rP   z	list[str]r#   r   r$   rN  rM  r   )rK   r   rT   r   r#   r   r$   rN  rN   r   rM  r   )r�   r   r¬   r   rM  r   )r¾   r   r¬   r   r#   r   rM  r   )r�   zpd.CategoricalDtyper¬   r   rÄ   zCallable[[], tuple[str, ...]]rM  r   )r�   r   r¬   r   r#   r   rM  r   )r­   r   r#   r   rM  r   )r­   r   r#   r   rM  r‡   )r­   zDType | type[DType]rô   r   r#   r   r$   rN  r¬   r   rM  zstr | PandasDtype)r¾   r   rM  zlist[PandasLikeSeries])r­   r   rM  r—   )r  úpd.Series[int]r  r—   r’   r—   rM  rS  )r  rS  r’   r—   rM  rS  )
r   r   r!  zlist[str] | _1DArrayr$   rN  r#   r   rM  r   )r   r   r/  úSequence[str]r(   rT  rP   rT  r9  z
str | NonerM  r   )rP   zpd.Index[str]rM  ÚNone)OÚ
__future__r   Ú	functoolsÚreÚ
contextlibr   Ú	itertoolsr   Útypingr   r   r   r	   r
   r   rò   r·   Únarwhals._compliant.seriesr   Únarwhals.dtypesr   Únarwhals.exceptionsr   r   r   Únarwhals.utilsr   r   r   r   Úpandas._typingr   ÚPandasDtyper%   r   Únarwhals._pandas_like.exprr   r&   r   r   Únarwhals.typingr   r   r   r    rI   rH   ÚMODINÚPANDAS_LIKE_IMPLEMENTATIONÚPD_DATETIME_RGXÚcompileÚVERBOSErž   ÚPA_DATETIME_RGXr    ÚPD_DURATION_RGXr£   ÚPA_DURATION_RGXr¤   r7   r-   rQ   rS   Ú	lru_cacher²   rÀ   r�   rÉ   rà   râ   ré   r  r
  r  r  r&  r8  rD  rF  r  r8   r6   ú<module>rm     s¸  ðÝ "ã Û 	Ý Ý Ý  Ý Ý Ý Ý Ý ã å ;Ý .Ý 3Ý .Ý *Ý )Ý "Ý 3áˆC�uÔ€áÝ3åCÝ9Ý=Ý%Ý,Ý(Ý(á�G >Ô2€Eð ×ÑØ×ÑØ×ÑðÐ ð
€ð !�b—j‘j °"·*±*Ó=Ð ð€ð !�b—j‘j °"·*±*Ó=Ð ð€ð !�b—j‘j °"·*±*Ó=Ð ð€ð !�b—j‘j °"·*±*Ó=Ð ð&Ø	ð&Ø 9ð&à<ó&ðR 1Ø	
ð 1àð 1ð #ð	 1ð
 %ð 1ð ó 1ðF3Ø	
ð3àð3ð #ð	3ð
 %ð3ð ó3ð<3Ø	
ð3àð3ð #ð3ð %ð	3ð
 ð3ð ó3ð €×Ñ˜RÔ òAó !ðAðHØðØ'.ðØ@Nðà
óð,
 Ø%ð
 àð
 ð 2ð
 ð ó	
 ðØðàðð #ðð ó	óBð& €×Ñ˜RÔ òAó !ðAð\Øð\àð\ð #ð\ð %ð	\ð
 ð\ð ó\ð~)Øð)àó)óXð"Øð"Ø+.ð"Ø;>ð"àó"óJð Ø	ð à&ð ð %ð ð #ð	 ð
 ó ðFØðàðð ðð ð	ð
 #ðð 	óó4"ô&'Ð 4Ð5GÈÐ5LÑ Mõ 'r8   