§
    {Øj«m  ã                  ór  — U d dl mZ d dlZd dlmZ d dlmZmZmZ d dl	Z
d dlmZ d dlmZ d dlmZmZmZ d dlmZ er�d dlmZmZmZmZ d d	lmZmZ d d
lmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 e&Z6de7d<   dZ8de7d<   dÅd„Z9dÆd„Z:dÇd„Z;dÈd„Z<dÉd „Z=dÊd"„Z>ddd#œdËd*„Z?nd d+lm?Z? d d,l@m>Z>m:Z:m=Z=m<Z<m;Z;m9Z9 ejA         B                    ¦   «         ZC	 d-d.d/d0d1d2d3d4d5d6d7œ
ZDd8e7d9<   e
jE        ZF	 dÌd;„ZGdÍd>„ZHdÎdD„ZIdÏdH„ZJ	 dÐdÑdM„ZKdÒdQ„ZL	 dÐdÓdS„ZMdÔdU„ZNdÕdZ„ZO ed[¬\¦  «        dÕd]„¦   «         ZPejQ        jR        ZRi eRjS         e
jT        ¦   «         “eRjU         e
jV        ¦   «         “eRjW         e
jX        ¦   «         “eRjY         e
jZ        ¦   «         “eRj[         e
j\        ¦   «         “eRj]         e
j^        ¦   «         “eRj_         e
j`         e
ja        ¦   «          e
j\        ¦   «         ¦  «        “eRjb         e
jc        ¦   «         “eRjd         e
je        d^¦  «        “eRjf         e
jg        ¦   «         “eRjh         e
ji        ¦   «         “eRjj         e
jk        ¦   «         “eRjl         e
jm        ¦   «         “eRjn         e
jo        ¦   «         “eRjp         e
jq        ¦   «         “eRjr         e
ja        ¦   «         “eRjs         e
jt        ¦   «         “Zud_e7d`<   eRjv        eRjw        fZxdÖdb„Zyd×dg„ZzdØdk„Z{dÙdq„Z|drZ}dsZ~dtZduZ€dvZ�dwZ‚dxZƒe}› e~› dye› dyeƒ› dz�Z„d{Z…d|Z†d}Z‡d~Zˆeˆdfe…d€fe†d�fe‡d‚ffZ‰e€dƒfe�d„fe‚d…ffZŠddd#œdÚd‡„Z‹dÛdˆ„ZŒdÜdŠ„Z�dÜd‹„ZŽdÝd�„Z�dÞd•„Z�eCd–k    rd—d˜id—d™id—dšid›œZ‘dœe7d�<   ndždŸidždŸidžd id›œZ‘	 dßdàd¥„Z’ G d¦„ d§ed¨         ¦  «        Z“dád¬„Z”d­Z•e•d®z	  Z–dâd±„Z—dãd³„Z˜däd¶„Z™dåd·„Zšdæd»„Z›dçdÁ„ZœdèdÄ„Z�dS )éé    )ÚannotationsN)Ú	lru_cache)ÚTYPE_CHECKINGÚAnyÚcast)ÚEagerSeriesNamespace)ÚImplementationÚVersionÚisinstance_or_issubclass)ÚColumnNotFoundError)ÚIterableÚIteratorÚMappingÚSequence)ÚLiteralÚ	TypeAlias)ÚTypeIs©ÚArrowSeries)ÚArrayAnyÚArrayOrScalarÚArrayOrScalarT1ÚArrayOrScalarT2ÚChunkedArrayAnyÚDictionaryArrayAnyÚ
IncompleteÚNativeIntervalUnitÚNullPlacementÚOrderÚPromoteOptionsÚ	ScalarAny)ÚIntervalUnit)ÚDType)Ú	IntoDTypeÚNonNestedLiteralÚPythonLiteralr   ÚChunkedArrayStructArrayz*pa.ListArray[Any] | pa.LargeListArray[Any]ÚListArrayAnyÚtr   Úreturnú"TypeIs[pa.TimestampType[Any, Any]]c                ó   — d S ©N© ©r)   s    úŠ/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/narwhals/_arrow/utils.pyÚis_timestampr1   ,   ó   € € € ó    úTypeIs[pa.DurationType[Any]]c                ó   — d S r-   r.   r/   s    r0   Úis_durationr6   -   r2   r3   úTypeIs[pa.ListType[Any]]c                ó   — d S r-   r.   r/   s    r0   Úis_listr9   .   r2   r3   úTypeIs[pa.LargeListType[Any]]c                ó   — d S r-   r.   r/   s    r0   Úis_large_listr<   /   r2   r3   ú&TypeIs[pa.FixedSizeListType[Any, Any]]c                ó   — d S r-   r.   r/   s    r0   Úis_fixed_size_listr?   0   r2   r3   ú(TypeIs[pa.DictionaryType[Any, Any, Any]]c                ó   — d S r-   r.   r/   s    r0   Úis_dictionaryrB   1   r2   r3   ©ÚoptionsÚmemory_poolÚpatternÚstrÚstringsr   rD   rE   c              ó   — d S r-   r.   )rH   rF   rD   rE   s       r0   Úextract_regexrJ   2   s	   € ð #& #r3   )rJ   )rB   r6   r?   r<   r9   r1   ÚyearÚquarterÚmonthÚdayÚhourÚminuteÚsecondÚmillisecondÚmicrosecondÚ
nanosecond)
ÚyÚqÚmoÚdÚhÚmÚsÚmsÚusÚnsz)Mapping[IntervalUnit, NativeIntervalUnit]Ú
UNITS_DICTÚvaluec               ó(   — ddl m}  || d¬¦  «        S )Nr   )Úmaybe_extract_py_scalarT)Úreturn_py_scalar)Únarwhals._arrow.seriesrb   )r`   rb   s     r0   Úextract_py_scalarre   Z   s*   € Ø>Ð>Ð>Ð>Ð>Ð>à"Ð" 5¸4Ð@Ñ@Ô@Ð@r3   ÚobjúTypeIs[ArrayOrScalar]c                ód   — t          | t          j        t          j        t          j        f¦  «        S )z-Return True for any base `pyarrow` container.)Ú
isinstanceÚpaÚChunkedArrayÚArrayÚScalar)rf   s    r0   Úis_array_or_scalarrn   `   s   € å�c�BœO­R¬Xµr´yÐAÑBÔBÐBr3   ÚstartÚintÚendÚstepr   c                óž   — t           dk     r-dd l}t          j        |                     | ||¦  «        ¦  «        S t          j        | ||¦  «        S )N)é   r   )ÚBACKEND_VERSIONÚnumpyrj   ÚarrayÚarange)ro   rq   rr   Únps       r0   rx   rx   e   sM   € Ý˜ÒÐØÐÐÐåŒx˜Ÿ	š	 %¨¨dÑ3Ô3Ñ4Ô4Ð4åŒ9�U˜C Ñ&Ô&Ð&r3   Úarraysúlist[pa.Array[Any]]úpa.ChunkedArray[Any]c                ót  — t          | d         ¦  «        }t          | ¦  «        }t          d|d¦  «        }t          d|d¦  «        }t          d||z  d¦  «        }t          dt          j        |t          |¦  «        ¦  «        ¦  «        }t          dt          j        |t          j        |t          |¦  «        ¦  «        ¦  «        ¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }	t          dt          j	        t          j        |	t          |¦  «        ¦  «        |¦  «        ¦  «        }
t          j        t          j        | ¦  «        |
¦  «        }t          dt          d||z  dz   |¦  «        ¦  «        }t          j        t          j                             ||¦  «        g¦  «        S )Nr   é   úpa.Int64Array)Úlenrx   r   ÚpcÚdivideÚlitÚsubtractÚmultiplyÚtakeÚaddrj   Úconcat_arraysÚchunked_arrayÚ	ListArrayÚfrom_arrays)rz   ÚnÚnum_colsÚiÚjÚkÚrow_idxÚcol_idxÚi_repÚj_tileÚindicesÚinterleavedÚoffsetss                r0   Úbuild_list_arrayr˜   n   sV  € õ 	ˆF�1ŒI‰Œ€AÝ�6‰{Œ{€HÝˆq�!�Q‰Œ€AÝˆq�(˜AÑÔ€AÝˆq�!�h‘, Ñ"Ô"€AÝ�?¥B¤I¨aµ°X±´Ñ$?Ô$?Ñ@Ô@€GÝ�?¥B¤K°µ2´;¸wÍÈHÉÌÑ3VÔ3VÑ$WÔ$WÑXÔX€GÝŒG�A�wÑÔ€EÝŒW�Q˜Ñ Ô €FÝ�?¥B¤F­2¬;°v½sÀ1¹v¼vÑ+FÔ+FÈÑ$NÔ$NÑOÔO€GÝ”'�"Ô*¨6Ñ2Ô2°GÑ<Ô<€KÝ�?¥F¨1¨a°(©l¸QÑ.>ÀÑ$IÔ$IÑJÔJ€GåÔ�Rœ\×5Ò5°g¸{ÑKÔKÐLÑMÔMÐMr3   Úarrú#ArrayOrScalar | list[Iterable[Any]]Údtypeúpa.DataType | Nonec               ó®   — t          | t          j        ¦  «        r| S t          j        }t          | t          ¦  «        r || |¦  «        n || g|¦  «        S r-   )ri   rj   rk   r‰   Úlist)r™   r›   Úcas      r0   r‰   r‰   ‚   sV   € õ �#•r”Ñ'Ô'ð Øˆ
åÔ%€BÝ'¨­TÑ2Ô2ÐHˆ2ˆ2ˆc�5‰>Œ>ˆ>¸¸¸C¸5À%Ñ8HÔ8HÐHr3   rŒ   Úseriesr   c                ó@   — t          j        | |j        j        ¦  «        S )z|Create a strongly-typed Array instance with all elements null.

    Uses the type of `series`, without upseting `mypy`.
    )rj   ÚnullsÚnativeÚtype)rŒ   r    s     r0   Ú
nulls_liker¥   Œ   s   € õ
 Œ8�A�v”}Ô)Ñ*Ô*Ð*r3   úPythonLiteral | ScalarAnyc               óP   — t           }t          j         || |¬¦  «        |¦  «        S )z…Create an Array instance whose slots are the given scalar.

    *Optionally*, casting to `dtype` **before** repeating `n` times.
    ©r¤   )rƒ   rj   Úrepeat)r`   rŒ   r›   Úlit_s       r0   r©   r©   ”   s*   € õ €DÝŒ9�T�T˜% eÐ,Ñ,Ô,¨aÑ0Ô0Ð0r3   r   c               ó,   — t          j        d| ¦  «        S )Nr   )rj   r©   )rŒ   s    r0   Úzerosr¬   Ÿ   s   € ÝŒ9�Q˜‰?Œ?Ðr3   úpa.DataTypeÚversionr
   r#   c                óˆ   — t          | t          j        ¦  «        r|j                             ¦   «         S t          | |¦  «        S r-   )ri   rj   ÚExtensionTypeÚdtypesÚUnknownÚ&native_non_extension_to_narwhals_dtype)r›   r®   s     r0   Únative_to_narwhals_dtyper´   £   s;   € Ý�%�Ô)Ñ*Ô*ð (ØŒ~×%Ò%Ñ'Ô'Ð'Ý1°%¸ÑAÔAÐAr3   é   )Úmaxsizec                ó¬
  ‡ ‡‡— ‰j         Št          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j         	                    ‰ ¦  «        r‰ 
                    ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        sDt          j                             ‰ ¦  «        s% t;          t          j        dd„ ¦  «        ‰ ¦  «        r‰                     ¦   «         S t          j                             ‰ ¦  «        r‰                      ¦   «         S tC          ‰ ¦  «        r!‰ "                    ‰ j#        ‰ j$        ¬¦  «        S tK          ‰ ¦  «        r‰ &                    ‰ j#        ¬¦  «        S t          j         '                    ‰ ¦  «        r‰ (                    ¦   «         S t          j         )                    ‰ ¦  «        r5‰ *                    ˆ ˆˆfd„tW          ‰ j,        ¦  «        D ¦   «         ¦  «        S t[          ‰ ¦  «        st]          ‰ ¦  «        r(‰ /                    ta          ‰ j1        ‰¦  «        ¦  «        S te          ‰ ¦  «        r.‰ 3                    ta          ‰ j1        ‰¦  «        ‰ j4        ¦  «        S t          j         5                    ‰ ¦  «        r!‰ 6                    ‰ j7        ‰ j8        ¬¦  «        S t          j         9                    ‰ ¦  «        st          j         :                    ‰ ¦  «        r‰ ;                    ¦   «         S t          j         <                    ‰ ¦  «        r‰ =                    ¦   «         S ‰ >                    ¦   «         S )NÚis_string_viewc                ó   — dS )NFr.   )Ú_s    r0   ú<lambda>z8native_non_extension_to_narwhals_dtype.<locals>.<lambda>É   s   € ¸€ r3   )Ú	time_unitÚ	time_zone)r¼   c           
     ó¸   •— g | ]V}‰                      ‰                     |¦  «        j        t          ‰                     |¦  «        j        ‰¦  «        ¦  «        ‘ŒWS r.   )ÚFieldÚfieldÚnamer´   r¤   )Ú.0rŽ   r›   r±   r®   s     €€€r0   ú
<listcomp>z:native_non_extension_to_narwhals_dtype.<locals>.<listcomp>Ö   sc   ø€ ð ð ð ð
 ð	 —’Ø—K’K ‘N”NÔ'Ý,¨U¯[ª[¸©^¬^Ô-@À'ÑJÔJñô ðð ð r3   ©Ú	precisionÚscale)?r±   rj   ÚtypesÚis_int64ÚInt64Úis_int32ÚInt32Úis_int16ÚInt16Úis_int8ÚInt8Ú	is_uint64ÚUInt64Ú	is_uint32ÚUInt32Ú	is_uint16ÚUInt16Úis_uint8ÚUInt8Ú
is_booleanÚBooleanÚ
is_float64ÚFloat64Ú
is_float32ÚFloat32Ú
is_float16ÚFloat16Ú	is_stringÚis_large_stringÚgetattrÚStringÚ	is_date32ÚDater1   ÚDatetimeÚunitÚtzr6   ÚDurationrB   ÚCategoricalÚ	is_structÚStructÚrangeÚ
num_fieldsr9   r<   ÚListr´   Ú
value_typer?   rl   Ú	list_sizeÚis_decimal128ÚDecimalrÅ   rÆ   Ú	is_time32Ú	is_time64ÚTimeÚ	is_binaryÚBinaryr²   )r›   r®   r±   s   ``@r0   r³   r³   ©   ss  øøø€ àŒ^€FÝ	„x×Ò˜ÑÔð Ø�|Š|‰~Œ~ÐÝ	„x×Ò˜ÑÔð Ø�|Š|‰~Œ~ÐÝ	„x×Ò˜ÑÔð Ø�|Š|‰~Œ~ÐÝ	„x×Ò˜ÑÔð Ø�{Š{‰}Œ}ÐÝ	„x×Ò˜%Ñ Ô ð Ø�}Š}‰ŒÐÝ	„x×Ò˜%Ñ Ô ð Ø�}Š}‰ŒÐÝ	„x×Ò˜%Ñ Ô ð Ø�}Š}‰ŒÐÝ	„x×Ò˜ÑÔð Ø�|Š|‰~Œ~ÐÝ	„x×Ò˜5Ñ!Ô!ð  Ø�~Š~ÑÔÐÝ	„x×Ò˜5Ñ!Ô!ð  Ø�~Š~ÑÔÐÝ	„x×Ò˜5Ñ!Ô!ð  Ø�~Š~ÑÔÐÝ	„x×Ò˜5Ñ!Ô!ð  Ø�~Š~ÑÔÐõ 	Œ×Ò˜5Ñ!Ô!ðåŒ8×#Ò# EÑ*Ô*ðð @�7•2”8Ð-¨¨Ñ?Ô?ÀÑFÔFðð
 �}Š}‰ŒÐÝ	„x×Ò˜%Ñ Ô ð Ø�{Š{‰}Œ}ÐÝ�EÑÔð IØ�Š¨¬¸u¼xˆÑHÔHÐHÝ�5ÑÔð 5Ø�Š¨¬ˆÑ4Ô4Ð4Ý	„x×Ò˜eÑ$Ô$ð $Ø×!Ò!Ñ#Ô#Ð#Ý	„x×Ò˜%Ñ Ô ð 	
Ø�}Š}ðð ð ð ð ð õ
 ˜uÔ/Ñ0Ô0ðñ ô ñ
ô 
ð 	
õ ˆu�~„~ð P� uÑ-Ô-ð PØ�{Š{Õ3°EÔ4DÀgÑNÔNÑOÔOÐOÝ˜%Ñ Ô ð 
Ø�|Š|Ý$ UÔ%5°wÑ?Ô?ÀÄñ
ô 
ð 	
õ 
„x×Ò˜eÑ$Ô$ð LØ�~Š~¨¬¸u¼{ˆ~ÑKÔKÐKÝ	„x×Ò˜%Ñ Ô ð ¥B¤H×$6Ò$6°uÑ$=Ô$=ð Ø�{Š{‰}Œ}ÐÝ	„x×Ò˜%Ñ Ô ð Ø�}Š}‰ŒÐØ�>Š>ÑÔÐr3   r^   z!Mapping[type[DType], pa.DataType]ÚNW_TO_PA_DTYPESr$   c                óÞ  ‡— ‰j         }|                      ¦   «         }t                               |¦  «        x}r|S t	          | |j        ¦  «        r9| j        }| j        x}rt          j	        ||¦  «        nt          j	        |¦  «        S t	          | |j
        ¦  «        rt          j        | j        ¦  «        S t	          | |j        ¦  «        r)t          j        t          | j        ‰¬¦  «        ¬¦  «        S t	          | |j        ¦  «        r%t          j        ˆfd„| j        D ¦   «         ¦  «        S t	          | |j        ¦  «        r3t          | j        ‰¬¦  «        }| j        }t          j        ||¬¦  «        S t	          | |j        ¦  «        r t          j        | j        | j        ¬¦  «        S t3          |t4          ¦  «        rd|j        › d�}	t9          |	¦  «        ‚d| › �}	t;          |	¦  «        ‚)	N©r®   )rð   c                óJ   •— g | ]}|j         t          |j        ‰¬ ¦  «        f‘Œ S )rû   )rÁ   Únarwhals_to_native_dtyper›   )rÂ   rÀ   r®   s     €r0   rÃ   z,narwhals_to_native_dtype.<locals>.<listcomp>  s@   ø€ ð ð ð àð ”Õ5°e´kÈ7ÐSÑSÔSÐTðð ð r3   )rñ   rÄ   zConverting to z$ dtype is not supported for PyArrow.zUnknown dtype: )r±   Ú	base_typerù   Úgetr   ræ   r¼   r½   rj   Ú	timestampré   Údurationrï   Úlist_rý   Úinnerrì   ÚstructÚfieldsrl   Úsizeró   Ú
decimal128rÅ   rÆ   Ú
issubclassÚUNSUPPORTED_DTYPESÚ__name__ÚNotImplementedErrorÚAssertionError)
r›   r®   r±   rþ   Úpa_typerç   rè   r  rñ   Úmsgs
    `        r0   rý   rý     sõ  ø€ ØŒ^€FØ—’Ñ!Ô!€IÝ!×%Ò% iÑ0Ô0Ð0€wð ØˆÝ  v¤Ñ7Ô7ð YØŒˆØ05´Ð*?¨"ÐX�rŒ|˜D "Ñ%Ô%Ð%ÅbÄlÐSWÑFXÔFXÐXÝ  v¤Ñ7Ô7ð ,ÝŒ{˜5œ?Ñ+Ô+Ð+Ý  v¤{Ñ3Ô3ð [ÝŒxÕ#;¸E¼KÐQXÐ#YÑ#YÔ#YÐZÑZÔZÐZÝ  v¤}Ñ5Ô5ð 
ÝŒyðð ð ð à"œ\ðñ ô ñ
ô 
ð 	
õ    v¤|Ñ4Ô4ð 4Ý(¨¬¸gÐFÑFÔFˆØ”Jˆ	ÝŒx˜¨Ð3Ñ3Ô3Ð3Ý  v¤~Ñ6Ô6ð KÝŒ} u¤¸e¼kÐJÑJÔJÐJÝ�)Õ/Ñ0Ô0ð 'ØW˜yÔ1ÐWÐWÐWˆÝ! #Ñ&Ô&Ð&Ø
#˜EÐ
#Ð
#€CÝ
˜Ñ
Ô
Ðr3   ÚlhsÚrhsú'ArrowSeries | PythonLiteral | ScalarAnyú3tuple[ChunkedArrayAny, ChunkedArrayAny | ScalarAny]c                ó²  — ddl m} |€| j        t          d| j        ¬¦  «        fS t          ||¦  «        rK| j        r|j        s| j        d         |j        fS |j        r| j        |j        d         fS | j        |j        fS t          |t          ¦  «        rd}t          |¦  «        ‚| j        t          |t          j
        ¦  «        r|nt          |¦  «        fS )aJ  Extract native objects in binary  operation.

    If the comparison isn't supported, return `NotImplemented` so that the
    "right-hand-side" operation (e.g. `__radd__`) can be tried.

    If one of the two sides has a `_broadcast` flag, then extract the scalar
    underneath it so that PyArrow can do its own broadcasting.
    r   r   Nr¨   z$Expected Series or scalar, got list.)rd   r   r£   rƒ   Ú_typeri   Ú
_broadcastrž   Ú	TypeErrorrj   rm   )r  r  r   r  s       r0   Úextract_nativer  $  sæ   € ð 3Ð2Ð2Ð2Ð2Ð2à
€{ØŒz�3˜t¨#¬)Ð4Ñ4Ô4Ð4Ð4å�#�{Ñ#Ô#ð &ØŒ>ð 	- #¤.ð 	-Ø”:˜a”= #¤*Ð,Ð,ØŒ>ð 	-Ø”:˜sœz¨!œ}Ð,Ð,ØŒz˜3œ:Ð%Ð%å�#•tÑÔð Ø4ˆÝ˜‰nŒnÐàŒ:�j¨­b¬iÑ8Ô8ÐF�s�s½cÀ#¹h¼hÐFÐFr3   Úleftr   Úrightc          
     ó6  — t          j        |t          d|j        ¬¦  «        ¦  «        }t          j        ||t          d|j        ¬¦  «        ¦  «        }t          d | j        ¬¦  «        }t
          j                             | j        ¦  «        �rMt
          j                             |j        ¦  «        �r(t          j        |t          j        | |¦  «        |¦  «        }t
          j         	                    |j        ¦  «        r¾t          d|j        ¦  «        }t          j        t          j        ||¦  «        | ¦  «        }t          j        t          j        | |¦  «        t          d|¦  «        ¦  «        }t          j        t          j        ||¦  «        t          j        |t          d|¦  «        ¦  «        |¦  «        }	n|}	|	 
                    | j        ¦  «        }	n=t          j        |t          j        | |¦  «        |¦  «        }t          j        |¦  «        }	|	S )Nr   r¨   r~   zpa._lib.Int64Type)r�   Ú	not_equalrƒ   r¤   Úif_elserj   rÇ   Ú
is_integerÚdivide_checkedÚis_signed_integerr   r…   ÚlessÚbit_wise_xorÚand_r„   r‚   Úfloor)
r  r  Ú	safe_maskÚ
safe_rightÚnon_safe_resultÚdividedÚdiv_typeÚhas_remainderÚhas_one_negative_operandÚresults
             r0   Úfloordiv_compatr,  B  sº  € õ ”˜U¥C¨°´
Ð$;Ñ$;Ô$;Ñ<Ô<€IÝ”˜I u­c°!¸%¼*Ð.EÑ.EÔ.EÑFÔF€JÝ˜$ T¤YÐ/Ñ/Ô/€Oå	„x×Ò˜4œ9Ñ%Ô%ñ #­"¬(×*=Ò*=¸e¼jÑ*IÔ*Iñ #Ý”*Ø•rÔ(¨¨zÑ:Ô:¸Oñ
ô 
ˆõ Œ8×%Ò% g¤lÑ3Ô3ð 	ÝÐ/°´Ñ>Ô>ˆHÝœL­¬°W¸eÑ)DÔ)DÀdÑKÔKˆMÝ')¤wÝ”  eÑ,Ô,­c°!°XÑ.>Ô.>ñ(ô (Ð$õ ”ZÝ”˜Ð'?Ñ@Ô@Ý”˜G¥S¨¨HÑ%5Ô%5Ñ6Ô6Øñô ˆFˆFð ˆFØ—’˜TœYÑ'Ô'ˆˆå”*˜Y­¬	°$¸
Ñ(CÔ(CÀ_ÑUÔUˆÝ”˜'Ñ"Ô"ˆØ€Mr3   Úarrow_arrayr   Ú	pa_objectr   ú'tuple[ArrayOrScalarT1, ArrayOrScalarT2]c                ó:  — t           j                             | j        ¦  «        rtt           j                             |j        ¦  «        rP|                      t          j        ¦   «         d¬¦  «        |                     t          j        ¦   «         d¬¦  «        fS | |fS )NF)Úsafe)rj   rÇ   r  r¤   r   Úfloat64)r-  r.  s     r0   Úcast_for_truedivr3  e  sŽ   € õ 
„x×Ò˜;Ô+Ñ,Ô,ð 
µ´×1DÒ1DÀYÄ^Ñ1TÔ1Tð 
ð ×Ò¥¤
¡¤°5ÐÑ9Ô9¸9¿>º>ÝŒJ‰LŒL˜uð <Jñ <
ô <
ð 
ð 	
ð ˜	Ð!Ð!r3   z/(?P<date>\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4}|\d{8})z(?P<sep>\s|T)z'(?P<time>\d{2}:\d{2}(?::\d{2})?|\d{6}?)z^(?P<hms>\d{2}:\d{2}:\d{2})$z^(?P<hm>\d{2}:\d{2})$z^(?P<hms_no_sep>\d{6})$z(?P<tz>Z|[+-]\d{2}:?\d{2})ú?z?$zw^(?P<year>(?:[12][0-9])?[0-9]{2})(?P<sep1>[-/.])(?P<month>0[1-9]|1[0-2])(?P<sep2>[-/.])(?P<day>0[1-9]|[12][0-9]|3[01])$zw^(?P<day>0[1-9]|[12][0-9]|3[01])(?P<sep1>[-/.])(?P<month>0[1-9]|1[0-2])(?P<sep2>[-/.])(?P<year>(?:[12][0-9])?[0-9]{2})$zw^(?P<month>0[1-9]|1[0-2])(?P<sep1>[-/.])(?P<day>0[1-9]|[12][0-9]|3[01])(?P<sep2>[-/.])(?P<year>(?:[12][0-9])?[0-9]{2})$zY^(?P<year>(?:[12][0-9])?[0-9]{2})(?P<month>0[1-9]|1[0-2])(?P<day>0[1-9]|[12][0-9]|3[01])$ú%Y%m%dz%Y-%m-%dz%d-%m-%Yz%m-%d-%Yz%H:%M:%Sz%H:%Mz%H%M%Súpa.StructArrayc              óv   — t          j        t          | |||¬¦  «        j        ¦  «        }t	          d|¦  «        S )NrC   r6  )rj   rˆ   rJ   Úchunksr   )rH   rF   rD   rE   Úrs        r0   Ú_extract_regex_concat_arraysr:  �  s@   € õ 	ÔÝ�g˜w°À[ÐQÑQÔQÔXñ	ô 	€Aõ Ð  !Ñ$Ô$Ð$r3   c                óØ  — t          |                      ¦   «                              dd¦  «        t          ¬¦  «        }t	          j        |                     ¦   «         ¦  «                             ¦   «         sd}t          |¦  «        ‚| 	                    d¦  «        }| 	                    d¦  «        }t	          j
        t	          j        |¦  «        ¦  «                             ¦   «         dk    rd}t          |¦  «        ‚t	          j
        t	          j        |¦  «        ¦  «                             ¦   «         dk    rd	}t          |¦  «        ‚t          t          d
| 	                    d¦  «        ¦  «        ¦  «        }t          t          d
| 	                    d¦  «        ¦  «        ¦  «        }|d                              ¦   «         }|d                              ¦   «         rdnd}|› |› |› |› �S )z.Try to infer datetime format from StringArray.r   é
   ©rF   z‰Unable to infer datetime format, provided format is not supported. Please report a bug to https://github.com/narwhals-dev/narwhals/issuesÚseprè   r~   z@Found multiple separator values while inferring datetime format.z?Found multiple timezone values while inferring datetime format.úpc.StringArrayÚdateÚtimez%zÚ )r:  Ú	drop_nullÚsliceÚFULL_REr�   ÚallÚis_validÚas_pyr  rÀ   ÚcountÚuniqueÚ
ValueErrorÚ_parse_date_formatr   Úparse_time_format)	r™   Úmatchesr  Ú
separatorsrè   Ú
date_valueÚ
time_valueÚ	sep_valueÚtz_values	            r0   Úparse_datetime_formatrT  �  sž  € å*¨3¯=ª=©?¬?×+@Ò+@ÀÀBÑ+GÔ+GÕQXÐYÑYÔY€GÝŒ6�'×"Ò"Ñ$Ô$Ñ%Ô%×+Ò+Ñ-Ô-ð 'ðUð 	õ " #Ñ&Ô&Ð&à—’˜uÑ%Ô%€JØ	�Š�tÑ	Ô	€Bõ 
„x•”	˜*Ñ%Ô%Ñ&Ô&×,Ò,Ñ.Ô.°Ò2Ð2ØPˆÝ˜‰oŒoÐå	„x•”	˜"‘”ÑÔ×$Ò$Ñ&Ô&¨Ò*Ð*ØOˆÝ˜‰oŒoÐå#¥DÐ)9¸7¿=º=ÈÑ;PÔ;PÑ$QÔ$QÑRÔR€JÝ"¥4Ð(8¸'¿-º-ÈÑ:OÔ:OÑ#PÔ#PÑQÔQ€Jà˜1”×#Ò#Ñ%Ô%€IØ˜!”u—{’{‘}”}Ð,ˆtˆt¨"€HàÐ;˜)Ð; ZÐ;°Ð;Ð;Ð;r3   r?  c                óF  — t           D �]ˆ\  }}t          j        | |¬¦  «        }|dk    r<t          j        |                     ¦   «         ¦  «                             ¦   «         r|c S t          j        |                     ¦   «         ¦  «                             ¦   «         ròt          j        t          j        |                     d¦  «        x}¦  «        ¦  «                             ¦   «         dk    r¡t          j        t          j        |                     d¦  «        x}¦  «        ¦  «                             ¦   «         dk    rP|d                              ¦   «         x}|d                              ¦   «         k    r| 	                    d|¦  «        c S �ŒŠd}t          |¦  «        ‚)	Nr=  r5  Úsep1r~   Úsep2r   ú-zgUnable to infer datetime format. Please report a bug to https://github.com/narwhals-dev/narwhals/issues)ÚDATE_FORMATSr�   rJ   rF  rG  rH  rI  rJ  rÀ   ÚreplacerK  )r™   Údate_rgxÚdate_fmtrN  rV  rW  Údate_sep_valuer  s           r0   rL  rL  ¼  sf  € Ý*ð 
9ñ 
9Ñˆ�(ÝÔ" 3°Ð9Ñ9Ô9ˆØ�xÒÐ¥B¤F¨7×+;Ò+;Ñ+=Ô+=Ñ$>Ô$>×$DÒ$DÑ$FÔ$FÐØˆOˆOˆOåŒF�7×#Ò#Ñ%Ô%Ñ&Ô&×,Ò,Ñ.Ô.ð	9å”�œ¨7¯=ª=¸Ñ+@Ô+@Ð#@ 4ÑAÔAÑBÔB×HÒHÑJÔJÈaÒOÐOÝ”�œ¨7¯=ª=¸Ñ+@Ô+@Ð#@ 4ÑAÔAÑBÔB×HÒHÑJÔJÈaÒOÐOØ#'¨¤7§=¢=¡?¤?Ð2�°t¸A´w·}²}±´ÒFÐFà×#Ò# C¨Ñ8Ô8Ð8Ð8Ð8ùð	Qð õ �S‰/Œ/Ðr3   c                óÄ   — t           D ]W\  }}t          j        | |¬¦  «        }t          j        |                     ¦   «         ¦  «                             ¦   «         r|c S ŒXdS )Nr=  rB  )ÚTIME_FORMATSr�   rJ   rF  rG  rH  )r™   Útime_rgxÚtime_fmtrN  s       r0   rM  rM  Ð  sh   € Ý*ð ð Ñˆ�(ÝÔ" 3°Ð9Ñ9Ô9ˆÝŒ6�'×"Ò"Ñ$Ô$Ñ%Ô%×+Ò+Ñ-Ô-ð 	ØˆOˆOˆOð	àˆ2r3   Úwindow_sizeÚcenterÚboolútuple[ArrowSeries, int]c               óè   — |s| dfS |dz  }||dz  dk    z
  }| j         j        }t          || ¦  «        g|¢t          || ¦  «        ‘R }|                      t	          j        |¦  «        ¦  «        ||z   fS )au  Pad series with None values on the left and/or right side, depending on the specified parameters.

    Arguments:
        series: The input ArrowSeries to be padded.
        window_size: The desired size of the window.
        center: Specifies whether to center the padding or not.

    Returns:
        A tuple containing the padded ArrowSeries and the offset value.
    r   é   )r£   r8  r¥   Ú_with_nativerj   rˆ   )r    rb  rc  Úoffset_leftÚoffset_rightr8  rz   s          r0   Ú
pad_seriesrk  Ø  s�   € ð ð Ø�qˆyÐØ Ñ"€Kà +°¡/°QÒ"6Ñ7€LØŒ]Ô!€FÝ˜ VÑ,Ô,ÐW¨vÐWµzÀ,ÐPVÑ7WÔ7WÐWÐW€FØ×Ò�rÔ/°Ñ7Ô7Ñ8Ô8¸+ÈÑ:TÐTÐTr3   Úchunked_arraysúChunkedArrayAny | ScalarAnyÚ	separatorú7tuple[Iterator[ChunkedArrayAny | ScalarAny], ScalarAny]c                ó¾   ‡— t          d„ |D ¦   «         ¦  «        st          j        ¦   «         nt          j        ¦   «         Šˆfd„|D ¦   «         t	          | ‰¦  «        fS )Nc              3  ó^   K  — | ](}t           j                             |j        ¦  «        V — Œ)d S r-   )rj   rÇ   rá   r¤   )rÂ   rŸ   s     r0   ú	<genexpr>z2cast_to_comparable_string_types.<locals>.<genexpr>õ  s4   è è € ÐNÐN¸•2”8×+Ò+¨B¬GÑ4Ô4ÐNÐNÐNÐNÐNÐNr3   c              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S r-   )r   )rÂ   rŸ   r›   s     €r0   rr  z2cast_to_comparable_string_types.<locals>.<genexpr>ø  s-   øè è € Ð4Ð4˜rˆB�GŠG�E‰NŒNÐ4Ð4Ð4Ð4Ð4Ð4r3   )Úanyrj   ÚstringÚlarge_stringrƒ   )rn  rl  r›   s     @r0   Úcast_to_comparable_string_typesrw  ï  si   ø€ õ ÐNÐN¸~ÐNÑNÔNÑNÔNð	�Œ	‰ŒˆåŒ_ÑÔð 
ð
 5Ð4Ð4Ð4 ^Ð4Ñ4Ô4µc¸)ÀUÑ6KÔ6KÐKÐKr3   )é   Úpromote_optionsÚdefaultÚ
permissiveÚnone)rz  r{  r|  z*Mapping[PromoteOptions, Mapping[str, Any]]Ú_PROMOTEÚpromoteTFÚtablesúIterable[pa.Table]r    úpa.Tablec                ó<   — t          j        | fi t          |         ¤ŽS r-   )rj   Úconcat_tablesr}  )r  ry  s     r0   rƒ  rƒ    s"   € õ Ô˜FÐ@Ð@¥h¨Ô&?Ð@Ð@Ð@r3   c                  ó   — e Zd ZdS )ÚArrowSeriesNamespaceN)r
  Ú
__module__Ú__qualname__r.   r3   r0   r…  r…    s   € € € € € € € r3   r…  )r   r   rw   Úfuncú:Literal['min', 'max', 'mean', 'approximate_median', 'sum']c                óŒ  — t           }|dk    rd|t          j        d¬¦  «        fnd|f}t          j                             t          j        | ¦  «        t          j        | ¦  «        gddg¬¦  «                             d¦  «         	                    |g¦  «         
                    d¦  «                             d|› �¦  «                             ¦   «         }t          j        t          j        |                      ¦   «         ¦  «        t          d¦  «        ¦  «        }|dk    r)t          j        |                     ¦   «         d d¦  «        }n2t          j         |d |j        ¬¦  «        t'          | ¦  «        ¦  «        }t          j        t          j        |t-          d	|                     d
¦  «        ¦  «        |¦  «        g¦  «        S )NÚsumÚvaluesr   )Ú	min_countr—   ©ÚnamesÚvalues_r¨   úpa.BooleanArrayF)rƒ   r�   ÚScalarAggregateOptionsrj   ÚTabler‹   Úlist_flattenÚlist_parent_indicesÚgroup_byÚ	aggregateÚsort_byÚcolumnÚcombine_chunksr  Úlist_value_lengthr  Úis_nullr©   r¤   r€   r‰   Úreplace_with_maskr   Ú	fill_null)rw   rˆ  rª   ÚaggregationÚaggÚnon_empty_maskÚ
base_arrays          r0   Úlist_aggr£    s¡  € õ €Dð �5Š=ˆ=ð 
�4�Ô2¸QÐ?Ñ?Ô?Ð@Ð@à˜Ðð õ 	Œ×ÒÝŒ_˜UÑ#Ô#¥RÔ%;¸EÑ%BÔ%BÐCØ˜YÐ'ð 	ñ 	
ô 	
÷ 
Š�)Ñ	Ô	ß	Š�K�=Ñ	!Ô	!ß	Š�Ñ	Ô	ß	ŠÐ ˜$Ð Ð Ñ	!Ô	!ß	ŠÑ	Ô	ð õ ”\¥"Ô"6°u×7KÒ7KÑ7MÔ7MÑ"NÔ"NÕPSÐTUÑPVÔPVÑWÔW€NØˆu‚}€}å”Z × 6Ò 6Ñ 8Ô 8¸$ÀÑBÔBˆ
ˆ
å”Y˜t˜t D¨s¬xÐ8Ñ8Ô8½#¸e¹*¼*ÑEÔEˆ
ÝÔåÔ Ø�DÐ!2°N×4LÒ4LÈUÑ4SÔ4SÑTÔTÐVYñô ð	
ñô ð r3   i    é   Úitemr%   c                ó†   ‡— ˆfd„t          | ¦  «        D ¦   «         }t          j        |t          j        ¦   «         ¦  «        S )z÷Whether each list holds `item`, or a null element if `item` is None.

    A running count of matches over the flattened values changes within a list iff the
    list holds a match. That keeps this linear, where a group-by per list would sort.
    c                ó0   •— g | ]}t          |‰¦  «        ‘ŒS r.   )Ú_list_block_contains)rÂ   Úblockr¥  s     €r0   rÃ   z!list_contains.<locals>.<listcomp>B  s$   ø€ ÐQÐQÐQ°EÕ" 5¨$Ñ/Ô/ÐQÐQÐQr3   )Ú_list_blocksrj   r‰   Úbool_)rw   r¥  Úblockss    ` r0   Úlist_containsr­  <  s@   ø€ ð RÐQÐQÐQ½\È%Ñ=PÔ=PÐQÑQÔQ€FÝÔ˜F¥B¤H¡J¤JÑ/Ô/Ð/r3   úIterator[ListArrayAny]c              #  óÜ  ‡‡K  — g }d}t          d| j        ¦  «        D �]Št          ‰¦  «        sŒ‰j        d                              ¦   «         ‰j        d                              ¦   «         z
  }|t
          k     }|rB|r|t
          k    r5t          |¦  «        dk    rt          j        |¦  «        n|d         V — g d}}|r|                     ‰¦  «         ||z  }Œ¾t          dt          ‰¦  «        t          z  |z  ¦  «        Šˆˆfd„t          dt          ‰¦  «        ‰¦  «        D ¦   «         E d{V —† �Œ|r3t          |¦  «        dk    rt          j        |¦  «        n|d         V — dS dS )a{  Split `array` into runs of whole lists, of up to about `_LIST_BLOCK_VALUES` values.

    That keeps the intermediates in cache. Large chunks are sliced without copying, and
    chunks under `_LIST_MIN_BLOCK_VALUES` values are combined until a run reaches it, to
    amortise the ~35us of pyarrow calls per block. Combining every chunk could overflow
    32-bit list offsets.
    r   zlist[ListArrayAny]éÿÿÿÿr~   c              3  óD   •K  — | ]}‰                      |‰¦  «        V — Œd S r-   )rD  )rÂ   ro   Úchunkrr   s     €€r0   rr  z_list_blocks.<locals>.<genexpr>]  s1   øè è € ÐYÐY°U˜Ÿš E¨4Ñ0Ô0ÐYÐYÐYÐYÐYÐYr3   N)r   r8  r€   r—   rH  Ú_LIST_MIN_BLOCK_VALUESrj   rˆ   ÚappendÚmaxÚ_LIST_BLOCK_VALUESrí   )rw   ÚrunÚ
run_valuesÚn_valuesÚis_smallr²  rr   s        @@r0   rª  rª  F  s¤  øøè è € ð !€CØ€JÝÐ*¨E¬LÑ9Ô9ð Zñ ZˆÝ�5‰zŒzð 	ØØ”= Ô$×*Ò*Ñ,Ô,¨u¬}¸QÔ/?×/EÒ/EÑ/GÔ/GÑGˆØÕ4Ò4ˆØð 	$˜ð 	$ JÕ2HÒ$HÐ$HÝ+.¨s©8¬8°aª<¨<•"Ô" 3Ñ'Ô'Ð'¸SÀ¼VÐCÐCÐCØ  !�ˆCØð 	ZØ�JŠJ�uÑÔÐØ˜(Ñ"ˆJˆJå�q�#˜e™*œ*Õ'9Ñ9¸XÑEÑFÔFˆDØYÐYÐYÐYÐY½eÀAÅsÈ5ÁzÄzÐSWÑ>XÔ>XÐYÑYÔYÐYÐYÐYÐYÐYÐYÐYÑYØ
ð @Ý'*¨3¡x¤x°!¢| |�bÔ˜sÑ#Ô#Ð#¸¸Q¼Ð?Ð?Ð?Ð?Ð?ð@ð @r3   r©  r‘  c                ó>  ‡— | j         }|d                              ¦   «         }| j                             ||d                              ¦   «         |z
  ¦  «        }t	          j        |t          ||j        ¦  «        ¦  «        }|                     d¦  «        |                     dt          | ¦  «        ¦  «        }}|€t	          j	        |¦  «        }n`t          |t          ¦  «        r)t          j        |¦  «        rt	          j        |¦  «        }n"t	          j        |t          |¦  «        ¦  «        }t	          j        t	          j        ||¦  «        ¦  «                             ¦   «         Št#          ˆfd„t%          j        ¦   «         t%          j        ¦   «         t%          j        ¦   «         t%          j        ¦   «         fD ¦   «         ¦  «        }t%          j        t%          j        dg¦  «        |                     d¦  «        g¦  «        }t	          j        |                     |¦  «        ¦  «        }	t	          j        |	                     |¦  «        |	                     |¦  «        ¦  «        }
| j        dk    r|
n't	          j        |                       ¦   «         |
d ¦  «        S )Nr   r°  r~   c              3  ó8   •K  — | ]}‰d |j         z  k     ¯|V — ŒdS )r~   N)Ú	bit_width)rÂ   r)   Úlongests     €r0   rr  z'_list_block_contains.<locals>.<genexpr>t  sA   øè è € ð ð àØ�Q˜!œ+Ñ%Ò%Ð%ð 	
à%Ð%Ð%Ð%ðð r3   F)!r—   rH  rŒ  rD  r�   r„   rƒ   r¤   r€   rœ  ri   ÚfloatÚmathÚisnanÚis_nanÚequalrµ  Únextrj   Úuint8Úuint16Úuint32Úuint64rˆ   rw   rž  Úcumulative_sumr   r  r†   Ú
null_countr  rG  )r©  r¥  r—   ÚfirstrŒ  ÚendsÚstartsrN  Ú
count_typeÚmatches_beforeÚcontainsr¾  s              @r0   r¨  r¨  b  s"  ø€ ØŒm€GØ�AŒJ×ÒÑÔ€EØŒ\×Ò  w¨r¤{×'8Ò'8Ñ':Ô':¸UÑ'BÑCÔC€FåŒk˜'¥3 u¨g¬lÑ#;Ô#;Ñ<Ô<€GØ—=’= Ñ#Ô# W§]¢]°1µc¸%±j´jÑ%AÔ%Aˆ&€Dà€|Ý”*˜VÑ$Ô$ˆˆÝ	�D�%Ñ	 Ô	 ð .¥T¤Z°Ñ%5Ô%5ð .Ý”)˜FÑ#Ô#ˆˆå”(˜6¥3 t¡9¤9Ñ-Ô-ˆõ Œf•R”[  vÑ.Ô.Ñ/Ô/×5Ò5Ñ7Ô7€GÝð ð ð ð å”(‘*”*�bœi™kœk­2¬9©;¬;½¼	¹¼ÐDðñ ô ñ ô €Jõ Ô¥¤¨%¨Ñ 1Ô 1°7×3DÒ3DÀUÑ3KÔ3KÐLÑMÔM€GÝÔ& w§|¢|°JÑ'?Ô'?Ñ@Ô@€NÝŒ|˜N×/Ò/°Ñ5Ô5°~×7JÒ7JÈ6Ñ7RÔ7RÑSÔS€Hð Ô˜qÒ Ð ð 	ˆåŒZ˜ŸšÑ(Ô(¨(°DÑ9Ô9ðr3   c               óÒ  ‡— t          | j        ¦  «        s| S t          d|                      ¦   «         j        ¦  «        }|s"t          g gt          j        ¦   «         ¦  «        S |d         j        }t          j
        |dd¬¦  «        Š|j        r;t          j        t          j        |¦  «        t          d‰j        ¦  «        ‰¦  «        Št          j        ˆfd„|D ¦   «         ¦  «        S )aÏ  Return an array which orders like `array`, but with a type `pyarrow` can sort.

    `pyarrow` has no ordering kernels for `dictionary` types
    (https://github.com/apache/arrow/issues/29887), so replace the dictionary indices
    with the rank of the value they point at. Ranking the (typically small) dictionary
    is much cheaper than decoding every row, and gives the lexicographic order which
    `polars` and `pandas` use for (unordered) categoricals.
    zlist[DictionaryArrayAny]r   Ú	ascendingÚmin)Ú	sort_keysÚ
tiebreakerNc                óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS r.   )r†   r•   )rÂ   r²  Úrankss     €r0   rÃ   zsortable.<locals>.<listcomp>˜  s'   ø€ ÐKÐKÐK¸5˜UŸZšZ¨¬Ñ6Ô6ÐKÐKÐKr3   )rB   r¤   r   Úunify_dictionariesr8  r‰   rj   rÈ  Ú
dictionaryr�   ÚrankrÊ  r  rœ  rƒ   )rw   r8  rÙ  r×  s      @r0   ÚsortablerÛ  „  sØ   ø€ õ ˜œÑ$Ô$ð ØˆåÐ,¨e×.FÒ.FÑ.HÔ.HÔ.OÑPÔP€FØð 0Ý˜b˜T¥2¤9¡;¤;Ñ/Ô/Ð/Ø˜”Ô%€JÝŒG�J¨+À%ÐHÑHÔH€EØÔð Qå”
�2œ: jÑ1Ô1µ3°t¸U¼ZÑ3HÔ3HÈ%ÑPÔPˆÝÔÐKÐKÐKÐKÀFÐKÑKÔKÑLÔLÐLr3   ÚtableÚkeysúIterable[str]c          
     ó6  — |D ]•}| j                              |¦  «        }|dk    rd|› d�}t          |¦  «        ‚t          |                      |¦  «        j        ¦  «        r7|                      ||t          |                      |¦  «        ¦  «        ¦  «        } Œ–| S )zNReplace every `dictionary`-typed column named in `keys` with `sortable` ranks.r°  zColumn 'z' not found in table.)	ÚschemaÚget_field_indexr   rB   rÀ   r¤   Ú
set_columnrÛ  r™  )rÜ  rÝ  rÁ   Úindexr  s        r0   Úsortable_tablerä  ›  s    € àð Qð QˆØ”×,Ò,¨TÑ2Ô2ˆØ�BŠ;ˆ;Ø8˜TÐ8Ð8Ð8ˆCÝ% cÑ*Ô*Ð*Ý˜Ÿš UÑ+Ô+Ô0Ñ1Ô1ð 	QØ×$Ò$ U¨Dµ(¸5¿<º<ÈÑ;NÔ;NÑ2OÔ2OÑPÔPˆEøØ€Lr3   ÚsortingúSequence[tuple[str, Order]]Únull_placementr   úpa.UInt64Arrayc                ó�   ‡— t           dk     rt          j        | |‰¬¦  «        S ˆfd„|D ¦   «         }t          j        | |¬¦  «        S )zJ`pc.sort_indices`, hiding how `null_placement` must be passed per version.)é   )rÔ  rç  c                ó    •— g | ]
\  }}||‰f‘ŒS r.   r.   )rÂ   rÁ   Úorderrç  s      €r0   rÃ   z sort_indices.<locals>.<listcomp>¯  s$   ø€ ÐFÐFÐF©{¨t°Uˆd�E˜>Ð*ÐFÐFÐFr3   )rÔ  )ru   r�   Úsort_indices)rÜ  rå  rç  Úkeyeds     ` r0   rí  rí  §  sX   ø€ õ ˜ÒÐÝŒ˜u°ÈÐWÑWÔWÐWð GÐFÐFÐF¸gÐFÑFÔF€EÝŒ?˜5¨EÐ2Ñ2Ô2Ð2r3   Ú
descendingÚ
nulls_lastc               óx  — |rdnd}|rdnd}d\  }}t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }t          j                             t          dt          | ¦  «        d¬¦  «        | g||g¬	¦  «        }| 	                    |¦  «        }	| 	                    t          j
        t          j        |¦  «        t          d
¦  «        ¦  «        ¦  «        }
t          j                             t          j        | ¦  «        t          j        | ¦  «        g||g¬	¦  «        }t          ||df||fg|¦  «        }|	                     |¦  «                             ¦   «         j        }t          j                             ||                     |¦  «                             |¦  «                             ¦   «         ¦  «        }t          j                             |	                     |¦  «        |g||g¬	¦  «        }t	          j        ||
g¦  «                             |¦  «                             |¦  «        S )Nrï  rÒ  Úat_endÚat_start)ÚidxrŒ  r   r~   )ro   rq   rr   rŽ  T)r�   Úgreaterr›  rƒ   rj   r“  r‹   rx   r€   Úfilterrž  Úinvertr”  r•  rí  r™  rš  r—   rŠ   r†   rƒ  r˜  )rw   rï  rð  Úsort_directionÚnulls_positionrô  ÚvÚis_not_sortedÚindexedÚnot_sorted_partÚpass_throughÚexplodedÚsorted_indicesr—   Úsorted_implodedÚimploded_by_idxs                   r0   Ú	list_sortr  ³  s  € ð #Ð3ˆˆ¨ð ð AKÐ4Z°H°HÐPZ€NØ�F€CˆÝ”J�rÔ3°EÑ:Ô:½CÀ¹F¼FÑCÔC€MÝŒh×"Ò"Ý	�a�S ™ZœZ¨aÐ	0Ñ	0Ô	0°%Ð8ÀÀaÀð #ñ ô €Gð —n’n ]Ñ3Ô3€OØ—>’>¥"¤,­r¬y¸Ñ/GÔ/GÍÈTÉÌÑ"SÔ"SÑTÔT€LÝŒx×#Ò#Ý	Œ˜Ñ	Ô	¥Ô!7¸Ñ!>Ô!>Ð?ÈÈ3Àxð $ñ ô €Hõ "Ø�C˜Ð%¨¨>Ð':Ð;¸^ñô €Nð ×$Ò$ QÑ'Ô'×6Ò6Ñ8Ô8Ô@€GÝ”l×.Ò.Ø�—’˜~Ñ.Ô.×5Ò5°aÑ8Ô8×GÒGÑIÔIñô €Oõ ”h×*Ò*Ø	×	Ò	 Ñ	$Ô	$ oÐ6¸sÀA¸hð +ñ ô €Oõ Ô˜_¨lÐ;Ñ<Ô<×DÒDÀSÑIÔI×PÒPÐQRÑSÔSÐSr3   )r)   r   r*   r+   )r)   r   r*   r4   )r)   r   r*   r7   )r)   r   r*   r:   )r)   r   r*   r=   )r)   r   r*   r@   )
rF   rG   rH   r   rD   r   rE   r   r*   r'   )r`   r   r*   r   )rf   r   r*   rg   )ro   rp   rq   rp   rr   rp   r*   r   )rz   r{   r*   r|   r-   )r™   rš   r›   rœ   r*   r   )rŒ   rp   r    r   r*   r   )r›   rœ   r`   r¦   rŒ   rp   r*   r   )rŒ   rp   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   r.  r   r*   r/  )
rF   rG   rH   r   rD   r   rE   r   r*   r6  )r™   r   r*   rG   )r™   r?  r*   rG   )r    r   rb  rp   rc  rd  r*   re  )rl  rm  rn  rG   r*   ro  )r|  )r  r€  ry  r    r*   r�  )rw   r   rˆ  r‰  r*   r   )rw   r   r¥  r%   r*   r   )rw   r   r*   r®  )r©  r(   r¥  r%   r*   r‘  )rw   r   r*   r   )rÜ  r�  rÝ  rÞ  r*   r�  )rÜ  r�  rå  ræ  rç  r   r*   rè  )rw   r   rï  rd  rð  rd  r*   r   )žÚ
__future__r   rÀ  Ú	functoolsr   Útypingr   r   r   Úpyarrowrj   Úpyarrow.computeÚcomputer�   Únarwhals._compliantr   Únarwhals._utilsr	   r
   r   Únarwhals.exceptionsr   Úcollections.abcr   r   r   r   r   r   Útyping_extensionsr   rd   r   Únarwhals._arrow.typingr   r   r   r   r   r   r   r   r   r   r    r!   Únarwhals._durationr"   Únarwhals.dtypesr#   Únarwhals.typingr$   r%   r&   r'   Ú__annotations__r(   r1   r6   r9   r<   r?   rB   rJ   Úpyarrow.typesÚPYARROWÚ_backend_versionru   r_   Úscalarrƒ   re   rn   rx   r˜   r‰   r¥   r©   r¬   r´   r³   ÚMAINr±   rÛ   r2  rÝ   Úfloat32rß   Úfloat16rø   Úbinaryrã   ru  rÙ   r«  rê   rÙ  rÇ  rå   Údate32rö   Útime64rÏ   Úint8rÍ   Úint16rË   Úint32rÉ   Úint64r×   rÅ  rÕ   rÆ  rÓ   rÑ   rÈ  rù   ÚObjectÚEnumr	  rý   r  r,  r3  ÚDATE_REÚSEP_REÚTIME_REÚHMS_REÚHM_REÚHMS_RE_NO_SEPÚTZ_RErE  ÚYMD_REÚDMY_REÚMDY_REÚYMD_RE_NO_SEPrY  r_  r:  rT  rL  rM  rk  rw  r}  rƒ  r…  r£  r¶  r³  r­  rª  r¨  rÛ  rä  rí  r  r.   r3   r0   ú<module>r/     s>	  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ø Ð Ð Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ 3Ð 3Ð 3Ð 3Ð 3Ð 3àð 6ØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEØ)Ð)Ð)Ð)Ð)Ð)Ð)Ð)à(Ð(Ð(Ð(Ð(Ð(à2Ð2Ð2Ð2Ð2Ð2ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 0Ð/Ð/Ð/Ð/Ð/Ø%Ð%Ð%Ð%Ð%Ð%ØJÐJÐJÐJÐJÐJÐJÐJÐJÐJð *9ÐÐ8Ð8Ð8Ñ8ØJ€LÐJÐJÐJÑJàGÐGÐGÐGØ@Ð@Ð@Ð@Ø8Ð8Ð8Ð8ØCÐCÐCÐCØQÐQÐQÐQØNÐNÐNÐNð Øð&ð &ð &ð &ð &ð &ð &ð .Ð-Ð-Ð-Ð-Ð-ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð !Ô(×9Ò9Ñ;Ô;€Ø +ð 
Ø	Ø
Ø	Ø	Ø	Ø	Ø
Ø
Ø
ð9ð 9€
ð ð ð ñ ð 	„i€Ø !ðAð Að Að AðCð Cð Cð Cð
'ð 'ð 'ð 'ðNð Nð Nð Nð* KOðIð Ið Ið Ið Ið+ð +ð +ð +ð NRð1ð 1ð 1ð 1ð 1ðð ð ð ðBð Bð Bð Bð €�2ÐÑÔð@ð @ð @ñ Ôð@ðF 
ŒÔ	€ð6Ø
„N�J�B”J‘L”Lð6à
„N�J�B”J‘L”Lð6ð „N�J�B”J‘L”Lð6ð „M�9�2”9‘;”;ð	6ð
 „M�9�2”9‘;”;ð6ð „N�H�B”H‘J”Jð6ð Ô˜˜œ i b¤i¡k¤k°9°2´9±;´;Ñ?Ô?ð6ð „K��”‘”ð6ð „K��”˜4‘”ð6ð „K��”‘”ð6ð „L�(�"”(‘*”*ð6ð „L�(�"”(‘*”*ð6ð „L�(�"”(‘*”*ð6ð „L�(�"”(‘*”*ð6ð „M�9�2”9‘;”;ð6ð  „M�9�2”9‘;”;ð!6ð" „M�9�2”9‘;”;ð#6€ð ð ð ñ ð& ”m V¤[Ð1Ð ðð ð ð ð@Gð Gð Gð Gð< ð  ð  ð  ðF"ð "ð "ð "ð$ =€Ø	€Ø
4€Ø	(€Ø €Ø*€Ø%€ØÐ
3�vÐ
3Ð
3 Ð
3Ð
3¨%Ð
3Ð
3Ð
3€ð 
D€ð 
D€ð 
D€Øl€ð �HÐØˆZÐØˆZÐØˆZÐð	€ð ˜Ð$ u¨gÐ&6¸ÈÐ8QÐR€ð Øð%ð %ð %ð %ð %ð %ð<ð <ð <ð <ð>ð ð ð ð(ð ð ð ðUð Uð Uð Uð.	Lð 	Lð 	Lð 	Lð �eÒÐð & yÐ1Ø(¨,Ð7Ø" FÐ+ð<ð <€Hð ð ð ñ ð ð ˜tÐ$Ø  $Ð'Ø˜EÐ"ðð €Hð CIðAð Að Að Að Að XÐ WÐ WÐ WÐ WÐ/Ð0PÔQÑ WÔ WÐ Wð!ð !ð !ð !ðH Ð Ø+¨qÑ0Ð ð0ð 0ð 0ð 0ð@ð @ð @ð @ð8ð ð ð ðDMð Mð Mð Mð.	ð 	ð 	ð 	ð	3ð 	3ð 	3ð 	3ðTð Tð Tð Tð Tð Tr3   