Ë
    ðmxiä?  ã                  óÄ  — 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mZ d d	lm Z  erwd d
l!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dlm(Z( d dl)Z*d dl+Z,d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dlm=Z= d dl>m?Z? d dl@mAZA d dlBmCZD d dlEmFZFmGZGmHZH dZIdeJd<    G d„ ded   e«      ZKy)é    )Ú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Ú
zip_strict)ÚInvalidOperationError)ÚIterableÚIteratorÚMappingÚSequence)ÚPath)Ú
ModuleType)ÚBinary)ÚSelfÚ	TypeAliasÚTypeIs)ÚCompliantDataFrameAny©ÚIbisGroupBy©ÚIbisNamespace©ÚIbisInterchangeSeries)Ú_EagerAllowedImpl)Ú_LimitedContext)Ú	LazyFrame)ÚDType©Ú	DataFrame)ÚAsofJoinStrategyÚJoinStrategyÚUniqueKeepStrategyz*Sequence[ir.BooleanColumn] | Sequence[str]r   ÚJoinPredicatesc                  ó>  — 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«       Z2y)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Úversionr4   s       úO/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_ibis/dataframe.pyÚ__init__zIbisLazyFrame.__init__7   s7   € ð (*ˆÔØˆŒØ7;ˆÔØ15ˆÔÙ#Ø×*Ñ*Õ,ð $ó    c                ó6   — t        | t        j                  «      S r6   )Ú
isinstanceÚirÚTable)Úobjs    r?   Ú
_is_nativezIbisLazyFrame._is_nativeA   s   € ä˜#œrŸx™xÓ(Ð(rA   c              ó*   —  | ||j                   ¬«      S ©N©r>   )r8   )ÚclsÚdataÚcontexts      r?   Úfrom_nativezIbisLazyFrame.from_nativeE   s   € á�4 ×!1Ñ!1Ô2Ð2rA   c                ó”   — | j                   t        j                  u rddlm}  || d¬«      S | j                   j                  | d¬«      S )Nr   r,   Úinterchange)ÚlevelÚlazy)r8   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Ð&Ó:Ð:rA   c                óX   — | j                   t        j                  urd}t        |«      ‚| S )Nz;__narwhals_dataframe__ is not implemented for IbisLazyFrame)r8   r   rS   ÚAttributeError)r<   Úmsgs     r?   Ú__narwhals_dataframe__z$IbisLazyFrame.__narwhals_dataframe__P   s'   € à�=‰=¤§
¡
Ñ*ØOˆCÜ  Ó%Ð%ØˆrA   c                ó   — | S r6   © ©r<   s    r?   Ú__narwhals_lazyframe__z$IbisLazyFrame.__narwhals_lazyframe__W   s   € ØˆrA   c                ó   — t         S r6   )Úibisr]   s    r?   Ú__native_namespace__z"IbisLazyFrame.__native_namespace__Z   s   € ÜˆrA   c                ó4   — ddl m}  || j                  ¬«      S )Nr   r$   rJ   )Únarwhals._ibis.namespacer%   r8   )r<   r%   s     r?   Ú__narwhals_namespace__z$IbisLazyFrame.__narwhals_namespace__]   s   € Ý:á T§]¡]Ô3Ð3rA   c                óh   — ddl m}  || j                  j                  |«      | j                  ¬«      S )Nr   r&   rJ   )Únarwhals._ibis.seriesr'   ÚnativeÚselectr8   )r<   Únamer'   s      r?   Ú
get_columnzIbisLazyFrame.get_columnb   s%   € Ý?á$ T§[¡[×%7Ñ%7¸Ó%=ÀtÇ}Á}ÔUÐUrA   c              #  óP   K  — | j                   D ]  }| j                  |   –— Œ y ­wr6   )Úcolumnsrg   )r<   ri   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)r4   r>   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr4   r>   rp   )ÚPolarsDataFrame)r4   r>   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframero   r   rg   Ú
to_pyarrowr8   ÚPANDASÚnarwhals._pandas_like.dataframerq   Ú	to_pandasÚPOLARSÚnarwhals._polars.dataframers   Ú	to_polarsÚ
ValueError)r<   ÚbackendÚkwargsro   rq   rs   rY   s          r?   ÚcollectzIbisLazyFrame.collectk   sà   € ð ˆ?˜g¬×)?Ñ)?Ñ?Ý@á!Ü  §¡×!7Ñ!7Ó!9Ó:Ø)-ØŸ™Ø&*ô	ð ð ”n×+Ñ+Ñ+ÝKá&Ø—‘×%Ñ%Ó'Ü-×4Ñ4Ø)-ØŸ™Ø&*ôð ð ”n×+Ñ+Ñ+ÝBá"Ø—‘×%Ñ%Ó'Ø)-ØŸ™ôð ð .¨g¨YÐ7ˆÜ˜‹oÐrA   c                óV   — | j                  | j                  j                  |«      «      S r6   )Ú_with_nativerg   Úhead)r<   Úns     r?   rƒ   zIbisLazyFrame.head�   s"   € Ø× Ñ  §¡×!1Ñ!1°!Ó!4Ó5Ð5rA   c                óR   — | j                   | j                  j                  |Ž «      S r6   )r‚   rg   rh   )r<   Úcolumn_namess     r?   Úsimple_selectzIbisLazyFrame.simple_select’   s%   € Ø× Ñ Ð!3 §¡×!3Ñ!3°\Ð!BÓCÐCrA   c           
     óÐ   — t        | g|¢­Ž D ��cg c]   \  }}t        d|j                  |«      «      ‘Œ" }}}| j                  | j                  j                  |«      «      S c c}}w )Nz	ir.Scalar)r
   r   ri   r‚   rg   Ú	aggregate)r<   Úexprsri   Ú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
   ri   r}   rg   rh   r‚   )r<   rŠ   ri   r‹   rŒ   rY   Úts          r?   rh   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r6   r\   )Ú.0ÚcolÚcolumns_to_drops     €r?   ú	<genexpr>z%IbisLazyFrame.drop.<locals>.<genexpr>§   s   øè ø€ ÒO˜S°C¸Ò4N”SÑOùs   ƒ	�)r   rl   r‚   rg   rh   )r<   rl   r�   rŒ   r”   s       @r?   ÚdropzIbisLazyFrame.drop¥   sB   ø€ Ü/°°gÀfÔMˆÛO D§L¡LÔOˆ	Ø× Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@rA   Nc                ó$   — |�d}t        |«      ‚| S )Nz,`backend` argument is not supported for Ibis)r}   )r<   r~   Ú_rY   s       r?   rR   zIbisLazyFrame.lazyª   s   € ð
 ÐØ@ˆCÜ˜S“/Ð!ØˆrA   c                ó‚   — t        t        | g|¢­Ž «      }| j                   | j                  j                  di |¤Ž«      S )Nr\   )Údictr
   r‚   rg   Úmutate)r<   rŠ   Únew_columns_maps      r?   Úwith_columnszIbisLazyFrame.with_columns´   s<   € Üœ~¨dÐ;°UÒ;Ó<ˆØ× Ñ Ð!3 §¡×!3Ñ!3Ñ!F°oÑ!FÓGÐGrA   c                ó€   — t        d || «      d   «      }| j                  | j                  j                  |«      «      S )Nzir.BooleanValuer   )r   r‚   rg   Úfilter)r<   Ú	predicateÚmasks      r?   rŸ   zIbisLazyFrame.filter¸   s8   € äÐ%¡y°£°qÑ'9Ó:ˆØ× Ñ  §¡×!3Ñ!3°DÓ!9Ó:Ð:rA   c           	     óü   — | j                   €_| j                  j                  «       j                  j	                  «       D ��ci c]  \  }}|t        || j                  «      “Œ c}}| _         | j                   S c c}}w r6   )r9   rg   ÚschemaÚfieldsÚitemsr   r8   ©r<   ri   Ú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 r6   )r:   r9   Úlistr£   rg   rl   r]   s    r?   rl   zIbisLazyFrame.columnsÈ   sR   € à×ÑÐ'ð ×&Ñ&Ð2ô �T—[‘[Ô!ä˜$Ÿ+™+×-Ñ-Ó.ð Ô ð
 ×#Ñ#Ð#rA   c                ó6   — | j                   j                  «       S r6   )rg   ry   r]   s    r?   ry   zIbisLazyFrame.to_pandasÒ   s   € à�{‰{×$Ñ$Ó&Ð&rA   c                ó6   — | j                   j                  «       S r6   )rg   rv   r]   s    r?   Úto_arrowzIbisLazyFrame.to_arrowÖ   s   € à�{‰{×%Ñ%Ó'Ð'rA   c                ó<   — | j                  | j                  |¬«      S rI   )Ú	__class__rg   )r<   r>   s     r?   Ú_with_versionzIbisLazyFrame._with_versionÚ   s   € Ø�~‰~˜dŸk™k°7ˆ~Ó;Ð;rA   c                ó<   — | j                  || j                  ¬«      S rI   )r®   r8   )r<   r=   s     r?   r‚   zIbisLazyFrame._with_nativeÝ   s   € Ø�~‰~˜b¨$¯-©-ˆ~Ó8Ð8rA   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ÐErA   c                ód   ‡— dˆfd„}| j                  | j                  j                  |«      «      S )Nc                ó(   •— ‰j                  | | «      S r6   )Úget)r“   Úmappings    €r?   Ú_renamez%IbisLazyFrame.rename.<locals>._renameè   s   ø€ Ø—;‘;˜s CÓ(Ð(rA   )r“   ÚstrÚreturnr»   )r‚   rg   Úrename)r<   r¹   rº   s    ` r?   r½   zIbisLazyFrame.renameç   s*   ø€ õ	)ð × Ñ  §¡×!3Ñ!3°GÓ!<Ó=Ð=rA   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.)Úsetrl   Úintersectionr–   )r=   rl   Ú
duplicatess      r?   Ú_join_drop_duplicate_columnsz*IbisLazyFrame._join_drop_duplicate_columnsí   s4   € ô ˜Ÿ™“_×1Ñ1°'Ó:ˆ
Ù'1ˆwˆr�w‰w˜
Ð#Ð9°rÐ9rA   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r6   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)rC   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‚   rg   ÚviewÚjoinÚ_convert_predicatesrÂ   Úrightri   rl   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Ð.�Ø× Ñ  Ó(Ð(rA   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r6   r\   rÌ   s     €r?   r•   z*IbisLazyFrame.join_asof.<locals>.<genexpr>/  rÎ   rÏ   )
ÚoperatorÚgeÚler¸   rg   ÚNotImplementedErrorrÕ   Ú	asof_joinrÂ   r‚   )r<   rØ   rÙ   rÚ   Úby_leftÚby_rightÚstrategyrÍ   rÉ   Ústrategy_oprÝ   rÑ   ÚonrY   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Ø× Ñ  Ó(Ð(rA   c           
     ó¨   — ||k(  r|S t        ||«      D ��cg c].  \  }}t        d| j                  |   |j                  |   k(  «      ‘Œ0 c}}S c c}}w )Nzir.BooleanColumn)r   r   rg   )r<   rØ   rÙ   rÚ   rÊ   rÖ   s         r?   rÕ   z!IbisLazyFrame._convert_predicates3  s]   € ð �hÒØˆNô  *¨'°8Ó<÷
á��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 r6   )rg   r£   r¤   r¥   r   r8   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\   )rl   Ú_check_columns_existr   r	   Ú_sortr   r`   Úwindowrg   Ú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�(‹^ð 	ð
 × Ñ  Ó$Ð$rA   c               ó„   — ddl m}  |j                  |||dœŽ}| j                   | j                  j
                  |Ž «      S )Nr   r   rù   )Únarwhals._ibis.exprr	   r   r‚   rg   rý   )r<   rú   rû   Úbyr	   Úcolss         r?   ÚsortzIbisLazyFrame.sort`  s<   € Ý0àˆx�~‰~˜r¨jÀZÒPˆØ× Ñ Ð!5 §¡×!5Ñ!5°tÐ!<Ó=Ð=rA   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	   rC   Úboolr   r‚   rg   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 r6   )rl   r‚   rg   Ú	drop_null)r<   r  r  s      r?   Ú
drop_nullszIbisLazyFrame.drop_nullsm  s2   € Ø"Ð.‘&°D·L±LˆØ× Ñ  §¡×!6Ñ!6°wÓ!?Ó@Ð@rA   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)
r8   Údtypesró   ÚListr   Úlenré   r‚   rg   Úunnest)r<   rl   r  r£   r“   r§   rY   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ÐQrA   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Ú	selectorsrl   r©   rš   Úfromkeysrg   Úpivot_longerr  r‚   rh   )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  ri   r'  Úallr‚   rg   rh   )r<   ri   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Ð!?Ó@Ð@rA   c                ót   — t        |t        «      rd}t        |«      ‚| j                  j	                  |«       y )Nz5Writing to BytesIO is not supported for Ibis backend.)rC   r   ré   rg   Ú
to_parquet)r<   ÚfilerY   s      r?   Úsink_parquetzIbisLazyFrame.sink_parquet¤  s.   € Ü�dœGÔ$ØIˆCÜ% cÓ*Ð*Ø�‰×Ñ˜tÕ$rA   )r=   úir.Tabler>   r   r4   r  r¼   ÚNone)rF   zir.Table | Anyr¼   zTypeIs[ir.Table])rL   r<  rM   r)   r¼   r   )r¼   ú+LazyFrame[ir.Table] | DataFrameV1[ir.Table])r¼   r   )r¼   r   )r¼   r%   )ri   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   )rl   úSequence[str]r�   r  r¼   r   r6   )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<  rl   úIterable[str]r¼   r<  )rØ   r   rÈ   r/   rÙ   úSequence[str] | NonerÚ   rB  rÍ   r»   r¼   r   )rØ   r   rÙ   r»   rÚ   r»   rë   rB  rì   rB  rí   r.   rÍ   r»   r¼   r   )rØ   r   rÙ   r@  rÚ   r@  r¼   r1   )r  rB  r  r0   rý   rB  r¼   r   )r  r»   rú   úbool | Sequence[bool]rû   r  r¼   r   )r  r?  r  rA  r  rC  r¼   r   )r  rB  r¼   r   )rl   r@  r¼   r   )
rï   rB  r*  rB  r+  r»   r,  r»   r¼   r   )ri   r»   rý   r@  r¼   r   )r:  zstr | Path | BytesIOr¼   r=  )3Ú__name__Ú
__module__Ú__qualname__r   ÚIBISÚ_implementationr@   ÚstaticmethodrG   ÚclassmethodrN   rV   rZ   r^   ra   rd   rj   rm   r€   rƒ   r‡   r‰   rh   r–   rR   r�   rŸ   Úpropertyr£   rl   ry   r¬   r¯   r‚   rµ   r½   rÂ   rÔ   rð   rÕ   ró   r  r  r  r  r"  r3  r7  r;  r   Ú_evaluate_window_exprr\   rA   r?   r3   r3   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ó%ñ ,Ó-ÑrA   r3   )r	   r<  r>  )LÚ
__future__r   ræ   Úior   Útypingr   r   r   r`   Úibis.expr.typesr  ÚtypesrD   r  r	   Únarwhals._ibis.utilsr
   r   r   Únarwhals._sql.dataframer   Únarwhals._utilsr   r   r   r   r   r   r   r   Únarwhals.exceptionsr   Úcollections.abcr   r   r   r   Úpathlibr   r   ÚpandasÚpdÚpyarrowÚpaÚibis.expr.operationsr   Útyping_extensionsr   r   r    Únarwhals._compliant.typingr!   r³   r#   rc   r%   rf   r'   Únarwhals._typingr(   r)   Únarwhals.dataframer*   Únarwhals.dtypesr+   rT   r-   ÚDataFrameV1Únarwhals.typingr.   r/   r0   r1   Ú__annotations__r3   r\   rA   r?   ú<module>re     sž   ðÞ "ã Ý ß +Ñ +ã ß Ð å (ß NÑ NÝ 0÷	÷ 	ó 	õ 6áßEÓEÝÝ ãÛÝ+ß9Ñ9å@Ý3Ý6Ý;Ý2Ý/Ý,Ý%Ý;ßRÑRà L€N�IÓLôz.ØÐVÑWØõz.rA   