§
    Šhþhó@  ã                  óÒ  — 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¦  «        ZKd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Ú
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œdzd„Zed{d„¦   «         Ze	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…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 e1j2        dx¦  «        Z3 e1j2        dy¦  «        Z4 e1¦   «         Z5d6S )ŸÚIbisLazyFrameF)Úvalidate_backend_versionÚdfúir.TableÚversionr   r4   ÚboolÚreturnÚNonec               ón   — || _         || _        d | _        d | _        |r|                      ¦   «          d S d S ©N)Ú_native_frameÚ_versionÚ_cached_schemaÚ_cached_columnsÚ_validate_backend_version)Úselfr5   r7   r4   s       úO/var/www/histauto/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)rF   s    rC   Ú
_is_nativezIbisLazyFrame._is_nativeA   s   € å˜#�rœxÑ(Ô(Ð(rE   ÚdataÚcontextr)   r   c              ó&   —  | ||j         ¬¦  «        S ©N©r7   )r>   )ÚclsrN   rO   s      rC   Úfrom_nativezIbisLazyFrame.from_nativeE   s   € àˆs�4 Ô!1Ð2Ñ2Ô2Ð2rE   ú+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)rB   r-   s     rC   Úto_narwhalszIbisLazyFrame.to_narwhalsI   sS   € ØŒ=�GœJÐ&Ð&Ø4Ð4Ð4Ð4Ð4Ð4à�9˜T¨Ð7Ñ7Ô7Ð7ØŒ}×&Ò& t°6Ð&Ñ:Ô:Ð:rE   c                óN   — | j         t          j        urd}t          |¦  «        ‚| S )Nz;__narwhals_dataframe__ is not implemented for IbisLazyFrame)r>   r   rZ   ÚAttributeError)rB   Úmsgs     rC   Ú__narwhals_dataframe__z$IbisLazyFrame.__narwhals_dataframe__P   s)   € àŒ=¥¤
Ð*Ð*ØOˆCÝ  Ñ%Ô%Ð%ØˆrE   c                ó   — | S r<   © ©rB   s    rC   Ú__narwhals_lazyframe__z$IbisLazyFrame.__narwhals_lazyframe__W   s   € ØˆrE   r   c                ó   — t           S r<   )Úibisrd   s    rC   Ú__native_namespace__z"IbisLazyFrame.__native_namespace__Z   s   € ÝˆrE   r%   c                ó0   — ddl m}  || j        ¬¦  «        S )Nr   r$   rR   )Únarwhals._ibis.namespacer%   r>   )rB   r%   s     rC   Ú__narwhals_namespace__z$IbisLazyFrame.__narwhals_namespace__]   s)   € Ø:Ð:Ð:Ð:Ð:Ð:àˆ} T¤]Ð3Ñ3Ô3Ð3rE   ÚnameÚstrr'   c                ób   — ddl m}  || j                             |¦  «        | j        ¬¦  «        S )Nr   r&   rR   )Únarwhals._ibis.seriesr'   ÚnativeÚselectr>   )rB   rl   r'   s      rC   Ú
get_columnzIbisLazyFrame.get_columnb   s<   € Ø?Ð?Ð?Ð?Ð?Ð?à$Ð$ T¤[×%7Ò%7¸Ñ%=Ô%=ÀtÄ}ÐUÑUÔUÐUrE   úIterator[ir.Expr]c              #  ó<   K  — | j         D ]}| j        |         V — Œd S r<   )Úcolumnsrp   )rB   rl   s     rC   Ú_iter_columnszIbisLazyFrame._iter_columnsg   s7   è è € Ø”Lð 	$ð 	$ˆDØ”+˜dÔ#Ð#Ð#Ð#Ð#ð	$ð 	$rE   Ú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)r4   r7   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr4   r7   r|   )ÚPolarsDataFrame)r4   r7   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframer{   r   rp   Ú
to_pyarrowr>   ÚPANDASÚnarwhals._pandas_like.dataframer}   Ú	to_pandasÚPOLARSÚnarwhals._polars.dataframer   Ú	to_polarsÚ
ValueError)rB   rw   ry   r{   r}   r   r`   s          rC   Ú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ÐrE   ÚnÚintc                ó\   — |                       | j                             |¦  «        ¦  «        S r<   )Ú_with_nativerp   Úhead)rB   r‹   s     rC   r�   zIbisLazyFrame.head�   s&   € Ø× Ò  ¤×!1Ò!1°!Ñ!4Ô!4Ñ5Ô5Ð5rE   Úcolumn_namesc                óF   — |                        | j        j        |Ž ¦  «        S r<   )rŽ   rp   rq   )rB   r�   s     rC   Úsimple_selectzIbisLazyFrame.simple_select’   s#   € Ø× Ò Ð!3 ¤Ô!3°\Ð!BÑCÔCÐCrE   Úexprsr	   c                óŠ   — d„ t          | g|¢R Ž D ¦   «         }|                      | j                             |¦  «        ¦  «        S )Nc                óZ   — g | ](\  }}t          d |                     |¦  «        ¦  «        ‘Œ)S )z	ir.Scalar)r   rl   ©Ú.0rl   Úvals      rC   ú
<listcomp>z+IbisLazyFrame.aggregate.<locals>.<listcomp>–   s@   € ð 
ð 
ð 
á��cõ �˜cŸhšh t™nœnÑ-Ô-ð
ð 
ð 
rE   )r
   rŽ   rp   Ú	aggregate)rB   r“   Ú	selections      rC   rš   zIbisLazyFrame.aggregate•   sV   € ð
ð 
å+¨DÐ9°5Ð9Ð9Ð9ð
ñ 
ô 
ˆ	ð × Ò  ¤×!6Ò!6°yÑ!AÔ!AÑBÔBÐBrE   c                óž   — d„ t          | g|¢R Ž D ¦   «         }|sd}t          |¦  «        ‚ | j        j        |Ž }|                      |¦  «        S )Nc                ó>   — g | ]\  }}|                      |¦  «        ‘ŒS rc   )rl   r–   s      rC   r™   z(IbisLazyFrame.select.<locals>.<listcomp>�   s&   € ÐRÐRÐR©	¨¨c�S—X’X˜d‘^”^ÐRÐRÐRrE   zKAt least one expression must be provided to `select` with the Ibis backend.)r
   r‰   rp   rq   rŽ   )rB   r“   r›   r`   Úts        rC   rq   zIbisLazyFrame.selectœ   sc   € ØRÐRµ^ÀDÐ5QÈ5Ð5QÐ5QÐ5QÐRÑRÔRˆ	Øð 	"Ø_ˆCÝ˜S‘/”/Ð!àˆDŒKÔ 	Ð*ˆØ× Ò  Ñ#Ô#Ð#rE   ru   úSequence[str]Ústrictc               ó’   ‡— t          | ||¬¦  «        Šˆfd„| j        D ¦   «         }|                       | j        j        |Ž ¦  «        S )N)r    c              3  ó$   •K  — | ]
}|‰v¯|V — Œd S r<   rc   )r—   ÚcolÚcolumns_to_drops     €rC   ú	<genexpr>z%IbisLazyFrame.drop.<locals>.<genexpr>§   s-   øè è € ÐOÐO˜S°C¸Ð4NÐ4N�SÐ4NÐ4NÐ4NÐ4NÐOÐOrE   )r   ru   rŽ   rp   rq   )rB   ru   r    r›   r¤   s       @rC   ÚdropzIbisLazyFrame.drop¥   sS   ø€ Ý/°°gÀfÐMÑMÔMˆØOÐOÐOÐO D¤LÐOÑOÔOˆ	Ø× Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rE   NÚ_c                ó,   — |�d}t          |¦  «        ‚| S )Nz,`backend` argument is not supported for Ibis)r‰   )rB   rw   r§   r`   s       rC   rY   zIbisLazyFrame.lazyª   s    € ð
 ÐØ@ˆCÝ˜S‘/”/Ð!ØˆrE   c                ó€   — t          t          | g|¢R Ž ¦  «        }|                       | j        j        di |¤Ž¦  «        S )Nrc   )Údictr
   rŽ   rp   Úmutate)rB   r“   Únew_columns_maps      rC   Úwith_columnszIbisLazyFrame.with_columns´   sI   € Ý�~¨dÐ;°UÐ;Ð;Ð;Ñ<Ô<ˆØ× Ò Ð!3 ¤Ô!3Ð!FÐ!F°oÐ!FÐ!FÑGÔGÐGrE   Ú	predicatec                óš   — t          d || ¦  «        d         ¦  «        }|                      | j                             |¦  «        ¦  «        S )Nzir.BooleanValuer   )r   rŽ   rp   Úfilter)rB   r®   Úmasks      rC   r°   zIbisLazyFrame.filter¸   sC   € åÐ% y y°¡¤°qÔ'9Ñ:Ô:ˆØ× Ò  ¤×!3Ò!3°DÑ!9Ô!9Ñ:Ô:Ð:rE   údict[str, DType]c                ó¢   ‡ — ‰ j         €Aˆ fd„‰ j                             ¦   «         j                             ¦   «         D ¦   «         ‰ _         ‰ j         S )Nc                óB   •— i | ]\  }}|t          |‰j        ¦  «        “ŒS rc   ©r   r>   ©r—   rl   ÚdtyperB   s      €rC   ú
<dictcomp>z(IbisLazyFrame.schema.<locals>.<dictcomp>Â   s<   ø€ ð #ð #ð #á�D˜%ð Õ.¨u°d´mÑDÔDð#ð #ð #rE   )r?   rp   ÚschemaÚfieldsÚitemsrd   s   `rC   r¹   zIbisLazyFrame.schema½   s_   ø€ àÔÐ&ð#ð #ð #ð #à#'¤;×#5Ò#5Ñ#7Ô#7Ô#>×#DÒ#DÑ#FÔ#Fð#ñ #ô #ˆDÔð Ô"Ð"rE   ú	list[str]c                ó�   — | j         €9| j        �t          | j        ¦  «        nt          | j        j        ¦  «        | _         | j         S r<   )r@   r?   Úlistr¹   rp   ru   rd   s    rC   ru   zIbisLazyFrame.columnsÈ   sK   € àÔÐ'ð Ô&Ð2õ �T”[Ñ!Ô!Ð!å˜$œ+Ô-Ñ.Ô.ð Ô ð
 Ô#Ð#rE   úpd.DataFramec                ó4   — | j                              ¦   «         S r<   )rp   r…   rd   s    rC   r…   zIbisLazyFrame.to_pandasÒ   s   € àŒ{×$Ò$Ñ&Ô&Ð&rE   úpa.Tablec                ó4   — | j                              ¦   «         S r<   )rp   r‚   rd   s    rC   Úto_arrowzIbisLazyFrame.to_arrowÖ   s   € àŒ{×%Ò%Ñ'Ô'Ð'rE   c                ó:   — |                       | j        |¬¦  «        S rQ   )Ú	__class__rp   )rB   r7   s     rC   Ú_with_versionzIbisLazyFrame._with_versionÚ   s   € Ø�~Š~˜dœk°7ˆ~Ñ;Ô;Ð;rE   c                ó:   — |                       || j        ¬¦  «        S rQ   )rÅ   r>   )rB   r5   s     rC   rŽ   zIbisLazyFrame._with_nativeÝ   s   € Ø�~Š~˜b¨$¬-ˆ~Ñ8Ô8Ð8rE   Úkeysú"Sequence[str] | Sequence[IbisExpr]Údrop_null_keysr#   c               ó*   — ddl m}  || ||¬¦  «        S )Nr   r"   )rÊ   )Únarwhals._ibis.group_byr#   )rB   rÈ   rÊ   r#   s       rC   Úgroup_byzIbisLazyFrame.group_byà   s-   € ð 	8Ð7Ð7Ð7Ð7Ð7àˆ{˜4 °nÐEÑEÔEÐErE   ÚmappingúMapping[str, str]c                ój   ‡— dˆfd„}|                       | j                             |¦  «        ¦  «        S )Nr£   rm   r9   c                ó0   •— ‰                      | | ¦  «        S r<   )Úget)r£   rÎ   s    €rC   Ú_renamez%IbisLazyFrame.rename.<locals>._renameè   s   ø€ Ø—;’;˜s CÑ(Ô(Ð(rE   )r£   rm   r9   rm   )rŽ   rp   Úrename)rB   rÎ   rÓ   s    ` rC   rÔ   zIbisLazyFrame.renameç   sG   ø€ ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð × Ò  ¤×!3Ò!3°GÑ!<Ô!<Ñ=Ô=Ð=rE   ú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.)Úsetru   Úintersectionr¦   )r5   ru   Ú
duplicatess      rC   Ú_join_drop_duplicate_columnsz*IbisLazyFrame._join_drop_duplicate_columnsí   s8   € õ ˜œ‘_”_×1Ò1°'Ñ:Ô:ˆ
Ø'1Ð9ˆwˆrŒw˜
Ð#Ð#°rÐ9rE   Ú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<   rc   ©r—   r‹   rà   s     €rC   r¥   z%IbisLazyFrame.join.<locals>.<genexpr>
  ó'   øè è € Ð8Ð8¨!˜1˜v™:Ð8Ð8Ð8Ð8Ð8Ð8rE   c              3  ó„   K  — | ];}t          |t          ¦  «        °t          d |                     ¦   «         ¦  «        V — Œ<dS )r   N)rJ   rm   r   Úop)r—   Úps     rC   r¥   z%IbisLazyFrame.join.<locals>.<genexpr>  sD   è è € ÐWÐW¨QÅJÈqÕRUÑDVÔDVÐW•$�x §¢¡¤Ñ(Ô(ÐWÐWÐWÐWÐWÐWrE   )rŽ   rp   ÚviewÚjoinÚ_convert_predicatesrÚ   Úrightrl   ru   rç   Úappendr¦   )rB   rÛ   rÜ   rÝ   rß   rà   Ú
how_nativeræ   ÚjoinedÚ
predicatesÚright_namesÚitÚto_dropÚpredrñ   s        `         rC   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Ð.�Ø× Ò  Ñ(Ô(Ð(rE   Ú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<   rc   ré   s     €rC   r¥   z*IbisLazyFrame.join_asof.<locals>.<genexpr>/  rê   rE   )
ÚoperatorÚgeÚlerÒ   rp   ÚNotImplementedErrorrð   Ú	asof_joinrÚ   rŽ   )rB   rÛ   rÝ   rß   rú   rû   rü   rà   ræ   Ústrategy_oprõ   rì   Úonr`   rô   rö   s          `        rC   Ú	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Ø× Ò  Ñ(Ô(Ð(rE   r1   c                óP   ‡ ‡— ||k    r|S ˆˆ fd„t          ||¦  «        D ¦   «         S )Nc                ój   •— g | ]/\  }}t          d ‰j        |         ‰j        |         k    ¦  «        ‘Œ0S )zir.BooleanColumn)r   rp   )r—   rç   rñ   rÛ   rB   s      €€rC   r™   z5IbisLazyFrame._convert_predicates.<locals>.<listcomp>8  sK   ø€ ð 
ð 
ð 
á��eõ Ð# d¤k°$Ô&7¸5¼<ÈÔ;NÒ&NÑPÔPð
ð 
ð 
rE   )r   )rB   rÛ   rÝ   rß   s   ``  rC   rð   z!IbisLazyFrame._convert_predicates3  sP   øø€ ð �hÒÐØˆNð
ð 
ð 
ð 
ð 
å)¨'°8Ñ<Ô<ð
ñ 
ô 
ð 	
rE   c                ó|   ‡ — ˆ fd„‰ j                              ¦   «         j                             ¦   «         D ¦   «         S )Nc                óB   •— i | ]\  }}|t          |‰j        ¦  «        “ŒS rc   rµ   r¶   s      €rC   r¸   z0IbisLazyFrame.collect_schema.<locals>.<dictcomp>>  s<   ø€ ð 
ð 
ð 
á��eð Õ*¨5°$´-Ñ@Ô@ð
ð 
ð 
rE   )rp   r¹   rº   r»   rd   s   `rC   Úcollect_schemazIbisLazyFrame.collect_schema=  sK   ø€ ð
ð 
ð 
ð 
à#œ{×1Ò1Ñ3Ô3Ô:×@Ò@ÑBÔBð
ñ 
ô 
ð 	
rE   ÚsubsetÚkeepr0   Ú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  Únonerc   )ru   Ú_check_columns_existr   r	   Ú_sortr   rg   Úwindowrp   ÚcountÚoverÚ
row_numberr«   r°   r§   r¦   rŽ   )rB   r  r  r  Úsubset_ÚerrorÚtmp_nameÚ	order_by_r  Úexprr5   s              rC   Ú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�(‰^Œ^ð 	ð
 × Ò  Ñ$Ô$Ð$rE   Úbyr  úbool | Sequence[bool]r  c               ón   — ddl m}  |j        |||dœŽ}|                       | j        j        |Ž ¦  «        S )Nr   r   r  )Únarwhals._ibis.exprr	   r  rŽ   rp   r  )rB   r  r  r'  r	   Úcolss         rC   ÚsortzIbisLazyFrame.sort`  sM   € Ø0Ð0Ð0Ð0Ð0Ð0àˆxŒ~˜r¨jÀZÐPÐPÐPˆØ× Ò Ð!5 ¤Ô!5°tÐ!<Ñ=Ô=Ð=rE   ÚkÚreversec               óÜ   — ddl m} t          |t          ¦  «        r| nd„ |D ¦   «         } |j        ||ddœŽ}|                       | j        j        |Ž                      |¦  «        ¦  «        S )Nr   r   c                ó   — g | ]}| ‘ŒS rc   rc   )r—   Úels     rC   r™   z'IbisLazyFrame.top_k.<locals>.<listcomp>i  s   € Ð=WÐ=WÐ=WÈÀ"¸fÐ=WÐ=WÐ=WrE   Tr  )	r*  r	   rJ   r8   r  rŽ   rp   r  r�   )rB   r-  r'  r.  r	   Údescr+  s          rC   Ú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ÐErE   c                ór   — |�|n| j         }|                      | j                             |¦  «        ¦  «        S r<   )ru   rŽ   rp   Ú	drop_null)rB   r  r!  s      rC   Ú
drop_nullszIbisLazyFrame.drop_nullsm  s6   € Ø"Ð.�&�&°D´LˆØ× Ò  ¤×!6Ò!6°wÑ!?Ô!?Ñ@Ô@Ð@rE   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Ž   rp   Úunnest)rB   ru   r9  r¹   r£   r·   r`   s          rC   Ú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ÐQrE   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 rc   rc   )r—   ÚcÚindex_s     €rC   r™   z)IbisLazyFrame.unpivot.<locals>.<listcomp>’  s   ø€ Ð8Ð8Ð8�1¨°¨¨ˆQ¨¨¨rE   )Únames_toÚ	values_to)Úibis.selectorsÚ	selectorsru   r¾   rª   Úfromkeysrp   Úpivot_longerr+  rŽ   rq   )
rB   r  r>  r?  r@  ÚsÚon_Úfinal_columnsÚ	unpivotedrD  s
            @rC   Ú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ÐBrE   c                ó  — t          j        ¦   «                              t          j        |¬¦  «        ¦  «                             |¦  «        t           j                             ¦   «         g}|                       | j        j	        |Ž ¦  «        S )N)r  )
rg   r   r  r  rl   rH  ÚallrŽ   rp   rq   )rB   rl   r  Ú	to_selects       rC   Úwith_row_indexzIbisLazyFrame.with_row_index�  sq   € åŒOÑÔ×"Ò"¥4¤;¸Ð#AÑ#AÔ#AÑBÔB×GÒGÈÑMÔMÝŒN×ÒÑ Ô ð
ˆ	ð × Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rE   Úfileústr | Path | BytesIOc                ó†   — t          |t          ¦  «        rd}t          |¦  «        ‚| j                             |¦  «         d S )Nz5Writing to BytesIO is not supported for Ibis backend.)rJ   r   r  rp   Ú
to_parquet)rB   rT  r`   s      rC   Úsink_parquetzIbisLazyFrame.sink_parquet¤  sC   € Ý�d�GÑ$Ô$ð 	+ØIˆCÝ% cÑ*Ô*Ð*ØŒ×Ò˜tÑ$Ô$Ð$Ð$Ð$rE   zO`LazyFrame.gather_every` is deprecated and will be removed in a future version.zG`LazyFrame.tail` is deprecated and will be removed in a future version.)r5   r6   r7   r   r4   r8   r9   r:   )rF   rG   r9   rH   )rN   r6   rO   r)   r9   r   )r9   rU   )r9   r   )r9   r   )r9   r%   )rl   rm   r9   r'   )r9   rs   )rw   rx   ry   r   r9   r!   )r‹   rŒ   r9   r   )r�   rm   r9   r   )r“   r	   r9   r   )ru   rŸ   r    r8   r9   r   r<   )rw   r:   r§   r:   r9   r   )r®   r	   r9   r   )r9   r²   )r9   r¼   )r9   r¿   )r9   rÁ   )r7   r   r9   r   )r5   r6   r9   r   )rÈ   rÉ   rÊ   r8   r9   r#   )rÎ   rÏ   r9   r   )r5   r6   ru   rÕ   r9   r6   )rÛ   r   rÜ   r/   rÝ   rÞ   rß   rÞ   rà   rm   r9   r   )rÛ   r   rÝ   rm   rß   rm   rú   rÞ   rû   rÞ   rü   r.   rà   rm   r9   r   )rÛ   r   rÝ   rŸ   rß   rŸ   r9   r1   )r  rÞ   r  r0   r  rÞ   r9   r   )r'  rm   r  r(  r  r8   r9   r   )r-  rŒ   r'  rÕ   r.  r(  r9   r   )r  rÞ   r9   r   )ru   rŸ   r9   r   )
r  rÞ   r>  rÞ   r?  rm   r@  rm   r9   r   )rl   rm   r  rŸ   r9   r   )rT  rU  r9   r:   )6Ú__name__Ú
__module__Ú__qualname__r   ÚIBISÚ_implementationrD   ÚstaticmethodrM   ÚclassmethodrT   r]   ra   re   rh   rk   rr   rv   rŠ   r�   r’   rš   rq   r¦   rY   r­   r°   Úpropertyr¹   ru   r…   rÃ   rÆ   rŽ   rÍ   rÔ   rÚ   rï   r  rð   r  r&  r,  r3  r6  r=  rO  rS  rX  r   Ú
deprecatedÚgather_everyÚtailÚ_evaluate_window_exprrc   rE   rC   r3   r3   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ð%ð %ð %ð %ð .�?Ô-ØYñô €Lð &ˆ?Ô%ØQñô €Dð
 ,˜OÑ-Ô-ÐÐÐrE   r3   )r	   r6   rU   )LÚ
__future__r   r  Úior   Útypingr   r   r   rg   Úibis.expr.typesr%  ÚtypesrK   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#   rj   r%   ro   r'   Únarwhals._typingr(   r)   Únarwhals.dataframer*   Únarwhals.dtypesr+   r[   r-   ÚDataFrameV1Únarwhals.typingr.   r/   r0   r1   Ú__annotations__r3   rc   rE   rC   ú<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ØÐÐÐÐÐØ Ð Ð Ð Ð Ð àÐÐÐØÐÐÐØ+Ð+Ð+Ð+Ð+Ð+Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à@Ð@Ð@Ð@Ð@Ð@Ø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ðA.ð A.ð A.ð A.ð A.ØÐVÔWØñA.ô A.ð A.ð A.ð A.rE   