§
    cŠtj@  ã                  óÖ  — 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¦  «        ZJdS ) é    )Ú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                  óÜ  — e Zd Zej        Zddœdxd„Zedyd„¦   «         Ze	dzd„¦   «         Z
d{d„Zd|d„Zd|d„Zd}d„Zd~d„Zdd „Zd€d"„Zd�d(„Zd‚d+„Zdƒd-„Zd„d0„Zd„d1„Zd…d5„Zd†d‡d8„Zd„d9„Zdˆd;„Zed‰d=„¦   «         ZedŠd?„¦   «         Zd‹dA„ZdŒdC„Zd�dD„Z dŽdE„Z!d�dJ„Z"d�dM„Z#ed‘dO„¦   «         Z$d’dW„Z%d“d\„Z&d”d^„Z'd‰d_„Z(d•dd„Z)d–di„Z*d—dl„Z+d˜dm„Z,d™dn„Z-dšds„Z.d›dt„Z/dœdw„Z0 e1¦   «         Z2 e1¦   «         Z3d6S )�ÚIbisLazyFrameF)Úvalidate_backend_versionÚdfúir.TableÚversionr   r3   ÚboolÚreturnÚNonec               ón   — || _         || _        d | _        d | _        |r|                      ¦   «          d S d S ©N)Ú_native_frameÚ_versionÚ_cached_schemaÚ_cached_columnsÚ_validate_backend_version)Úselfr4   r6   r3   s       úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_ibis/dataframe.pyÚ__init__zIbisLazyFrame.__init__7   sM   € ð (*ˆÔØˆŒØ7;ˆÔØ15ˆÔØ#ð 	-Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-ó    Úobjúir.Table | AnyúTypeIs[ir.Table]c                ó6   — t          | t          j        ¦  «        S r;   )Ú
isinstanceÚirÚTable)rE   s    rB   Ú
_is_nativezIbisLazyFrame._is_nativeA   s   € å˜#�rœxÑ(Ô(Ð(rD   ÚdataÚcontextr(   r   c              ó&   —  | ||j         ¬¦  «        S ©N©r6   )r=   )ÚclsrM   rN   s      rB   Úfrom_nativezIbisLazyFrame.from_nativeE   s   € àˆs�4 Ô!1Ð2Ñ2Ô2Ð2rD   ú+LazyFrame[ir.Table] | DataFrameV1[ir.Table]c                ó†   — | j         t          j        u rddlm}  || d¬¦  «        S | j                              | d¬¦  «        S )Nr   r+   Úinterchange)ÚlevelÚlazy)r=   r   ÚV1Únarwhals.stable.v1r,   Ú	lazyframe)rA   r,   s     rB   Úto_narwhalszIbisLazyFrame.to_narwhalsI   sS   € ØŒ=�GœJÐ&Ð&Ø4Ð4Ð4Ð4Ð4Ð4à�9˜T¨Ð7Ñ7Ô7Ð7ØŒ}×&Ò& t°6Ð&Ñ:Ô:Ð:rD   c                óN   — | j         t          j        urd}t          |¦  «        ‚| S )Nz;__narwhals_dataframe__ is not implemented for IbisLazyFrame)r=   r   rY   ÚAttributeError)rA   Úmsgs     rB   Ú__narwhals_dataframe__z$IbisLazyFrame.__narwhals_dataframe__P   s)   € àŒ=¥¤
Ð*Ð*ØOˆCÝ  Ñ%Ô%Ð%ØˆrD   c                ó   — | S r;   © ©rA   s    rB   Ú__narwhals_lazyframe__z$IbisLazyFrame.__narwhals_lazyframe__W   s   € ØˆrD   r   c                ó   — t           S r;   )Úibisrc   s    rB   Ú__native_namespace__z"IbisLazyFrame.__native_namespace__Z   s   € ÝˆrD   r$   c                ó0   — ddl m}  || j        ¬¦  «        S )Nr   r#   rQ   )Únarwhals._ibis.namespacer$   r=   )rA   r$   s     rB   Ú__narwhals_namespace__z$IbisLazyFrame.__narwhals_namespace__]   s)   € Ø:Ð:Ð:Ð:Ð:Ð:àˆ} T¤]Ð3Ñ3Ô3Ð3rD   ÚnameÚstrr&   c                ób   — ddl m}  || j                             |¦  «        | j        ¬¦  «        S )Nr   r%   rQ   )Únarwhals._ibis.seriesr&   ÚnativeÚselectr=   )rA   rk   r&   s      rB   Ú
get_columnzIbisLazyFrame.get_columnb   s<   € Ø?Ð?Ð?Ð?Ð?Ð?à$Ð$ T¤[×%7Ò%7¸Ñ%=Ô%=ÀtÄ}ÐUÑUÔUÐUrD   úIterator[ir.Expr]c              #  ó<   K  — | j         D ]}| j        |         V — Œd S r;   )Úcolumnsro   )rA   rk   s     rB   Ú_iter_columnszIbisLazyFrame._iter_columnsg   s7   è è € Ø”Lð 	$ð 	$ˆDØ”+˜dÔ#Ð#Ð#Ð#Ð#ð	$ð 	$rD   Úbackendú_EagerAllowedImpl | NoneÚkwargsr   r    c                óÖ  — |�|t           j        u r>ddlm}  |t	          | j                             ¦   «         ¦  «        d| j        d¬¦  «        S |t           j        u r<ddl	m
}  || j                             ¦   «         t           j        d| j        d¬¦  «        S |t           j        u r0ddlm}  || j                             ¦   «         d| j        ¬¦  «        S d	|› �}t!          |¦  «        ‚)
Nr   )ÚArrowDataFrameT)r3   r6   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr3   r6   r{   )ÚPolarsDataFrame)r3   r6   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframerz   r   ro   Ú
to_pyarrowr=   ÚPANDASÚnarwhals._pandas_like.dataframer|   Ú	to_pandasÚPOLARSÚnarwhals._polars.dataframer~   Ú	to_polarsÚ
ValueError)rA   rv   rx   rz   r|   r~   r_   s          rB   ÚcollectzIbisLazyFrame.collectk   s2  € ð ˆ?˜g­Ô)?Ð?Ð?Ø@Ð@Ð@Ð@Ð@Ð@à!�>Ý  ¤×!7Ò!7Ñ!9Ô!9Ñ:Ô:Ø)-ØœØ&*ð	ñ ô ð ð •nÔ+Ð+Ð+ØKÐKÐKÐKÐKÐKà&Ð&Ø”×%Ò%Ñ'Ô'Ý-Ô4Ø)-ØœØ&*ðñ ô ð ð •nÔ+Ð+Ð+ØBÐBÐBÐBÐBÐBà"�?Ø”×%Ò%Ñ'Ô'Ø)-Øœðñ ô ð ð 8¨gÐ7Ð7ˆÝ˜‰oŒoÐrD   ÚnÚintc                ó\   — |                       | j                             |¦  «        ¦  «        S r;   )Ú_with_nativero   Úhead)rA   rŠ   s     rB   rŽ   zIbisLazyFrame.head�   s&   € Ø× Ò  ¤×!1Ò!1°!Ñ!4Ô!4Ñ5Ô5Ð5rD   Úcolumn_namesc                óF   — |                        | j        j        |Ž ¦  «        S r;   )r�   ro   rp   )rA   r�   s     rB   Úsimple_selectzIbisLazyFrame.simple_select’   s#   € Ø× Ò Ð!3 ¤Ô!3°\Ð!BÑCÔCÐCrD   Úexprsr	   c                óŠ   — d„ t          | g|¢R Ž D ¦   «         }|                      | j                             |¦  «        ¦  «        S )Nc                óZ   — g | ](\  }}t          d |                     |¦  «        ¦  «        ‘Œ)S )z	ir.Scalar)r   rk   ©Ú.0rk   Úvals      rB   ú
<listcomp>z+IbisLazyFrame.aggregate.<locals>.<listcomp>–   s@   € ð 
ð 
ð 
á��cõ �˜cŸhšh t™nœnÑ-Ô-ð
ð 
ð 
rD   )r
   r�   ro   Ú	aggregate)rA   r’   Ú	selections      rB   r™   zIbisLazyFrame.aggregate•   sV   € ð
ð 
å+¨DÐ9°5Ð9Ð9Ð9ð
ñ 
ô 
ˆ	ð × Ò  ¤×!6Ò!6°yÑ!AÔ!AÑBÔBÐBrD   c                óž   — d„ t          | g|¢R Ž D ¦   «         }|sd}t          |¦  «        ‚ | j        j        |Ž }|                      |¦  «        S )Nc                ó>   — g | ]\  }}|                      |¦  «        ‘ŒS rb   )rk   r•   s      rB   r˜   z(IbisLazyFrame.select.<locals>.<listcomp>�   s&   € ÐRÐRÐR©	¨¨c�S—X’X˜d‘^”^ÐRÐRÐRrD   zKAt least one expression must be provided to `select` with the Ibis backend.)r
   rˆ   ro   rp   r�   )rA   r’   rš   r_   Úts        rB   rp   zIbisLazyFrame.selectœ   sc   € ØRÐRµ^ÀDÐ5QÈ5Ð5QÐ5QÐ5QÐRÑRÔRˆ	Øð 	"Ø_ˆCÝ˜S‘/”/Ð!àˆDŒKÔ 	Ð*ˆØ× Ò  Ñ#Ô#Ð#rD   rt   úSequence[str]Ústrictc               ó’   ‡— t          | ||¬¦  «        Šˆfd„| j        D ¦   «         }|                       | j        j        |Ž ¦  «        S )N©rŸ   c              3  ó$   •K  — | ]
}|‰v¯|V — Œd S r;   rb   )r–   ÚcolÚcolumns_to_drops     €rB   ú	<genexpr>z%IbisLazyFrame.drop.<locals>.<genexpr>§   s-   øè è € ÐOÐO˜S°C¸Ð4NÐ4N�SÐ4NÐ4NÐ4NÐ4NÐOÐOrD   )r   rt   r�   ro   rp   )rA   rt   rŸ   rš   r¤   s       @rB   ÚdropzIbisLazyFrame.drop¥   sS   ø€ Ý/°°gÀfÐMÑMÔMˆØOÐOÐOÐO D¤LÐOÑOÔOˆ	Ø× Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rD   NÚ_c                ó,   — |�d}t          |¦  «        ‚| S )Nz,`backend` argument is not supported for Ibis)rˆ   )rA   rv   r§   r_   s       rB   rX   zIbisLazyFrame.lazyª   s    € ð
 ÐØ@ˆCÝ˜S‘/”/Ð!ØˆrD   c                ó€   — t          t          | g|¢R Ž ¦  «        }|                       | j        j        di |¤Ž¦  «        S )Nrb   )Údictr
   r�   ro   Úmutate)rA   r’   Únew_columns_maps      rB   Úwith_columnszIbisLazyFrame.with_columns´   sI   € Ý�~¨dÐ;°UÐ;Ð;Ð;Ñ<Ô<ˆØ× Ò Ð!3 ¤Ô!3Ð!FÐ!F°oÐ!FÐ!FÑGÔGÐGrD   Ú	predicatec                óš   — t          d || ¦  «        d         ¦  «        }|                      | j                             |¦  «        ¦  «        S )Nzir.BooleanValuer   )r   r�   ro   Úfilter)rA   r®   Úmasks      rB   r°   zIbisLazyFrame.filter¸   sC   € åÐ% y y°¡¤°qÔ'9Ñ:Ô:ˆØ× Ò  ¤×!3Ò!3°DÑ!9Ô!9Ñ:Ô:Ð:rD   údict[str, DType]c                ó¢   ‡ — ‰ j         €Aˆ fd„‰ j                             ¦   «         j                             ¦   «         D ¦   «         ‰ _         ‰ j         S )Nc                óB   •— i | ]\  }}|t          |‰j        ¦  «        “ŒS rb   ©r   r=   ©r–   rk   ÚdtyperA   s      €rB   ú
<dictcomp>z(IbisLazyFrame.schema.<locals>.<dictcomp>Â   s<   ø€ ð #ð #ð #á�D˜%ð Õ.¨u°d´mÑDÔDð#ð #ð #rD   )r>   ro   ÚschemaÚfieldsÚitemsrc   s   `rB   r¹   zIbisLazyFrame.schema½   s_   ø€ àÔÐ&ð#ð #ð #ð #à#'¤;×#5Ò#5Ñ#7Ô#7Ô#>×#DÒ#DÑ#FÔ#Fð#ñ #ô #ˆDÔð Ô"Ð"rD   ú	list[str]c                ó�   — | j         €9| j        �t          | j        ¦  «        nt          | j        j        ¦  «        | _         | j         S r;   )r?   r>   Úlistr¹   ro   rt   rc   s    rB   rt   zIbisLazyFrame.columnsÈ   sK   € àÔÐ'ð Ô&Ð2õ �T”[Ñ!Ô!Ð!å˜$œ+Ô-Ñ.Ô.ð Ô ð
 Ô#Ð#rD   úpd.DataFramec                ó4   — | j                              ¦   «         S r;   )ro   r„   rc   s    rB   r„   zIbisLazyFrame.to_pandasÒ   s   € àŒ{×$Ò$Ñ&Ô&Ð&rD   úpa.Tablec                ó4   — | j                              ¦   «         S r;   )ro   r�   rc   s    rB   Úto_arrowzIbisLazyFrame.to_arrowÖ   s   € àŒ{×%Ò%Ñ'Ô'Ð'rD   c                ó:   — |                       | j        |¬¦  «        S rP   )Ú	__class__ro   )rA   r6   s     rB   Ú_with_versionzIbisLazyFrame._with_versionÚ   s   € Ø�~Š~˜dœk°7ˆ~Ñ;Ô;Ð;rD   c                ó:   — |                       || j        ¬¦  «        S rP   )rÅ   r=   )rA   r4   s     rB   r�   zIbisLazyFrame._with_nativeÝ   s   € Ø�~Š~˜b¨$¬-ˆ~Ñ8Ô8Ð8rD   Úkeysú"Sequence[str] | Sequence[IbisExpr]Údrop_null_keysr"   c               ó*   — ddl m}  || ||¬¦  «        S )Nr   r!   )rÊ   )Únarwhals._ibis.group_byr"   )rA   rÈ   rÊ   r"   s       rB   Úgroup_byzIbisLazyFrame.group_byà   s-   € ð 	8Ð7Ð7Ð7Ð7Ð7àˆ{˜4 °nÐEÑEÔEÐErD   ÚmappingúMapping[str, str]c                ój   ‡— dˆfd„}|                       | j                             |¦  «        ¦  «        S )Nr£   rl   r8   c                ó0   •— ‰                      | | ¦  «        S r;   )Úget)r£   rÎ   s    €rB   Ú_renamez%IbisLazyFrame.rename.<locals>._renameè   s   ø€ Ø—;’;˜s CÑ(Ô(Ð(rD   )r£   rl   r8   rl   )r�   ro   Úrename)rA   rÎ   rÓ   s    ` rB   rÔ   zIbisLazyFrame.renameç   sG   ø€ ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð × Ò  ¤×!3Ò!3°GÑ!<Ô!<Ñ=Ô=Ð=rD   úIterable[str]c               ól   — t          | j        ¦  «                             |¦  «        }|r
 | j        |Ž n| S )zWIbis adds a suffix to the right table col, even when it matches the left during a join.)Úsetrt   Úintersectionr¦   )r4   rt   Ú
duplicatess      rB   Ú_join_drop_duplicate_columnsz*IbisLazyFrame._join_drop_duplicate_columnsí   s8   € õ ˜œ‘_”_×1Ò1°'Ñ:Ô:ˆ
Ø'1Ð9ˆwˆrŒw˜
Ð#Ð#°rÐ9rD   ÚotherÚhowr.   Úleft_onúSequence[str] | NoneÚright_onÚsuffixc               ó´  ‡— |dk    rdn|}d‰z   }|| k    r,|                       |j                             ¦   «         ¦  «        }|dk    r7| j                             |j        ||¬¦  «        }|                       |¦  «        S |€J ‚|€J ‚|                      |||¦  «        }	| j                             |j        |	||¬¦  «        }|dk    r}ˆfd„|D ¦   «         }
|                      ||
¦  «        }d„ |	D ¦   «         }g }|D ]<}|j        j        }|| j        vr%|j	        j        |k    r| 
                    |¦  «         Œ=|r
 |j        |Ž }|                       |¦  «        S )	NÚfullÚouterú{name}Úcross)rÜ   ÚrnameÚleftc              3  ó"   •K  — | ]	}|‰z   V — Œ
d S r;   rb   ©r–   rŠ   rà   s     €rB   r¥   z%IbisLazyFrame.join.<locals>.<genexpr>
  ó'   øè è € Ð8Ð8¨!˜1˜v™:Ð8Ð8Ð8Ð8Ð8Ð8rD   c              3  ó„   K  — | ];}t          |t          ¦  «        °t          d |                     ¦   «         ¦  «        V — Œ<dS )r   N)rI   rl   r   Úop)r–   Úps     rB   r¥   z%IbisLazyFrame.join.<locals>.<genexpr>  sD   è è € ÐWÐW¨QÅJÈqÕRUÑDVÔDVÐW•$�x §¢¡¤Ñ(Ô(ÐWÐWÐWÐWÐWÐWrD   )r�   ro   ÚviewÚjoinÚ_convert_predicatesrÚ   Úrightrk   rt   rç   Úappendr¦   )rA   rÛ   rÜ   rÝ   rß   rà   Ú
how_nativeræ   ÚjoinedÚ
predicatesÚright_namesÚitÚto_dropÚpredrñ   s        `         rB   rï   zIbisLazyFrame.joinó   s˜  ø€ ð !$ v¢ �W�W°3ˆ
Ø˜6Ñ!ˆØ�DŠ=ˆ=à×%Ò% e¤l×&7Ò&7Ñ&9Ô&9Ñ:Ô:ˆEØ˜Ò Ð Ø”[×%Ò% e¤l¸
È%Ð%ÑPÔPˆFØ×$Ò$ VÑ,Ô,Ð,àÐ"Ð"Ð"ØÐ#Ð#Ð#Ø×-Ò-¨e°W¸hÑGÔGˆ
Ø”×!Ò! %¤,°
À
ÐRWÐ!ÑXÔXˆØ˜ÒÐØ8Ð8Ð8Ð8¨xÐ8Ñ8Ô8ˆKØ×6Ò6°v¸{ÑKÔKˆFØWÐW°*ÐWÑWÔWˆBØˆGØð *ð *�Øœ
œ�à ¤Ð,Ð,°´´À5Ò1HÐ1HØ—N’N 5Ñ)Ô)Ð)øØð /Ø$˜œ gÐ.�Ø× Ò  Ñ(Ô(Ð(rD   Úby_leftÚby_rightÚstrategyr-   c               ó   ‡— d‰z   }t           j        t           j        dœ}	g }
|	                     |¦  «        x}r# || j        |         |j        |         ¦  «        }nd}t          |¦  «        ‚|�|�|                      |||¦  «        }
| j                             |j        ||
|¬¦  «        }|                      ||‰z   g¦  «        }|�$ˆfd„|D ¦   «         }|                      ||¦  «        }|  	                    |¦  «        S )Nrä   )ÚbackwardÚforwardzIOnly `backward` and `forward` strategies are currently supported for Ibis)ræ   c              3  ó"   •K  — | ]	}|‰z   V — Œ
d S r;   rb   ré   s     €rB   r¥   z*IbisLazyFrame.join_asof.<locals>.<genexpr>/  rê   rD   )
ÚoperatorÚgeÚlerÒ   ro   ÚNotImplementedErrorrð   Ú	asof_joinrÚ   r�   )rA   rÛ   rÝ   rß   rú   rû   rü   rà   ræ   Ústrategy_oprõ   rì   Úonr_   rô   rö   s          `        rB   Ú	join_asofzIbisLazyFrame.join_asof  s  ø€ ð ˜6Ñ!ˆÝ#+¤;½8¼;ÐGÐGˆØ%'ˆ
Ø—’ Ñ*Ô*Ð*ˆ2ð 	+Ø#% 2 d¤k°'Ô&:¸E¼LÈÔ<RÑ#SÔ#SˆBˆBà]ˆCÝ% cÑ*Ô*Ð*ØÐ 8Ð#7Ø×1Ò1°%¸À(ÑKÔKˆJØ”×&Ò& u¤|°R¸È5Ð&ÑQÔQˆØ×2Ò2°6¸HÀvÑ<MÐ;NÑOÔOˆØÐØ8Ð8Ð8Ð8¨xÐ8Ñ8Ô8ˆKØ×6Ò6°v¸{ÑKÔKˆFØ× Ò  Ñ(Ô(Ð(rD   r0   c                óT   ‡ ‡— ||k    r|S ˆˆ fd„t          ||d¬¦  «        D ¦   «         S )Nc                ój   •— g | ]/\  }}t          d ‰j        |         ‰j        |         k    ¦  «        ‘Œ0S )zir.BooleanColumn)r   ro   )r–   rç   rñ   rÛ   rA   s      €€rB   r˜   z5IbisLazyFrame._convert_predicates.<locals>.<listcomp>8  sK   ø€ ð 
ð 
ð 
á��eõ Ð# d¤k°$Ô&7¸5¼<ÈÔ;NÒ&NÑPÔPð
ð 
ð 
rD   Tr¡   )Úzip)rA   rÛ   rÝ   rß   s   ``  rB   rð   z!IbisLazyFrame._convert_predicates3  sU   øø€ ð �hÒÐØˆNð
ð 
ð 
ð 
ð 
å" 7¨H¸TÐBÑBÔBð
ñ 
ô 
ð 	
rD   c                ó|   ‡ — ˆ fd„‰ j                              ¦   «         j                             ¦   «         D ¦   «         S )Nc                óB   •— i | ]\  }}|t          |‰j        ¦  «        “ŒS rb   rµ   r¶   s      €rB   r¸   z0IbisLazyFrame.collect_schema.<locals>.<dictcomp>>  s<   ø€ ð 
ð 
ð 
á��eð Õ*¨5°$´-Ñ@Ô@ð
ð 
ð 
rD   )ro   r¹   rº   r»   rc   s   `rB   Úcollect_schemazIbisLazyFrame.collect_schema=  sK   ø€ ð
ð 
ð 
ð 
à#œ{×1Ò1Ñ3Ô3Ô:×@Ò@ÑBÔBð
ñ 
ô 
ð 	
rD   ÚsubsetÚkeepr/   Úorder_byc               óÐ  — |p| 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         	                    ¦   «          
                    |¦  «        }	n6t          j        ¦   «          
                    |¦  «        t          d¦  «        z   }	 | j        j        di ||	i¤Ž                     t          j        |         t          d¦  «        k    ¦  «                             |¦  «        }
|                      |
¦  «        S )Né   Ú
row_index_)ÚprefixÚlastT©Ú
descendingÚ
nulls_lastFé   )rÍ   r  Únonerb   )rt   Ú_check_columns_existr   r	   Ú_sortr   rf   Úwindowro   ÚcountÚoverÚ
row_numberr«   r°   r§   r¦   r�   )rA   r  r  r  Úsubset_ÚerrorÚtmp_nameÚ	order_by_r  Úexprr4   s              rB   ÚuniquezIbisLazyFrame.uniqueC  sa  € ð Ð(˜DœLˆØ×-Ò-¨gÑ6Ô6Ð6ˆ5ð 	ØˆKÝ1°!°T´\È,ÐWÑWÔWˆØð 	˜ š˜Ý œ¨¸TÈdÐSÐSÐSˆIˆIØð 	Ý œ¨¸UÈuÐUÐUÐUˆIˆIå˜A™œˆIÝ” g¸	ÐBÑBÔBˆØ�6Š>ˆ>Ø”;×$Ò$Ñ&Ô&×+Ò+¨FÑ3Ô3ˆDˆDå”?Ñ$Ô$×)Ò)¨&Ñ1Ô1µC¸±F´FÑ:ˆDàˆDŒKÔÐ2Ð2 (¨DÐ!1Ð2Ð2ßŠV•D”F˜8Ô$­¨A©¬Ò.Ñ/Ô/ßŠT�(‰^Œ^ð 	ð
 × Ò  Ñ$Ô$Ð$rD   Úbyr  úbool | Sequence[bool]r  c               ón   — ddl m}  |j        |||dœŽ}|                       | j        j        |Ž ¦  «        S )Nr   r   r  )Únarwhals._ibis.exprr	   r  r�   ro   r  )rA   r  r  r(  r	   Úcolss         rB   ÚsortzIbisLazyFrame.sort`  sM   € Ø0Ð0Ð0Ð0Ð0Ð0àˆxŒ~˜r¨jÀZÐPÐPÐPˆØ× Ò Ð!5 ¤Ô!5°tÐ!<Ñ=Ô=Ð=rD   ÚkÚreversec               óÜ   — ddl m} t          |t          ¦  «        r| nd„ |D ¦   «         } |j        ||ddœŽ}|                       | j        j        |Ž                      |¦  «        ¦  «        S )Nr   r   c                ó   — g | ]}| ‘ŒS rb   rb   )r–   Úels     rB   r˜   z'IbisLazyFrame.top_k.<locals>.<listcomp>i  s   € Ð=WÐ=WÐ=WÈÀ"¸fÐ=WÐ=WÐ=WrD   Tr  )	r+  r	   rI   r7   r  r�   ro   r  rŽ   )rA   r.  r(  r/  r	   Údescr,  s          rB   Útop_kzIbisLazyFrame.top_kf  s„   € Ø0Ð0Ð0Ð0Ð0Ð0å(¨µ$Ñ7Ô7ÐW�7ˆ{ˆ{Ð=WÐ=WÈwÐ=WÑ=WÔ=WˆØˆxŒ~˜r¨d¸tÐDÐDÐDˆØ× Ò Ð!5 ¤Ô!5°tÐ!<×!AÒ!AÀ!Ñ!DÔ!DÑEÔEÐErD   c                ór   — |�|n| j         }|                      | j                             |¦  «        ¦  «        S r;   )rt   r�   ro   Ú	drop_null)rA   r  r"  s      rB   Ú
drop_nullszIbisLazyFrame.drop_nullsm  s6   € Ø"Ð.�&�&°D´LˆØ× Ò  ¤×!6Ò!6°wÑ!?Ô!?Ñ@Ô@Ð@rD   c                óN  — | j         j        }|                      ¦   «         }|D ]*}||         }||j        k    rd|› d�}t	          |¦  «        ‚Œ+t          |¦  «        dk    rd}t          |¦  «        ‚|                      | 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)
r=   Údtypesr  ÚListr   Úlenr  r�   ro   Úunnest)rA   rt   r:  r¹   r£   r·   r_   s          rB   ÚexplodezIbisLazyFrame.explodeq  sÍ   € Ø”Ô%ˆØ×$Ò$Ñ&Ô&ˆØð 	1ð 	1ˆCØ˜3”KˆEà˜œÒ#Ð#ð)ÀEð )ð )ð )ð õ ,¨CÑ0Ô0Ð0ð $õ ˆw‰<Œ<˜1ÒÐð^ð õ & cÑ*Ô*Ð*à× Ò  ¤×!3Ò!3°G¸A´JÈ4Ð!3Ñ!PÔ!PÑQÔQÐQrD   r  ÚindexÚvariable_nameÚ
value_namec                ó(  ‡	— dd l m} |€g n|Š	|€ˆ	fd„| j        D ¦   «         n|}t          t                               g ‰	¢|‘|‘¦  «        ¦  «        }| j                              |j        |Ž ||¬¦  «        }|  	                     |j
        |Ž ¦  «        S )Nr   c                ó   •— g | ]}|‰v¯|‘Œ	S rb   rb   )r–   ÚcÚindex_s     €rB   r˜   z)IbisLazyFrame.unpivot.<locals>.<listcomp>’  s   ø€ Ð8Ð8Ð8�1¨°¨¨ˆQ¨¨¨rD   )Únames_toÚ	values_to)Úibis.selectorsÚ	selectorsrt   r¾   rª   Úfromkeysro   Úpivot_longerr,  r�   rp   )
rA   r  r?  r@  rA  ÚsÚon_Úfinal_columnsÚ	unpivotedrE  s
            @rB   ÚunpivotzIbisLazyFrame.unpivot‡  sÃ   ø€ ð 	#Ð"Ð"Ð"Ð"Ð"à&+ m  ¸ˆà<>¸JÐ8Ð8Ð8Ð8˜œÐ8Ñ8Ô8Ð8ÈBð 	õ
 �TŸ]š]Ð+O¨VÐ+O°]Ð+OÀJÐ+OÑPÔPÑQÔQˆà”K×,Ò,ØˆAŒF�CˆL =¸Jð -ñ 
ô 
ˆ	ð × Ò Ð!1 Ô!1°=Ð!AÑBÔBÐBrD   c                ó  — t          j        ¦   «                              t          j        |¬¦  «        ¦  «                             |¦  «        t           j                             ¦   «         g}|                       | j        j	        |Ž ¦  «        S )N)r  )
rf   r!  r   r  rk   rI  Úallr�   ro   rp   )rA   rk   r  Ú	to_selects       rB   Úwith_row_indexzIbisLazyFrame.with_row_index�  sq   € åŒOÑÔ×"Ò"¥4¤;¸Ð#AÑ#AÔ#AÑBÔB×GÒGÈÑMÔMÝŒN×ÒÑ Ô ð
ˆ	ð × Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rD   Úfileústr | Path | BytesIOc                ó†   — t          |t          ¦  «        rd}t          |¦  «        ‚| j                             |¦  «         d S )Nz5Writing to BytesIO is not supported for Ibis backend.)rI   r   r  ro   Ú
to_parquet)rA   rU  r_   s      rB   Úsink_parquetzIbisLazyFrame.sink_parquet¤  sC   € Ý�d�GÑ$Ô$ð 	+ØIˆCÝ% cÑ*Ô*Ð*ØŒ×Ò˜tÑ$Ô$Ð$Ð$Ð$rD   )r4   r5   r6   r   r3   r7   r8   r9   )rE   rF   r8   rG   )rM   r5   rN   r(   r8   r   )r8   rT   )r8   r   )r8   r   )r8   r$   )rk   rl   r8   r&   )r8   rr   )rv   rw   rx   r   r8   r    )rŠ   r‹   r8   r   )r�   rl   r8   r   )r’   r	   r8   r   )rt   rž   rŸ   r7   r8   r   r;   )rv   r9   r§   r9   r8   r   )r®   r	   r8   r   )r8   r²   )r8   r¼   )r8   r¿   )r8   rÁ   )r6   r   r8   r   )r4   r5   r8   r   )rÈ   rÉ   rÊ   r7   r8   r"   )rÎ   rÏ   r8   r   )r4   r5   rt   rÕ   r8   r5   )rÛ   r   rÜ   r.   rÝ   rÞ   rß   rÞ   rà   rl   r8   r   )rÛ   r   rÝ   rl   rß   rl   rú   rÞ   rû   rÞ   rü   r-   rà   rl   r8   r   )rÛ   r   rÝ   rž   rß   rž   r8   r0   )r  rÞ   r  r/   r  rÞ   r8   r   )r(  rl   r  r)  r  r7   r8   r   )r.  r‹   r(  rÕ   r/  r)  r8   r   )r  rÞ   r8   r   )rt   rž   r8   r   )
r  rÞ   r?  rÞ   r@  rl   rA  rl   r8   r   )rk   rl   r  rž   r8   r   )rU  rV  r8   r9   )4Ú__name__Ú
__module__Ú__qualname__r   ÚIBISÚ_implementationrC   ÚstaticmethodrL   ÚclassmethodrS   r\   r`   rd   rg   rj   rq   ru   r‰   rŽ   r‘   r™   rp   r¦   rX   r­   r°   Úpropertyr¹   rt   r„   rÃ   rÆ   r�   rÍ   rÔ   rÚ   rï   r  rð   r  r'  r-  r4  r7  r>  rP  rT  rY  r   Ú_evaluate_window_exprÚ_filterrb   rD   rB   r2   r2   1   sÕ  € € € € € ð %Ô)€Oð SXð-ð -ð -ð -ð -ð -ð ð)ð )ð )ñ „\ð)ð ð3ð 3ð 3ñ „[ð3ð;ð ;ð ;ð ;ðð ð ð ðð ð ð ðð ð ð ð4ð 4ð 4ð 4ð
Vð Vð Vð Vð
$ð $ð $ð $ð"ð "ð "ð "ðH6ð 6ð 6ð 6ðDð Dð Dð DðCð Cð Cð Cð$ð $ð $ð $ðAð Að Að Að
ð ð ð ð ðHð Hð Hð Hð;ð ;ð ;ð ;ð
 ð#ð #ð #ñ „Xð#ð ð$ð $ð $ñ „Xð$ð'ð 'ð 'ð 'ð(ð (ð (ð (ð<ð <ð <ð <ð9ð 9ð 9ð 9ðFð Fð Fð Fð>ð >ð >ð >ð ð:ð :ð :ñ „\ð:ð
")ð ")ð ")ð ")ðH)ð )ð )ð )ð8
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð%ð %ð %ð %ð:>ð >ð >ð >ðFð Fð Fð FðAð Að Að AðRð Rð Rð Rð,Cð Cð Cð Cð,Að Að Að Að%ð %ð %ð %ð ,˜OÑ-Ô-ÐØˆoÑÔ€G€G€GrD   r2   )r	   r5   rT   )KÚ
__future__r   r  Úior   Útypingr   r   r   rf   Úibis.expr.typesr&  ÚtypesrJ   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"   ri   r$   rn   r&   Únarwhals._typingr'   r(   Únarwhals.dataframer)   Únarwhals.dtypesr*   rZ   r,   ÚDataFrameV1Únarwhals.typingr-   r.   r/   r0   Ú__annotations__r2   rb   rD   rB   ú<module>r|     så  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5àð MØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEØÐÐÐÐÐØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àÐÐÐØÐÐÐØ+Ð+Ð+Ð+Ð+Ð+Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à@Ð@Ð@Ð@Ð@Ð@Ø3Ð3Ð3Ð3Ð3Ð3Ø6Ð6Ð6Ð6Ð6Ð6Ø;Ð;Ð;Ð;Ð;Ð;Ø2Ð2Ð2Ð2Ð2Ð2Ø/Ð/Ð/Ð/Ð/Ð/Ø,Ð,Ð,Ð,Ð,Ð,Ø%Ð%Ð%Ð%Ð%Ð%Ø;Ð;Ð;Ð;Ð;Ð;ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRà L€NÐLÐLÐLÑLð{ ð { ð { ð { ð { ØÐVÔWØñ{ ô { ð { ð { ð { rD   