Ë
    ÚÍ:j@  ã                  óÈ  — 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c mZ d dlmZ d dl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m(Z( d dl)Z*d dl+Z,d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dlm<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZC d dlDmEZEmFZFmGZG dZHdeId<    G d„ ded   e«      ZJy) é    )ÚannotationsN)ÚBytesIO)ÚTYPE_CHECKINGÚAnyÚcast©ÚIbisExpr)Úevaluate_exprsÚlitÚnative_to_narwhals_dtype)ÚSQLLazyFrame)ÚImplementationÚValidateBackendVersionÚVersionÚgenerate_temporary_column_nameÚnot_implementedÚparse_columns_to_dropÚto_pyarrow_table)ÚInvalidOperationError)ÚIterableÚIteratorÚMappingÚSequence)ÚPath)Ú
ModuleType)Ú	TypeAlias)ÚBinary)ÚSelfÚTypeIs)ÚCompliantDataFrameAny©ÚIbisGroupBy©ÚIbisNamespace©ÚIbisInterchangeSeries)Ú_EagerAllowedImpl)Ú_LimitedContext)Ú	LazyFrame)ÚDType©Ú	DataFrame)ÚAsofJoinStrategyÚJoinStrategyÚUniqueKeepStrategyz*Sequence[ir.BooleanColumn] | Sequence[str]r   ÚJoinPredicatesc                  óL  — e Zd Zej                  Zddœ	 	 	 	 	 	 	 d,d„Zed-d„«       Ze	d.d„«       Z
d/d„Zd0d„Zd0d„Zd1d	„Zd2d
„Zd3d„Zd4d„Z	 	 	 	 	 	 d5d„Zd6d„Zd7d„Zd8d„Zd8d„Zd9d„Zd:d;d„Zd8d„Zd<d„Zed=d„«       Zed>d„«       Zd?d„Zd@d„ZdAd„Z dBd„Z!	 	 	 	 	 	 dCd„Z"dDd„Z#edEd„«       Z$	 	 	 	 	 	 	 	 	 	 	 	 dFd „Z%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dGd!„Z&	 	 	 	 	 	 	 	 dHd"„Z'd=d#„Z(	 	 	 	 	 	 	 	 dId$„Z)dJd%„Z*dKd&„Z+dLd'„Z,dMd(„Z-	 	 	 	 	 	 	 	 	 	 dNd)„Z.dOd*„Z/dPd+„Z0 e1«       Z2 e1«       Z3y)QÚIbisLazyFrameF)Úvalidate_backend_versionc               ób   — || _         || _        d | _        d | _        |r| j	                  «        y y ©N)Ú_native_frameÚ_versionÚ_cached_schemaÚ_cached_columnsÚ_validate_backend_version)ÚselfÚdfÚversionr3   s       úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/narwhals/_ibis/dataframe.pyÚ__init__zIbisLazyFrame.__init__7   s7   € ð (*ˆÔØˆŒØ7;ˆÔØ15ˆÔÙ#Ø×*Ñ*Õ,ð $ó    c                ó6   — t        | t        j                  «      S r5   )Ú
isinstanceÚirÚTable)Úobjs    r>   Ú
_is_nativezIbisLazyFrame._is_nativeA   s   € ä˜#œrŸx™xÓ(Ð(r@   c              ó*   —  | ||j                   ¬«      S ©N©r=   )r7   )ÚclsÚdataÚcontexts      r>   Úfrom_nativezIbisLazyFrame.from_nativeE   s   € á�4 ×!1Ñ!1Ô2Ð2r@   c                ó”   — | j                   t        j                  u rddlm}  || d¬«      S | j                   j                  | d¬«      S )Nr   r+   Úinterchange)ÚlevelÚlazy)r7   r   ÚV1Únarwhals.stable.v1r,   Ú	lazyframe)r;   r,   s     r>   Úto_narwhalszIbisLazyFrame.to_narwhalsI   s<   € Ø�=‰=œGŸJ™JÑ&Ý4á˜T¨Ô7Ð7Ø�}‰}×&Ñ& t°6Ð&Ó:Ð:r@   c                óX   — | j                   t        j                  urd}t        |«      ‚| S )Nz;__narwhals_dataframe__ is not implemented for IbisLazyFrame)r7   r   rR   ÚAttributeError)r;   Úmsgs     r>   Ú__narwhals_dataframe__z$IbisLazyFrame.__narwhals_dataframe__P   s'   € à�=‰=¤§
¡
Ñ*ØOˆCÜ  Ó%Ð%Øˆr@   c                ó   — | S r5   © ©r;   s    r>   Ú__narwhals_lazyframe__z$IbisLazyFrame.__narwhals_lazyframe__W   s   € Øˆr@   c                ó   — t         S r5   )Úibisr\   s    r>   Ú__native_namespace__z"IbisLazyFrame.__native_namespace__Z   s   € Üˆr@   c                ó4   — ddl m}  || j                  ¬«      S )Nr   r#   rI   )Únarwhals._ibis.namespacer$   r7   )r;   r$   s     r>   Ú__narwhals_namespace__z$IbisLazyFrame.__narwhals_namespace__]   s   € Ý:á T§]¡]Ô3Ð3r@   c                óh   — ddl m}  || j                  j                  |«      | j                  ¬«      S )Nr   r%   rI   )Únarwhals._ibis.seriesr&   ÚnativeÚselectr7   )r;   Únamer&   s      r>   Ú
get_columnzIbisLazyFrame.get_columnb   s%   € Ý?á$ T§[¡[×%7Ñ%7¸Ó%=ÀtÇ}Á}ÔUÐUr@   c              #  óP   K  — | j                   D ]  }| j                  |   –— Œ y ­wr5   )Úcolumnsrf   )r;   rh   s     r>   Ú_iter_columnszIbisLazyFrame._iter_columnsg   s(   è ø€ Ø—L‘Lò 	$ˆDØ—+‘+˜dÑ#Ó#ñ	$ùs   ‚$&c                óø  — |�|t         j                  u r=ddlm}  |t	        | j
                  j                  «       «      d| j                  d¬«      S |t         j                  u rCddl	m
}  || j
                  j                  «       t         j                  d| j                  d¬«      S |t         j                  u r3ddlm}  || j
                  j                  «       d| j                  ¬«      S d	|› �}t!        |«      ‚)
Nr   )ÚArrowDataFrameT)r3   r=   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr3   r=   ro   )ÚPolarsDataFrame)r3   r=   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframern   r   rf   Ú
to_pyarrowr7   ÚPANDASÚnarwhals._pandas_like.dataframerp   Ú	to_pandasÚPOLARSÚnarwhals._polars.dataframerr   Ú	to_polarsÚ
ValueError)r;   ÚbackendÚkwargsrn   rp   rr   rX   s          r>   ÚcollectzIbisLazyFrame.collectk   sà   € ð ˆ?˜g¬×)?Ñ)?Ñ?Ý@á!Ü  §¡×!7Ñ!7Ó!9Ó:Ø)-ØŸ™Ø&*ô	ð ð ”n×+Ñ+Ñ+ÝKá&Ø—‘×%Ñ%Ó'Ü-×4Ñ4Ø)-ØŸ™Ø&*ôð ð ”n×+Ñ+Ñ+ÝBá"Ø—‘×%Ñ%Ó'Ø)-ØŸ™ôð ð .¨g¨YÐ7ˆÜ˜‹oÐr@   c                óV   — | j                  | j                  j                  |«      «      S r5   )Ú_with_nativerf   Úhead)r;   Úns     r>   r‚   zIbisLazyFrame.head�   s"   € Ø× Ñ  §¡×!1Ñ!1°!Ó!4Ó5Ð5r@   c                óR   — | j                   | j                  j                  |Ž «      S r5   )r�   rf   rg   )r;   Úcolumn_namess     r>   Úsimple_selectzIbisLazyFrame.simple_select’   s%   € Ø× Ñ Ð!3 §¡×!3Ñ!3°\Ð!BÓCÐCr@   c           
     óÐ   — t        | g|¢­Ž D ��cg c]   \  }}t        d|j                  |«      «      ‘Œ" }}}| j                  | j                  j                  |«      «      S c c}}w )Nz	ir.Scalar)r
   r   rh   r�   rf   Ú	aggregate)r;   Úexprsrh   ÚvalÚ	selections        r>   rˆ   zIbisLazyFrame.aggregate•   se   € ô ,¨DÐ9°5Ò9÷
á��cô �˜cŸh™h t›nÕ-ð
ˆ	ñ 
ð × Ñ  §¡×!6Ñ!6°yÓ!AÓBÐBùó	
s   �%A"c                óÚ   — t        | g|¢­Ž D ��cg c]  \  }}|j                  |«      ‘Œ }}}|sd}t        |«      ‚ | j                  j                  |Ž }| j                  |«      S c c}}w )NzKAt least one expression must be provided to `select` with the Ibis backend.)r
   rh   r|   rf   rg   r�   )r;   r‰   rh   rŠ   r‹   rX   Úts          r>   rg   zIbisLazyFrame.selectœ   sj   € Ü5CÀDÐ5QÈ5Ò5Q×R©	¨¨c�S—X‘X˜d•^ÐRˆ	ÑRÙØ_ˆCÜ˜S“/Ð!àˆD�K‰K×Ñ 	Ð*ˆØ× Ñ  Ó#Ð#ùó Ss   �A'c               óš   ‡— t        | ||¬«      Šˆfd„| j                  D «       }| j                   | j                  j                  |Ž «      S )N©Ústrictc              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wr5   r[   )Ú.0ÚcolÚcolumns_to_drops     €r>   ú	<genexpr>z%IbisLazyFrame.drop.<locals>.<genexpr>§   s   øè ø€ ÒO˜S°C¸Ò4N”SÑOùs   ƒ	�)r   rk   r�   rf   rg   )r;   rk   r�   r‹   r”   s       @r>   ÚdropzIbisLazyFrame.drop¥   sB   ø€ Ü/°°gÀfÔMˆÛO D§L¡LÔOˆ	Ø× Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@r@   Nc                ó$   — |�d}t        |«      ‚| S )Nz,`backend` argument is not supported for Ibis)r|   )r;   r}   Ú_rX   s       r>   rQ   zIbisLazyFrame.lazyª   s   € ð
 ÐØ@ˆCÜ˜S“/Ð!Øˆr@   c                ó‚   — t        t        | g|¢­Ž «      }| j                   | j                  j                  di |¤Ž«      S )Nr[   )Údictr
   r�   rf   Úmutate)r;   r‰   Únew_columns_maps      r>   Úwith_columnszIbisLazyFrame.with_columns´   s<   € Üœ~¨dÐ;°UÒ;Ó<ˆØ× Ñ Ð!3 §¡×!3Ñ!3Ñ!F°oÑ!FÓGÐGr@   c                ó€   — t        d || «      d   «      }| j                  | j                  j                  |«      «      S )Nzir.BooleanValuer   )r   r�   rf   Úfilter)r;   Ú	predicateÚmasks      r>   rŸ   zIbisLazyFrame.filter¸   s8   € äÐ%¡y°£°qÑ'9Ó:ˆØ× Ñ  §¡×!3Ñ!3°DÓ!9Ó:Ð:r@   c           	     óü   — | j                   €_| j                  j                  «       j                  j	                  «       D ��ci c]  \  }}|t        || j                  «      “Œ c}}| _         | j                   S c c}}w r5   )r8   rf   ÚschemaÚfieldsÚitemsr   r7   ©r;   rh   Údtypes      r>   r£   zIbisLazyFrame.schema½   so   € à×ÑÐ&ð
 $(§;¡;×#5Ñ#5Ó#7×#>Ñ#>×#DÑ#DÓ#F÷#á�D˜%ð Ô.¨u°d·m±mÓDÑDó#ˆDÔð ×"Ñ"Ð"ùó	#s   Á!A8c                ó¼   — | j                   €E| j                  �t        | j                  «      nt        | j                  j
                  «      | _         | j                   S r5   )r9   r8   Úlistr£   rf   rk   r\   s    r>   rk   zIbisLazyFrame.columnsÈ   sR   € à×ÑÐ'ð ×&Ñ&Ð2ô �T—[‘[Ô!ä˜$Ÿ+™+×-Ñ-Ó.ð Ô ð
 ×#Ñ#Ð#r@   c                ó6   — | j                   j                  «       S r5   )rf   rx   r\   s    r>   rx   zIbisLazyFrame.to_pandasÒ   s   € à�{‰{×$Ñ$Ó&Ð&r@   c                ó6   — | j                   j                  «       S r5   )rf   ru   r\   s    r>   Úto_arrowzIbisLazyFrame.to_arrowÖ   s   € à�{‰{×%Ñ%Ó'Ð'r@   c                ó<   — | j                  | j                  |¬«      S rH   )Ú	__class__rf   )r;   r=   s     r>   Ú_with_versionzIbisLazyFrame._with_versionÚ   s   € Ø�~‰~˜dŸk™k°7ˆ~Ó;Ð;r@   c                ó<   — | j                  || j                  ¬«      S rH   )r®   r7   )r;   r<   s     r>   r�   zIbisLazyFrame._with_nativeÝ   s   € Ø�~‰~˜b¨$¯-©-ˆ~Ó8Ð8r@   c               ó$   — ddl m}  || ||¬«      S )Nr   r!   )Údrop_null_keys)Únarwhals._ibis.group_byr"   )r;   Úkeysr²   r"   s       r>   Úgroup_byzIbisLazyFrame.group_byà   s   € õ 	8á˜4 °nÔEÐEr@   c                ód   ‡— dˆfd„}| j                  | j                  j                  |«      «      S )Nc                ó(   •— ‰j                  | | «      S r5   )Úget)r“   Úmappings    €r>   Ú_renamez%IbisLazyFrame.rename.<locals>._renameè   s   ø€ Ø—;‘;˜s CÓ(Ð(r@   )r“   ÚstrÚreturnr»   )r�   rf   Úrename)r;   r¹   rº   s    ` r>   r½   zIbisLazyFrame.renameç   s*   ø€ õ	)ð × Ñ  §¡×!3Ñ!3°GÓ!<Ó=Ð=r@   c               óp   — t        | j                  «      j                  |«      }|r | j                  |Ž S | S )zWIbis adds a suffix to the right table col, even when it matches the left during a join.)Úsetrk   Úintersectionr–   )r<   rk   Ú
duplicatess      r>   Ú_join_drop_duplicate_columnsz*IbisLazyFrame._join_drop_duplicate_columnsí   s4   € ô ˜Ÿ™“_×1Ñ1°'Ó:ˆ
Ù'1ˆwˆr�w‰w˜
Ð#Ð9°rÐ9r@   c               óÌ  ‡— |dk(  rdn|}d‰z   }|| k(  r)| j                  |j                  j                  «       «      }|dk(  r9| j                  j                  |j                  ||¬«      }| j                  |«      S |€J ‚|€J ‚| j	                  |||«      }	| j                  j                  |j                  |	||¬«      }|dk(  r�ˆfd„|D «       }
| j                  ||
«      }d„ |	D «       }g }|D ]R  }|j                  j                  }|| j                  vsŒ(|j                  j                  |k7  sŒB|j                  |«       ŒT |r |j                  |Ž }| j                  |«      S )	NÚfullÚouterú{name}Úcross)ÚhowÚrnameÚleftc              3  ó(   •K  — | ]	  }|‰z   –— Œ y ­wr5   r[   ©r’   rƒ   Úsuffixs     €r>   r•   z%IbisLazyFrame.join.<locals>.<genexpr>
  ó   øè ø€ Ò8¨!˜1˜v�:Ñ8ùó   ƒc              3  ór   K  — | ]/  }t        |t        «      rŒt        d |j                  «       «      –— Œ1 y­w)r   N)rB   r»   r   Úop)r’   Úps     r>   r•   z%IbisLazyFrame.join.<locals>.<genexpr>  s'   è ø€ ÒW¨QÄJÈqÔRUÕDV”$�x §¡£×(ÑWùs   ‚7˜7)r�   rf   ÚviewÚjoinÚ_convert_predicatesrÂ   Úrightrh   rk   rÊ   Úappendr–   )r;   ÚotherrÈ   Úleft_onÚright_onrÍ   Ú
how_nativerÉ   ÚjoinedÚ
predicatesÚright_namesÚitÚto_dropÚpredrÖ   s        `         r>   rÔ   zIbisLazyFrame.joinó   sb  ø€ ð !$ v¢‘W°3ˆ
Ø˜6Ñ!ˆØ�DŠ=à×%Ñ% e§l¡l×&7Ñ&7Ó&9Ó:ˆEØ˜Ò Ø—[‘[×%Ñ% e§l¡l¸
È%Ð%ÓPˆFØ×$Ñ$ VÓ,Ð,àÐ"Ð"Ð"ØÐ#Ð#Ð#Ø×-Ñ-¨e°W¸hÓGˆ
Ø—‘×!Ñ! %§,¡,°
À
ÐRWÐ!ÓXˆØ˜ÒÛ8¨xÔ8ˆKØ×6Ñ6°v¸{ÓKˆFÙW°*ÔWˆBØˆGØò *�ØŸ
™
Ÿ™�à §¡Ò,°·±·±À5Ó1HØ—N‘N 5Õ)ð	*ñ
 Ø$˜Ÿ™ gÐ.�Ø× Ñ  Ó(Ð(r@   c               óè  ‡— d‰z   }t         j                  t         j                  dœ}	g }
|	j                  |«      x}r$ || j                  |   |j                  |   «      }nd}t        |«      ‚|�|�| j                  |||«      }
| j                  j                  |j                  ||
|¬«      }| j                  ||‰z   g«      }|�ˆfd„|D «       }| j                  ||«      }| j                  |«      S )NrÆ   )ÚbackwardÚforwardzIOnly `backward` and `forward` strategies are currently supported for Ibis)rÉ   c              3  ó(   •K  — | ]	  }|‰z   –— Œ y ­wr5   r[   rÌ   s     €r>   r•   z*IbisLazyFrame.join_asof.<locals>.<genexpr>/  rÎ   rÏ   )
ÚoperatorÚgeÚler¸   rf   ÚNotImplementedErrorrÕ   Ú	asof_joinrÂ   r�   )r;   rØ   rÙ   rÚ   Úby_leftÚby_rightÚstrategyrÍ   rÉ   Ústrategy_oprÝ   rÑ   ÚonrX   rÜ   rÞ   s          `        r>   Ú	join_asofzIbisLazyFrame.join_asof  sõ   ø€ ð ˜6Ñ!ˆÜ#+§;¡;¼8¿;¹;ÑGˆØ%'ˆ
Ø—‘ Ó*Ð*ˆ2Ð*Ù#% d§k¡k°'Ñ&:¸E¿L¹LÈÑ<RÓ#S‰Bà]ˆCÜ% cÓ*Ð*ØÐ 8Ð#7Ø×1Ñ1°%¸À(ÓKˆJØ—‘×&Ñ& u§|¡|°R¸È5Ð&ÓQˆØ×2Ñ2°6¸HÀvÑ<MÐ;NÓOˆØÐÛ8¨xÔ8ˆKØ×6Ñ6°v¸{ÓKˆFØ× Ñ  Ó(Ð(r@   c           
     ó¬   — ||k(  r|S t        ||d¬«      D ��cg c].  \  }}t        d| j                  |   |j                  |   k(  «      ‘Œ0 c}}S c c}}w )NTr�   zir.BooleanColumn)Úzipr   rf   )r;   rØ   rÙ   rÚ   rÊ   rÖ   s         r>   rÕ   z!IbisLazyFrame._convert_predicates3  s_   € ð �hÒØˆNô  # 7¨H¸TÔB÷
á��eô Ð# d§k¡k°$Ñ&7¸5¿<¹<ÈÑ;NÑ&NÕPó
ð 	
ùó 
s   ™3Ac           	     óÂ   — | j                   j                  «       j                  j                  «       D ��ci c]  \  }}|t	        || j
                  «      “Œ c}}S c c}}w r5   )rf   r£   r¤   r¥   r   r7   r¦   s      r>   Úcollect_schemazIbisLazyFrame.collect_schema=  sU   € ð  $Ÿ{™{×1Ñ1Ó3×:Ñ:×@Ñ@ÓB÷
á��eð Ô*¨5°$·-±-Ó@Ñ@ó
ð 	
ùó 
s   ¶!Ac               ó¾  — |xs | j                   }| j                  |«      x}r|‚t        d| j                   d¬«      }|r|dk(  rt        j                  |dddœŽ}n$|rt        j                  |dddœŽ}nt        d«      }t        j                  ||¬	«      }|d
k(  r*| j                  j                  «       j                  |«      }	n/t        j                  «       j                  |«      t        d«      z   }	 | j                  j                  di ||	i¤Žj                  t        j                  |   t        d«      k(  «      j                  |«      }
| j!                  |
«      S )Né   Ú
row_index_)ÚprefixÚlastT©Ú
descendingÚ
nulls_lastFé   )rµ   Úorder_byÚnoner[   )rk   Ú_check_columns_existr   r	   Ú_sortr   r_   Úwindowrf   ÚcountÚoverÚ
row_numberr›   rŸ   r˜   r–   r�   )r;   ÚsubsetÚkeeprþ   Úsubset_ÚerrorÚtmp_nameÚ	order_by_r  Úexprr<   s              r>   ÚuniquezIbisLazyFrame.uniqueC  s%  € ð Ò(˜DŸL™LˆØ×-Ñ-¨gÓ6Ð6ˆ5Ð6ØˆKÜ1°!°T·\±\È,ÔWˆÙ˜ šÜ Ÿ™¨¸TÈdÒS‰IÙÜ Ÿ™¨¸UÈuÒU‰Iä˜A›ˆIÜ—‘ g¸	ÔBˆØ�6Š>Ø—;‘;×$Ñ$Ó&×+Ñ+¨FÓ3‰Dä—?‘?Ó$×)Ñ)¨&Ó1´C¸³FÑ:ˆDàˆD�K‰K×ÑÑ2 (¨DÐ!1Ñ2ß‰V”D—F‘F˜8Ñ$¬¨A«Ñ.Ó/ß‰T�(‹^ð 	ð
 × Ñ  Ó$Ð$r@   c               ó„   — ddl m}  |j                  |||dœŽ}| j                   | j                  j
                  |Ž «      S )Nr   r   rú   )Únarwhals._ibis.exprr	   r  r�   rf   rþ   )r;   rû   rü   Úbyr	   Úcolss         r>   ÚsortzIbisLazyFrame.sort`  s<   € Ý0àˆx�~‰~˜r¨jÀZÒPˆØ× Ñ Ð!5 §¡×!5Ñ!5°tÐ!<Ó=Ð=r@   c               óô   — ddl m} t        |t        «      r| n|D �cg c]  }| ‘Œ c}} |j                  ||ddœŽ}| j                   | j                  j                  |Ž j                  |«      «      S c c}w )Nr   r   Trú   )	r  r	   rB   Úboolr  r�   rf   rþ   r‚   )r;   Úkr  Úreverser	   ÚelÚdescr  s           r>   Útop_kzIbisLazyFrame.top_kf  sl   € Ý0ä(¨´$Ô7�7‰{ÈwÖ=WÈÀ"ºfÒ=WˆØˆx�~‰~˜r¨d¸tÒDˆØ× Ñ Ð!5 §¡×!5Ñ!5°tÐ!<×!AÑ!AÀ!Ó!DÓEÐEùò >Xs   ž
A5c                óv   — |�|n| j                   }| j                  | j                  j                  |«      «      S r5   )rk   r�   rf   Ú	drop_null)r;   r  r  s      r>   Ú
drop_nullszIbisLazyFrame.drop_nullsm  s2   € Ø"Ð.‘&°D·L±LˆØ× Ñ  §¡×!6Ñ!6°wÓ!?Ó@Ð@r@   c                ó:  — | j                   j                  }| j                  «       }|D ]'  }||   }||j                  k7  sŒd|› d�}t	        |«      ‚ t        |«      dk7  rd}t        |«      ‚| j                  | j                  j                  |d   d¬«      «      S )Nz-`explode` operation not supported for dtype `z`, expected List typerý   z’Exploding on multiple columns is not supported with Ibis backend since we cannot guarantee that the exploded columns have matching element counts.r   T)Ú
keep_empty)
r7   Údtypesrô   ÚListr   Úlenré   r�   rf   Úunnest)r;   rk   r  r£   r“   r§   rX   s          r>   ÚexplodezIbisLazyFrame.explodeq  s¶   € Ø—‘×%Ñ%ˆØ×$Ñ$Ó&ˆØò 	1ˆCØ˜3‘KˆEà˜Ÿ™Ó#àCÀEÀ7ð K)ð )ð ô ,¨CÓ0Ð0ð	1ô ˆw‹<˜1Òð^ð ô & cÓ*Ð*à× Ñ  §¡×!3Ñ!3°G¸A±JÈ4Ð!3Ó!PÓQÐQr@   c                óD  — dd l m} |€g n|}|€| j                  D �cg c]	  }||vsŒ|‘Œ c}n|}t        t        j                  g |¢|‘|‘«      «      }	| j                  j                   |j                  |Ž ||¬«      }
| j                   |
j                  |	Ž «      S c c}w )Nr   )Únames_toÚ	values_to)Úibis.selectorsÚ	selectorsrk   r©   rš   Úfromkeysrf   Úpivot_longerr  r�   rg   )r;   rï   ÚindexÚvariable_nameÚ
value_nameÚsÚindex_ÚcÚon_Úfinal_columnsÚ	unpivoteds              r>   ÚunpivotzIbisLazyFrame.unpivot‡  sª   € õ 	#à&+ m¡¸ˆà<>¸J˜Ÿ™Ö8�1¨°ªŠQÓ8ÈBð 	ô
 œTŸ]™]Ð+O¨VÐ+O°]Ð+OÀJÐ+OÓPÓQˆà—K‘K×,Ñ,ØˆA�F‰F�CˆL =¸Jð -ó 
ˆ	ð × Ñ Ð!1 ×!1Ñ!1°=Ð!AÓBÐBùò 9s
   �	B§Bc                ó  — t        j                  «       j                  t        j                  |¬«      «      j	                  |«      t         j
                  j                  «       g}| j                   | j                  j                  |Ž «      S )N)rþ   )
r_   r  r  r  rh   r(  Úallr�   rf   rg   )r;   rh   rþ   Ú	to_selects       r>   Úwith_row_indexzIbisLazyFrame.with_row_index�  sg   € ä�O‰OÓ×"Ñ"¤4§;¡;¸Ô#AÓB×GÑGÈÓMÜ�N‰N×ÑÓ ð
ˆ	ð × Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@r@   c                ót   — t        |t        «      rd}t        |«      ‚| j                  j	                  |«       y )Nz5Writing to BytesIO is not supported for Ibis backend.)rB   r   ré   rf   Ú
to_parquet)r;   ÚfilerX   s      r>   Úsink_parquetzIbisLazyFrame.sink_parquet¤  s.   € Ü�dœGÔ$ØIˆCÜ% cÓ*Ð*Ø�‰×Ñ˜tÕ$r@   )r<   úir.Tabler=   r   r3   r  r¼   ÚNone)rE   zir.Table | Anyr¼   zTypeIs[ir.Table])rK   r=  rL   r(   r¼   r   )r¼   ú+LazyFrame[ir.Table] | DataFrameV1[ir.Table])r¼   r   )r¼   r   )r¼   r$   )rh   r»   r¼   r&   )r¼   zIterator[ir.Expr])r}   z_EagerAllowedImpl | Noner~   r   r¼   r    )rƒ   Úintr¼   r   )r…   r»   r¼   r   )r‰   r	   r¼   r   )rk   úSequence[str]r�   r  r¼   r   r5   )r}   r>  r˜   r>  r¼   r   )r    r	   r¼   r   )r¼   zdict[str, DType])r¼   z	list[str])r¼   zpd.DataFrame)r¼   zpa.Table)r=   r   r¼   r   )r<   r=  r¼   r   )r´   z"Sequence[str] | Sequence[IbisExpr]r²   r  r¼   r"   )r¹   zMapping[str, str]r¼   r   )r<   r=  rk   úIterable[str]r¼   r=  )rØ   r   rÈ   r.   rÙ   úSequence[str] | NonerÚ   rC  rÍ   r»   r¼   r   )rØ   r   rÙ   r»   rÚ   r»   rë   rC  rì   rC  rí   r-   rÍ   r»   r¼   r   )rØ   r   rÙ   rA  rÚ   rA  r¼   r0   )r  rC  r  r/   rþ   rC  r¼   r   )r  r»   rû   úbool | Sequence[bool]rü   r  r¼   r   )r  r@  r  rB  r  rD  r¼   r   )r  rC  r¼   r   )rk   rA  r¼   r   )
rï   rC  r+  rC  r,  r»   r-  r»   r¼   r   )rh   r»   rþ   rA  r¼   r   )r;  zstr | Path | BytesIOr¼   r>  )4Ú__name__Ú
__module__Ú__qualname__r   ÚIBISÚ_implementationr?   ÚstaticmethodrF   ÚclassmethodrM   rU   rY   r]   r`   rc   ri   rl   r   r‚   r†   rˆ   rg   r–   rQ   r�   rŸ   Úpropertyr£   rk   rx   r¬   r¯   r�   rµ   r½   rÂ   rÔ   rð   rÕ   rô   r  r  r  r  r#  r4  r8  r<  r   Ú_evaluate_window_exprÚ_filterr[   r@   r>   r2   r2   1   sŸ  „ ð %×)Ñ)€Oð SXñ-Øð-Ø(/ð-ØKOð-à	ó-ð ò)ó ð)ð ò3ó ð3ó;óóóó4ó
Vó
$ð"Ø/ð"Ø;>ð"à	ó"óH6óDóCó$óAô
óHó;ð
 ò#ó ð#ð ò$ó ð$ó'ó(ó<ó9ðFØ6ðFØKOðFà	óFó>ð ò:ó ð:ð
")àð")ð ð	")ð
 &ð")ð 'ð")ð ð")ð 
ó")ðH)àð)ð ð	)ð
 ð)ð &ð)ð 'ð)ð #ð)ð ð)ð 
ó)ð8
Øð
Ø$1ð
Ø=Jð
à	ó
ó
ð%à$ð%ð !ð	%ð
 'ð%ð 
ó%ó:>óFóAóRð,Cà ðCð $ðCð ð	Cð
 ðCð 
óCó,Aó%ñ ,Ó-ÐÙÓ�Gr@   r2   )r	   r=  r?  )KÚ
__future__r   ræ   Úior   Útypingr   r   r   r_   Úibis.expr.typesr  ÚtypesrC   r  r	   Únarwhals._ibis.utilsr
   r   r   Únarwhals._sql.dataframer   Únarwhals._utilsr   r   r   r   r   r   r   Únarwhals.exceptionsr   Úcollections.abcr   r   r   r   Úpathlibr   r   r   ÚpandasÚpdÚpyarrowÚpaÚibis.expr.operationsr   Útyping_extensionsr   r   Únarwhals._compliant.typingr    r³   r"   rb   r$   re   r&   Únarwhals._typingr'   r(   Únarwhals.dataframer)   Únarwhals.dtypesr*   rS   r,   ÚDataFrameV1Únarwhals.typingr-   r.   r/   r0   Ú__annotations__r2   r[   r@   r>   ú<module>rg     sž   ðÞ "ã Ý ß +Ñ +ã ß Ð å (ß NÑ NÝ 0÷÷ ñ õ 6áßEÓEÝÝ Ý ãÛÝ+ß.å@Ý3Ý6Ý;Ý2Ý/Ý,Ý%Ý;ßRÑRà L€N�IÓLô{ ØÐVÑWØõ{ r@   