§
    ŠhþhºP  ã                  óø  — d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	Z	d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZ d dlmZ d d	lmZmZmZmZmZmZmZmZm Z  d d
l!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l0Z1d dl2Z3d dl	m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlmBZB d dlCmDZD d dlmEZE d dlFmGZG d dlHmIZI d dlJmKZL d dlMmNZNmOZOmPZP  G d„ ded          e¦  «        ZQdS )!é    )Úannotations)Úreduce)Úand_)ÚTYPE_CHECKINGÚAnyN)ÚStarExpression)	ÚDeferredTimeZoneÚFÚcatch_duckdb_exceptionÚcolÚevaluate_exprsÚjoin_column_namesÚlitÚnative_to_narwhals_dtypeÚwindow_expression)ÚSQLLazyFrame)	ÚImplementationÚValidateBackendVersionÚVersionÚextend_boolÚgenerate_temporary_column_nameÚnot_implementedÚparse_columns_to_dropÚrequiresÚ
zip_strict©Ú
get_duckdb)ÚInvalidOperationError)ÚIterableÚIteratorÚMappingÚSequence)ÚBytesIO)ÚPath)Ú
ModuleType)Ú
Expression)ÚSelfÚTypeIs)ÚCompliantDataFrameAny)Ú
DuckDBExpr©ÚDuckDBGroupBy©ÚDuckDBNamespace©ÚDuckDBInterchangeSeries)Úduckdb_dtypes)Ú_EagerAllowedImpl)Ú_LimitedContext)Ú	LazyFrame)ÚDType©Ú	DataFrame)ÚAsofJoinStrategyÚJoinStrategyÚUniqueKeepStrategyc                  ó  — e Zd Zej        Zddœd|d„Zed}d„¦   «         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ˆd1„Zd‰d4„Zd‰d5„ZdŠd9„Zd‹dŒd<„Zd‰d=„Zd�d?„ZedŽdA„¦   «         Zed�dC„¦   «         Zd�dE„Zd‘dG„Z d’dH„Z!d“dI„Z"d”dN„Z#d•dQ„Z$d–dY„Z%d—d^„Z&dŽd_„Z'd˜dd„Z(d™di„Z)dšdm„Z*d›dn„Z+dœdo„Z,d�dt„Z- e.j/        du¦  «        dždv„¦   «         Z0dŸdy„Z1 e2j3        dz¦  «        Z4 e2j3        d{¦  «        Z5d:S ) ÚDuckDBLazyFrameF)Úvalidate_backend_versionÚdfúduckdb.DuckDBPyRelationÚversionr   r=   ÚboolÚreturnÚNonec               ón   — || _         || _        d | _        d | _        |r|                      ¦   «          d S d S ©N)Ú_native_frameÚ_versionÚ_cached_native_schemaÚ_cached_columnsÚ_validate_backend_version)Úselfr>   r@   r=   s       úQ/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_duckdb/dataframe.pyÚ__init__zDuckDBLazyFrame.__init__G   sM   € ð 79ˆÔØˆŒØSWˆÔ"Ø15ˆÔØ#ð 	-Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-ó    útuple[int, ...]c                ó4   — | j                              ¦   «         S rE   )Ú_implementationÚ_backend_version©rK   s    rL   rR   z DuckDBLazyFrame._backend_versionU   s   € àÔ#×4Ò4Ñ6Ô6Ð6rN   Úobjúduckdb.DuckDBPyRelation | AnyúTypeIs[duckdb.DuckDBPyRelation]c                ó6   — t          | t          j        ¦  «        S rE   )Ú
isinstanceÚduckdbÚDuckDBPyRelation)rT   s    rL   Ú
_is_nativezDuckDBLazyFrame._is_nativeY   s   € å˜#�vÔ6Ñ7Ô7Ð7rN   ÚdataÚcontextr3   r'   c              ó&   —  | ||j         ¬¦  «        S ©N©r@   )rG   )Úclsr\   r]   s      rL   Úfrom_nativezDuckDBLazyFrame.from_native]   s   € ð ˆs�4 Ô!1Ð2Ñ2Ô2Ð2rN   Úargsr   ÚkwdsúILazyFrame[duckdb.DuckDBPyRelation] | DataFrameV1[duckdb.DuckDBPyRelation]c                ó†   — | j         t          j        u rddlm}  || d¬¦  «        S | j                              | d¬¦  «        S )Nr   r6   Úinterchange)ÚlevelÚlazy)rG   r   ÚV1Únarwhals.stable.v1r7   Ú	lazyframe)rK   rc   rd   ÚDataFrameV1s       rL   Úto_narwhalszDuckDBLazyFrame.to_narwhalsc   sU   € ð Œ=�GœJÐ&Ð&ØCÐCÐCÐCÐCÐCà�;˜t¨=Ð9Ñ9Ô9Ð9ØŒ}×&Ò& t°6Ð&Ñ:Ô:Ð:rN   c                óN   — | j         t          j        urd}t          |¦  «        ‚| S )Nz=__narwhals_dataframe__ is not implemented for DuckDBLazyFrame)rG   r   rj   ÚAttributeError)rK   Úmsgs     rL   Ú__narwhals_dataframe__z&DuckDBLazyFrame.__narwhals_dataframe__l   s)   € àŒ=¥¤
Ð*Ð*ØQˆCÝ  Ñ%Ô%Ð%ØˆrN   c                ó   — | S rE   © rS   s    rL   Ú__narwhals_lazyframe__z&DuckDBLazyFrame.__narwhals_lazyframe__s   s   € ØˆrN   r%   c                ó   — t          ¦   «         S rE   r   rS   s    rL   Ú__native_namespace__z$DuckDBLazyFrame.__native_namespace__v   s   € Ý‰|Œ|ÐrN   r.   c                ó0   — ddl m}  || j        ¬¦  «        S )Nr   r-   r`   )Únarwhals._duckdb.namespacer.   rG   )rK   r.   s     rL   Ú__narwhals_namespace__z&DuckDBLazyFrame.__narwhals_namespace__y   s)   € Ø>Ð>Ð>Ð>Ð>Ð>àˆ t¤}Ð5Ñ5Ô5Ð5rN   ÚnameÚstrr0   c                ób   — ddl m}  || j                             |¦  «        | j        ¬¦  «        S )Nr   r/   r`   )Únarwhals._duckdb.seriesr0   ÚnativeÚselectrG   )rK   r{   r0   s      rL   Ú
get_columnzDuckDBLazyFrame.get_column~   s<   € ØCÐCÐCÐCÐCÐCà&Ð& t¤{×'9Ò'9¸$Ñ'?Ô'?ÈÌÐWÑWÔWÐWrN   úIterator[Expression]c              #  ó@   K  — | j         D ]}t          |¦  «        V — Œd S rE   )Úcolumnsr   )rK   r{   s     rL   Ú_iter_columnszDuckDBLazyFrame._iter_columnsƒ   s2   è è € Ø”Lð 	ð 	ˆDÝ�d‘)”)ˆOˆOˆOˆOð	ð 	rN   Úbackendú_EagerAllowedImpl | NoneÚkwargsr)   c                ó
  — |�|t           j        u rXddlm} | j        dk     r| j                             ¦   «         }n| 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   )ÚArrowDataFrame)é   é   T)r=   r@   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr=   r@   r�   )ÚPolarsDataFrame)r=   r@   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframerŠ   rR   r   ÚarrowÚfetch_arrow_tablerG   ÚPANDASÚnarwhals._pandas_like.dataframerŽ   r>   ÚPOLARSÚnarwhals._polars.dataframer�   ÚplÚ
ValueError)rK   r†   rˆ   rŠ   ÚretrŽ   r�   rq   s           rL   ÚcollectzDuckDBLazyFrame.collect‡   sL  € ð ˆ?˜g­Ô)?Ð?Ð?Ø@Ð@Ð@Ð@Ð@Ð@àÔ$ vÒ-Ð-Ø”k×'Ò'Ñ)Ô)��à”k×3Ò3Ñ5Ô5�Ø!�>ØØ)-ØœØ&*ð	ñ ô ð ð •nÔ+Ð+Ð+ØKÐKÐKÐKÐKÐKà&Ð&Ø”—’Ñ Ô Ý-Ô4Ø)-ØœØ&*ðñ ô ð ð •nÔ+Ð+Ð+ØBÐBÐBÐBÐBÐBà"�?Ø”—’Ñ Ô ¸4ÈÌðñ ô ð ð 8¨gÐ7Ð7ˆÝ˜‰oŒoÐrN   ÚnÚintc                ó\   — |                       | j                             |¦  «        ¦  «        S rE   )Ú_with_nativer   Úlimit)rK   r�   s     rL   ÚheadzDuckDBLazyFrame.head­   s&   € Ø× Ò  ¤×!2Ò!2°1Ñ!5Ô!5Ñ6Ô6Ð6rN   Úcolumn_namesc                óF   — |                        | j        j        |Ž ¦  «        S rE   )r    r   r€   )rK   r£   s     rL   Úsimple_selectzDuckDBLazyFrame.simple_select°   s#   € Ø× Ò Ð!3 ¤Ô!3°\Ð!BÑCÔCÐCrN   Úexprsr*   c                óÒ   — d„ t          | g|¢R Ž D ¦   «         }	 |                      | j                             |¦  «        ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc                ó>   — g | ]\  }}|                      |¦  «        ‘ŒS rt   ©Úalias©Ú.0r{   Úvals      rL   ú
<listcomp>z-DuckDBLazyFrame.aggregate.<locals>.<listcomp>´   s&   € ÐSÐSÐS©¨¨s�S—Y’Y˜t‘_”_ÐSÐSÐSrN   )r   r    r   Ú	aggregateÚ	Exceptionr   ©rK   r¦   Ú	selectionÚes       rL   r¯   zDuckDBLazyFrame.aggregate³   s   € ØSÐSµnÀTÐ6RÈEÐ6RÐ6RÐ6RÐSÑSÔSˆ	ð	<Ø×$Ò$ T¤[×%:Ò%:¸9Ñ%EÔ%EÑFÔFÐFøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   ™,A Á
A&ÁA!Á!A&c                ó¼   — d„ t          | g|¢R Ž D ¦   «         }	 |                       | j        j        |Ž ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S rE   r©   r«   s      rL   ú	<genexpr>z)DuckDBLazyFrame.select.<locals>.<genexpr>»   s0   è è € ÐSÐS©¨¨s�S—Y’Y˜t‘_”_ÐSÐSÐSÐSÐSÐSrN   )r   r    r   r€   r°   r   r±   s       rL   r€   zDuckDBLazyFrame.selectº   s|   € ØSÐSµnÀTÐ6RÈEÐ6RÐ6RÐ6RÐSÑSÔSˆ	ð	<Ø×$Ò$Ð%7 T¤[Ô%7¸Ð%CÑDÔDÐDøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   ™!; »
AÁAÁAr„   úSequence[str]Ústrictc               ó’   ‡— t          | ||¬¦  «        Šˆfd„| j        D ¦   «         }|                       | j        j        |Ž ¦  «        S )N©r¸   c                ó6   •— g | ]}|‰v¯t          |¦  «        ‘ŒS rt   ©r   )r¬   r{   Úcolumns_to_drops     €rL   r®   z(DuckDBLazyFrame.drop.<locals>.<listcomp>Ã   s)   ø€ ÐWÐWÐW 4¸4ÀÐ;VÐ;V•S˜‘Y”YÐ;VÐ;VÐ;VrN   )r   r„   r    r   r€   )rK   r„   r¸   r²   r½   s       @rL   ÚdropzDuckDBLazyFrame.dropÁ   sS   ø€ Ý/°°gÀfÐMÑMÔMˆØWÐWÐWÐW¨4¬<ÐWÑWÔWˆ	Ø× Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rN   NÚ_c                ó,   — |�d}t          |¦  «        ‚| S )Nz.`backend` argument is not supported for DuckDB)rš   )rK   r†   r¿   rq   s       rL   ri   zDuckDBLazyFrame.lazyÆ   s    € ð
 ÐØBˆCÝ˜S‘/”/Ð!ØˆrN   c                óL  ‡— t          t          | g|¢R Ž ¦  «        Šˆfd„| j        D ¦   «         }|                     d„ ‰                     ¦   «         D ¦   «         ¦  «         	 |                       | j        j        |Ž ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc                ó†   •— g | ]=}|‰v r(‰                      |¦  «                             |¦  «        nt          |¦  «        ‘Œ>S rt   )Úpoprª   r   )r¬   r{   Únew_columns_maps     €rL   r®   z0DuckDBLazyFrame.with_columns.<locals>.<listcomp>Ò   s`   ø€ ð 
ð 
ð 
ð ð �Ð&Ð&ð ×Ò Ñ%Ô%×+Ò+¨DÑ1Ô1Ð1å�T‘”ð
ð 
ð 
rN   c              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S rE   r©   )r¬   r{   Úvalues      rL   r¶   z/DuckDBLazyFrame.with_columns.<locals>.<genexpr>Ø   s2   è è € ÐSÐS©K¨D°%�e—k’k $Ñ'Ô'ÐSÐSÐSÐSÐSÐSrN   )
Údictr   r„   ÚextendÚitemsr    r   r€   r°   r   )rK   r¦   Úresultr³   rÄ   s       @rL   Úwith_columnszDuckDBLazyFrame.with_columnsÐ   sÒ   ø€ Ý�~¨dÐ;°UÐ;Ð;Ð;Ñ<Ô<ˆð
ð 
ð 
ð 
ð œð	
ñ 
ô 
ˆð 	�ŠÐSÐS¸?×;PÒ;PÑ;RÔ;RÐSÑSÔSÑSÔSÐSð	<Ø×$Ò$Ð%7 T¤[Ô%7¸Ð%@ÑAÔAÐAøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   Á!!B Â
B#ÂBÂB#Ú	predicatec                óÆ   —  || ¦  «        d         }	 |                       | j                             |¦  «        ¦  «        S # t          $ r}t	          || ¦  «        d ‚d }~ww xY w)Nr   )r    r   Úfilterr°   r   )rK   rÌ   Úmaskr³   s       rL   rÎ   zDuckDBLazyFrame.filterÞ   sn   € àˆy˜‰Œ˜qÔ!ˆð	<Ø×$Ò$ T¤[×%7Ò%7¸Ñ%=Ô%=Ñ>Ô>Ð>øÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   “,A  Á 
A Á
AÁA údict[str, DType]c                ó   ‡ ‡— ‰ j         €1t          t          ‰ j        ‰ j        j        ¦  «        ¦  «        ‰ _         t          ‰ j        ¦  «        Šˆˆ fd„t          ‰ j        j        ‰ j        j        ¦  «        D ¦   «         S )Nc                óD   •— i | ]\  }}|t          |‰j        ‰¦  «        “ŒS rt   )r   rG   )r¬   Úcolumn_nameÚduckdb_dtypeÚdeferred_time_zonerK   s      €€rL   ú
<dictcomp>z*DuckDBLazyFrame.schema.<locals>.<dictcomp>î   sF   ø€ ð 
ð 
ð 
ñ *�˜\ð Õ1Ø˜dœmÐ-?ñô ð
ð 
ð 
rN   )rH   rÇ   Úzipr„   r   Útypesr	   r   )rK   rÕ   s   `@rL   ÚschemazDuckDBLazyFrame.schemaæ   s‹   øø€ àÔ%Ð-õ *.­c°$´,ÀÄÔ@QÑ.RÔ.RÑ)SÔ)SˆDÔ&å-¨d¬kÑ:Ô:Ðð
ð 
ð 
ð 
ð 
õ .8Ø”Ô# T¤[Ô%6ñ.ô .ð	
ñ 
ô 
ð 	
rN   ú	list[str]c                óv   — | j         €,| j        �t          | j        ¦  «        n| j        j        | _         | j         S rE   )rI   rH   ÚlistrÙ   r   r„   rS   s    rL   r„   zDuckDBLazyFrame.columns÷   sC   € àÔÐ'ð Ô-Ð9õ �T”[Ñ!Ô!Ð!à”[Ô(ð Ô ð
 Ô#Ð#rN   úpd.DataFramec                ó4   — | j                              ¦   «         S rE   )r   r>   rS   s    rL   Ú	to_pandaszDuckDBLazyFrame.to_pandas  s   € àŒ{�~Š~ÑÔÐrN   úpa.Tablec                ón   — |                       ¦   «                              t          j        ¦  «        j        S rE   )ri   rœ   r   r‘   r   rS   s    rL   Úto_arrowzDuckDBLazyFrame.to_arrow  s$   € à�yŠy‰{Œ{×"Ò"¥>Ô#9Ñ:Ô:ÔAÐArN   c                ó:   — |                       | j        |¬¦  «        S r_   )Ú	__class__r   )rK   r@   s     rL   Ú_with_versionzDuckDBLazyFrame._with_version	  s   € Ø�~Š~˜dœk°7ˆ~Ñ;Ô;Ð;rN   c                ó:   — |                       || j        ¬¦  «        S r_   )rä   rG   )rK   r>   s     rL   r    zDuckDBLazyFrame._with_native  s   € Ø�~Š~˜b¨$¬-ˆ~Ñ8Ô8Ð8rN   Úkeysú$Sequence[str] | Sequence[DuckDBExpr]Údrop_null_keysr,   c               ó*   — ddl m}  || ||¬¦  «        S )Nr   r+   )ré   )Únarwhals._duckdb.group_byr,   )rK   rç   ré   r,   s       rL   Úgroup_byzDuckDBLazyFrame.group_by  s-   € ð 	<Ð;Ð;Ð;Ð;Ð;àˆ}˜T 4¸ÐGÑGÔGÐGrN   ÚmappingúMapping[str, str]c                ó|   ‡— | j         }ˆfd„|j        D ¦   «         }|                       | j         j        |Ž ¦  «        S )Nc              3  óŽ   •K  — | ]?}|‰v r(t          |¦  «                             ‰|         ¦  «        nt          |¦  «        V — Œ@d S rE   )r   rª   )r¬   r{   rí   s     €rL   r¶   z)DuckDBLazyFrame.rename.<locals>.<genexpr>  s`   øè è € ð 
ð 
àð /3°g¨o¨o�C�‰IŒI�OŠO˜G DœMÑ*Ô*Ð*Å3ÀtÁ9Ä9ð
ð 
ð 
ð 
ð 
ð 
rN   )r   r„   r    r€   )rK   rí   r>   r²   s    `  rL   ÚrenamezDuckDBLazyFrame.rename  sW   ø€ ØŒ[ˆð
ð 
ð 
ð 
àœ
ð
ñ 
ô 
ˆ	ð × Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rN   ÚotherÚhowr9   Úleft_onúSequence[str] | NoneÚright_onÚsuffixc               óh  — |dk    rdn|}|dk    rj| j         dk     rd| j         › �}t          |¦  «        ‚| j                             d¦  «                             |j                             d¦  «        ¦  «        }n|€J ‚|€J ‚d„ t          ||¦  «        D ¦   «         }	t          t          |	¦  «        }
| j                             d¦  «                             |j                             d¦  «        |
|¬	¦  «        }|d
v rïd„ | j	        D ¦   «         }|j	        D ]®}|| j	        v }|dk    r)|s'| 
                    t          d|› d�¦  «        ¦  «         Œ:|dk    s|rD|�||vr>| 
                    t          d|› d�¦  «                             |› |› �¦  «        ¦  «         Œ†|�||vr"| 
                    t          |¦  «        ¦  «         Œ¯ |j        |Ž                      | j        j        ¦  «        }n2|                     d¦  «                             | j        j        ¦  «        }|                      |¦  «        S )NÚfullÚouterÚcross)r‹   r‹   rŒ   z;'duckdb>=1.1.4' is required for cross-join, found version: ÚlhsÚrhsc              3  ól   K  — | ]/\  }}t          d |› d�¦  «        t          d|› d�¦  «        k    V — Œ0dS ©úlhs."ú"úrhs."Nr¼   ©r¬   ÚleftÚrights      rL   r¶   z'DuckDBLazyFrame.join.<locals>.<genexpr>2  sc   è è € ð ð á�D˜%õ �O˜D�O�O�OÑ$Ô$­Ð,<°EÐ,<Ð,<Ð,<Ñ(=Ô(=Ò=ðð ð ð ð ð rN   )Ú	conditionró   >   r  rû   Úinnerrú   c                ó4   — g | ]}t          d |› d�¦  «        ‘ŒS )r   r  r¼   )r¬   Úxs     rL   r®   z(DuckDBLazyFrame.join.<locals>.<listcomp>?  s(   € Ð>Ð>Ð>¨A•c˜, !˜,˜,˜,Ñ'Ô'Ð>Ð>Ð>rN   r  r  úlhs.*)rR   ÚNotImplementedErrorr   Ú	set_aliasrû   r   r   r   Újoinr„   Úappendr   rª   r€   r    )rK   rò   ró   rô   rö   r÷   Ú
native_howrq   ÚrelÚitr  r€   r{   Ú
col_in_lhsÚress                  rL   r  zDuckDBLazyFrame.join  sr  € ð !$ v¢ �W�W°3ˆ
à˜Ò Ð ØÔ$ yÒ0Ð0ØkÐTXÔTiÐkÐk�Ý)¨#Ñ.Ô.Ð.Ø”+×'Ò'¨Ñ.Ô.×4Ò4°U´\×5KÒ5KÈEÑ5RÔ5RÑSÔSˆCˆCð Ð&Ð&Ð&ØÐ'Ð'Ð'ðð å#-¨g°xÑ#@Ô#@ðñ ô ˆBõ %+­4°Ñ$4Ô$4ˆIØ”+×'Ò'¨Ñ.Ô.×3Ò3Ø”×&Ò& uÑ-Ô-à#Øð	 4ñ ô ˆCð Ð<Ð<Ð<Ø>Ð>°´Ð>Ñ>Ô>ˆFØœð 	-ð 	-�Ø#'¨4¬<Ð#7�
Ø Ò(Ð(°Ð(Ø—M’M¥# o¨d o o oÑ"6Ô"6Ñ7Ô7Ð7Ð7Ø  GÒ+Ð+Øð ,Ø$,Ð$4¸ÀHÐ8LÐ8Là—M’M¥# o¨d o o oÑ"6Ô"6×"<Ò"<ÀÐ=NÀfÐ=NÐ=NÑ"OÔ"OÑPÔPÐPÐPØÐ%¨°XÐ)=Ð)=Ø—M’M¥# d¡)¤)Ñ,Ô,Ð,øØ�#”*˜fÐ%×/Ò/°´Ô0AÑBÔBˆCˆCà—*’*˜WÑ%Ô%×/Ò/°´Ô0AÑBÔBˆCà× Ò  Ñ%Ô%Ð%rN   Úby_leftÚby_rightÚstrategyr8   c          	     óT  — | j         }|j         }	g }
|�0|�.|
                     d„ t          ||¦  «        D ¦   «         ¦  «         ng x}}|dk    r<|
                     t	          d|› d�¦  «        t	          d|› d�¦  «        k    ¦  «         nS|dk    r<|
                     t	          d|› d�¦  «        t	          d|› d�¦  «        k    ¦  «         nd}t          |¦  «        ‚t          t          |
¦  «        }dg}|	j        D ]k}||j        v r(|�||h|£vr|                     d|› d	|› |› d�¦  «         Œ3|�||h|£vr/|                     t          t	          |¦  «        ¦  «        ¦  «         Œld
d 
                    |¦  «        › d|› d�}|                      t          j        |¦  «        ¦  «        S )Nc              3  ól   K  — | ]/\  }}t          d |› d�¦  «        t          d|› d�¦  «        k    V — Œ0dS rÿ   r¼   r  s      rL   r¶   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>_  sc   è è € ð ð á�D˜%õ �O˜D�O�O�OÑ$Ô$­Ð,<°EÐ,<Ð,<Ð,<Ñ(=Ô(=Ò=ðð ð ð ð ð rN   Úbackwardr   r  r  ÚforwardzKOnly 'backward' and 'forward' strategies are currently supported for DuckDBr
  z" as "z
            SELECT ú,zD
            FROM lhs
            ASOF LEFT JOIN rhs
            ON ú
            )r   rÈ   r   r  r   r  r   r   r„   r|   r  r    rY   Úsql)rK   rò   rô   rö   r  r  r  r÷   rü   rý   Ú
conditionsrq   r  r€   r{   Úquerys                   rL   Ú	join_asofzDuckDBLazyFrame.join_asofP  s'  € ð ŒkˆØŒlˆØ')ˆ
ØÐ 8Ð#7Ø×Òð ð å#-¨g°xÑ#@Ô#@ðñ ô ñ ô ð ð ð
 "$Ð#ˆG�hØ�zÒ!Ð!Ø×Ò�cÐ"4¨'Ð"4Ð"4Ð"4Ñ5Ô5½Ð=PÀXÐ=PÐ=PÐ=PÑ9QÔ9QÒQÑRÔRÐRÐRØ˜Ò"Ð"Ø×Ò�cÐ"4¨'Ð"4Ð"4Ð"4Ñ5Ô5½Ð=PÀXÐ=PÐ=PÐ=PÑ9QÔ9QÒQÑRÔRÐRÐRà_ˆCÝ% cÑ*Ô*Ð*Ý &¥t¨ZÑ 8Ô 8ˆ	Ø�ˆØ”Kð 	.ð 	.ˆDØ�s”{Ð"Ð"ØÐ  D°Ð0E¸HÐ0EÐ$EÐ$Eà—’ÐA dÐAÐA°$ÐA¸ÐAÐAÐAÑBÔBÐBÐBØÐ! T°(Ð1F¸XÐ1FÐ%FÐ%FØ—’�c¥# d¡)¤)™nœnÑ-Ô-Ð-øðØ—H’H˜VÑ$Ô$ðð ð ð	ð ð ˆð × Ò ¥¤¨EÑ!2Ô!2Ñ3Ô3Ð3rN   c                ó   — | j         S rE   )rÙ   rS   s    rL   Úcollect_schemazDuckDBLazyFrame.collect_schema  s
   € ØŒ{ÐrN   ÚsubsetÚkeepr:   Úorder_byc               óž  — |p| j         }|                      |¦  «        x}r|‚t          d| j         d¬¦  «        }|r#|dk    rt          dt	          |¦  «        ¦  «        nd }|dk    r1t          t          dt          ¦   «         ¦  «        ||pd||¬	¦  «        }n#t          t          d
¦  «        ||pd||¬	¦  «        }|                      | j	         
                    t          ¦   «         |                     |¦  «        ¦  «                             t          |¦  «        t          d¦  «        k    ¦  «        ¦  «                             |gd¬¦  «        S )Né   Ú
row_index_)ÚprefixÚlastTÚnoneÚcountrt   )Ú
descendingÚ
nulls_lastÚ
row_numberr‹   Frº   )r„   Ú_check_columns_existr   r   Úlenr   r
   r   r    r   r€   rª   rÎ   r   r   r¾   )	rK   r#  r$  r%  Úsubset_ÚerrorÚtmp_nameÚflagsÚexprs	            rL   ÚuniquezDuckDBLazyFrame.unique‚  sY  € ð Ð(˜DœLˆØ×-Ò-¨gÑ6Ô6Ð6ˆ5ð 	ØˆKÝ1°!°T´\È,ÐWÑWÔWˆØ4<ÐYÀÈÂÀ•˜D¥# h¡-¤-Ñ0Ô0Ð0ÐUYˆØ�6Š>ˆ>Ý$Ý�'�>Ñ+Ô+Ñ,Ô,ØØ�˜BØ Ø ðñ ô ˆDˆDõ %Ý�,‘”ØØ�˜BØ Ø ðñ ô ˆDð × Ò ØŒK×Ò�~Ñ/Ô/°·²¸HÑ1EÔ1EÑFÔF×MÒMÝ�H‘”¥ Q¡¤Ò'ñô ñ
ô 
÷ Š$�ˆz %ˆ$Ñ
(Ô
(ð		)rN   Úbyr-  úbool | Sequence[bool]r.  c               óî   — t          |t          |¦  «        ¦  «        }|rd„ t          ||¦  «        D ¦   «         }nd„ t          ||¦  «        D ¦   «         }|                       | j        j        |Ž ¦  «        S )Nc              3  óÈ   K  — | ]]\  }}|s!t          |¦  «                             ¦   «         n2t          |¦  «                             ¦   «                              ¦   «         V — Œ^d S rE   )r   r.  Údesc©r¬   r{   r<  s      rL   r¶   z'DuckDBLazyFrame.sort.<locals>.<genexpr>§  sr   è è € ð ð á�D˜$ð /3ÐU•�D‘	”	×$Ò$Ñ&Ô&Ð&½¸D¹	¼	¿ºÑ8HÔ8H×8SÒ8SÑ8UÔ8Uðð ð ð ð ð rN   c              3  óÈ   K  — | ]]\  }}|s!t          |¦  «                             ¦   «         n2t          |¦  «                             ¦   «                              ¦   «         V — Œ^d S rE   )r   Únulls_firstr<  r=  s      rL   r¶   z'DuckDBLazyFrame.sort.<locals>.<genexpr>¬  sr   è è € ð ð á�D˜$ð 04ÐW•�D‘	”	×%Ò%Ñ'Ô'Ð'½¸T¹¼¿ºÑ9IÔ9I×9UÒ9UÑ9WÔ9Wðð ð ð ð ð rN   )r   r1  r   r    r   Úsort)rK   r-  r.  r8  r  s        rL   r@  zDuckDBLazyFrame.sort¤  s”   € Ý  ­S°©W¬WÑ5Ô5ˆ
Øð 		ðð å",¨R°Ñ"<Ô"<ðñ ô ˆBˆBð
ð å",¨R°Ñ"<Ô"<ðñ ô ˆBð × Ò Ð!1 ¤Ô!1°2Ð!6Ñ7Ô7Ð7rN   ÚkúIterable[str]Úreversec               ó¾  — | j         }t          |¦  «        }t          |t          ¦  «        rt	          | t          |¦  «        ¦  «        }nt          d„ |D ¦   «         ¦  «        }t          t          d¦  «        ||t	          dt          |¦  «        ¦  «        ¬¦  «        }|t          |¦  «        k    }d|› d�}|  
                    t          j        |¦  «        ¦  «        S )Nc              3  ó   K  — | ]}| V — Œd S rE   rt   )r¬   Úrevs     rL   r¶   z(DuckDBLazyFrame.top_k.<locals>.<genexpr>¸  s$   è è € Ð:Ð:¨3 3˜wÐ:Ð:Ð:Ð:Ð:Ð:rN   r/  T)r%  r-  r.  z@
            SELECT *
            FROM _rel
            QUALIFY z	
        )r   rÜ   rX   rA   r   r1  Útupler   r
   r   r    rY   r  )	rK   rA  r8  rC  Ú_relr-  r6  r  r  s	            rL   Útop_kzDuckDBLazyFrame.top_k²  sÝ   € ØŒ{ˆÝ�"‰XŒXˆÝ�g�tÑ$Ô$ð 	;Ý$¨ [µ#°b±'´'Ñ:Ô:ˆJˆJåÐ:Ð:°'Ð:Ñ:Ô:Ñ:Ô:ˆJÝ Ýˆl‰OŒOØØ!Ý" 4­¨R©¬Ñ1Ô1ð	
ñ 
ô 
ˆð �C ™FœF’Nˆ	ðð ðð ð ˆð
 × Ò ¥¤¨EÑ!2Ô!2Ñ3Ô3Ð3rN   c                ó°   — |�|n| j         }t          t          d„ |D ¦   «         ¦  «        }|                      | j                             |¦  «        ¦  «        S )Nc              3  óX   K  — | ]%}t          |¦  «                             ¦   «         V — Œ&d S rE   )r   Ú	isnotnull)r¬   r{   s     rL   r¶   z-DuckDBLazyFrame.drop_nulls.<locals>.<genexpr>É  s4   è è € Ð&QÐ&QÀ¥s¨4¡y¤y×':Ò':Ñ'<Ô'<Ð&QÐ&QÐ&QÐ&QÐ&QÐ&QrN   )r„   r   r   r    r   rÎ   )rK   r#  r2  Úkeep_conditions       rL   Ú
drop_nullszDuckDBLazyFrame.drop_nullsÇ  sT   € Ø"Ð.�&�&°D´LˆÝ¥Ð&QÐ&QÈÐ&QÑ&QÔ&QÑRÔRˆØ× Ò  ¤×!3Ò!3°NÑ!CÔ!CÑDÔDÐDrN   c                ó’  ‡‡— | j         j        }|                      ¦   «         }‰D ]*}||         }||j        k    rd|› d�}t	          |¦  «        ‚Œ+t          ‰¦  «        dk    rd}t          |¦  «        ‚t          ‰d         ¦  «        Š| j        }| j	        }‰ 
                    ¦   «         t          d‰¦  «        z  t          d¦  «        k    }	 |                     |	¦  «        j        ˆˆfd„|D ¦   «         Ž }
 |                     |	 ¦  «        j        ˆfd„|D ¦   «         Ž }|                      |
                     |¦  «        ¦  «        S )	Nz-`explode` operation not supported for dtype `z`, expected List typer‹   z”Exploding on multiple columns is not supported with DuckDB backend since we cannot guarantee that the exploded columns have matching element counts.r   r1  c              3  ój   •K  — | ]-}|‰v r#t          d ‰¦  «                             |¦  «        n|V — Œ.dS )ÚunnestN)r
   rª   )r¬   r{   Úcol_to_exploder„   s     €€rL   r¶   z*DuckDBLazyFrame.explode.<locals>.<genexpr>ç  s^   øè è € ð ð àð <@À7¸?¸?•�(˜NÑ+Ô+×1Ò1°$Ñ7Ô7Ð7ÐPTðð ð ð ð ð rN   c              3  óh   •K  — | ],}|‰v r"t          d ¦  «                             |¦  «        n|V — Œ-d S rE   )r   rª   )r¬   r{   r„   s     €rL   r¶   z*DuckDBLazyFrame.explode.<locals>.<genexpr>î  sV   øè è € ð ð àð *.°¨¨•�D‘	”	—’ Ñ%Ô%Ð%¸dðð ð ð ð ð rN   )rG   Údtypesr"  ÚListr   r1  r  r   r   r„   rL  r
   r   rÎ   r€   r    Úunion)rK   r„   rT  rÙ   r{   Údtyperq   r  Úoriginal_columnsÚnot_null_conditionÚnon_null_relÚnull_relrR  s    `          @rL   ÚexplodezDuckDBLazyFrame.explodeÌ  s¬  øø€ Ø”Ô%ˆØ×$Ò$Ñ&Ô&ˆØð 	1ð 	1ˆDØ˜4”LˆEØ˜œÒ#Ð#ð)ÀEð )ð )ð )ð õ ,¨CÑ0Ô0Ð0ð $õ ˆw‰<Œ<˜1ÒÐð^ð õ & cÑ*Ô*Ð*å˜W QœZ™œˆØŒkˆØœ<Ðà+×5Ò5Ñ7Ô7½!¸EÀ>Ñ:RÔ:RÑRÕUXØñV
ô V
ò 
Ðð =�s—z’zÐ"4Ñ5Ô5Ô<ðð ð ð ð à,ðñ ô ð
ˆð :�3—:’:Ð1Ð1Ñ2Ô2Ô9ðð ð ð à,ðñ ô ð
ˆð × Ò  ×!3Ò!3°HÑ!=Ô!=Ñ>Ô>Ð>rN   ÚonÚindexÚvariable_nameÚ
value_namec                óp  ‡
— |€g n|Š
|€ˆ
fd„| j         D ¦   «         n|}|dk    rd}t          |¦  «        ‚|dk    rd}t          |¦  «        ‚t          |Ž }| j        }d|› dt	          |¦  «        › dt	          |¦  «        › d�}	|                       t          j        |	¦  «        j        g ‰
¢|‘|‘Ž ¦  «        S )	Nc                ó   •— g | ]}|‰v¯|‘Œ	S rt   rt   )r¬   ÚcÚindex_s     €rL   r®   z+DuckDBLazyFrame.unpivot.<locals>.<listcomp>þ  s   ø€ Ð:Ð:Ð:�Q¨!°6¨/¨/ˆq¨/¨/¨/rN   Ú z:`variable_name` cannot be empty string for duckdb backend.z7`value_name` cannot be empty string for duckdb backend.z)
            unpivot _rel
            on z'
            into
                name z
                value r  )	r„   r  r   r   r   r    rY   r  r€   )rK   r]  r^  r_  r`  Úon_rq   Ú
unpivot_onrH  r  rd  s             @rL   ÚunpivotzDuckDBLazyFrame.unpivotö  s
  ø€ ð �}��¨%ˆØ>@¸jÐ:Ð:Ð:Ð:˜$œ,Ð:Ñ:Ô:Ð:Èbˆà˜BÒÐØNˆCÝ% cÑ*Ô*Ð*à˜ÒÐØKˆCÝ% cÑ*Ô*Ð*å&¨Ð,ˆ
ØŒ{ˆðàðð õ ˜-Ñ(Ô(ð	ð õ
 ˜:‘”ðð ð ˆð × Ò Ø$�FŒJ�uÑÔÔ$Ð&J¨Ð&J°Ð&J¸zÐ&JÐKñ
ô 
ð 	
rN   )r‹   é   c                ó  — |€d}t          |¦  «        ‚t          t          d¦  «        |¬¦  «        t          d¦  «        z
                       |¦  «        }|                      | j                             |t          ¦   «         ¦  «        ¦  «        S )Nz5Cannot pass `order_by` to `with_row_index` for DuckDBr/  )r%  r‹   )	Ú	TypeErrorr   r
   r   rª   r    r   r€   r   )rK   r{   r%  rq   r6  s        rL   Úwith_row_indexzDuckDBLazyFrame.with_row_index  s}   € àÐØIˆCÝ˜C‘.”.Ð Ý!¥! L¡/¤/¸HÐEÑEÔEÍÈAÉÌÑN×UÒUØñ
ô 
ˆð × Ò  ¤×!3Ò!3°D½.Ñ:JÔ:JÑ!KÔ!KÑLÔLÐLrN   Úfileústr | Path | BytesIOc                óH   — | j         }d|› d�}t          j        |¦  «         d S )Nz7
            COPY (SELECT * FROM _rel)
            TO 'z+'
            (FORMAT parquet)
            )r   rY   r  )rK   rm  rH  r  s       rL   Úsink_parquetzDuckDBLazyFrame.sink_parquet!  s:   € ØŒ{ˆðàðð ð ˆõ
 	Œ
�5ÑÔÐÐÐrN   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.)r>   r?   r@   r   r=   rA   rB   rC   )rB   rO   )rT   rU   rB   rV   )r\   r?   r]   r3   rB   r'   )rc   r   rd   r   rB   re   )rB   r'   )rB   r%   )rB   r.   )r{   r|   rB   r0   )rB   r‚   )r†   r‡   rˆ   r   rB   r)   )r�   rž   rB   r'   )r£   r|   rB   r'   )r¦   r*   rB   r'   )r„   r·   r¸   rA   rB   r'   rE   )r†   rC   r¿   rC   rB   r'   )rÌ   r*   rB   r'   )rB   rÐ   )rB   rÚ   )rB   rÝ   )rB   rà   )r@   r   rB   r'   )r>   r?   rB   r'   )rç   rè   ré   rA   rB   r,   )rí   rî   rB   r'   )rò   r'   ró   r9   rô   rõ   rö   rõ   r÷   r|   rB   r'   )rò   r'   rô   r|   rö   r|   r  rõ   r  rõ   r  r8   r÷   r|   rB   r'   )r#  rõ   r$  r:   r%  rõ   rB   r'   )r8  r|   r-  r9  r.  rA   rB   r'   )rA  rž   r8  rB  rC  r9  rB   r'   )r#  rõ   rB   r'   )r„   r·   rB   r'   )
r]  rõ   r^  rõ   r_  r|   r`  r|   rB   r'   )r{   r|   r%  r·   rB   r'   )rm  rn  rB   rC   )6Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBrQ   rM   ÚpropertyrR   Ústaticmethodr[   Úclassmethodrb   rn   rr   ru   rw   rz   r�   r…   rœ   r¢   r¥   r¯   r€   r¾   ri   rË   rÎ   rÙ   r„   rß   râ   rå   r    rì   rñ   r  r   r"  r7  r@  rI  rN  r\  rh  r   Úbackend_versionrl  rp  r   Ú
deprecatedÚgather_everyÚtailrt   rN   rL   r<   r<   =   sæ  € € € € € ð %Ô+€Oð */ð-ð -ð -ð -ð -ð -ð ð7ð 7ð 7ñ „Xð7ð ð8ð 8ð 8ñ „\ð8ð ð3ð 3ð 3ñ „[ð3ð
;ð ;ð ;ð ;ðð ð ð ðð ð ð ðð ð ð ð6ð 6ð 6ð 6ð
Xð Xð Xð Xð
ð ð ð ð$ð $ð $ð $ðL7ð 7ð 7ð 7ðDð Dð Dð Dð<ð <ð <ð <ð<ð <ð <ð <ðAð Að Að Að
ð ð ð ð ð<ð <ð <ð <ð<ð <ð <ð <ð ð
ð 
ð 
ñ „Xð
ð  ð$ð $ð $ñ „Xð$ð ð  ð  ð  ðBð Bð Bð Bð<ð <ð <ð <ð9ð 9ð 9ð 9ðHð Hð Hð HðAð Að Að Að0&ð 0&ð 0&ð 0&ðd-4ð -4ð -4ð -4ð^ð ð ð ð )ð  )ð  )ð  )ðD8ð 8ð 8ð 8ð4ð 4ð 4ð 4ð*Eð Eð Eð Eð
(?ð (?ð (?ð (?ðT
ð 
ð 
ð 
ðB €XÔ˜fÑ%Ô%ðMð Mð Mñ &Ô%ðMðð ð ð ð .�?Ô-ØYñô €Lð &ˆ?Ô%ØQñô €D€D€DrN   r<   )r*   r?   re   )RÚ
__future__r   Ú	functoolsr   Úoperatorr   Útypingr   r   rY   r   Únarwhals._duckdb.utilsr	   r
   r   r   r   r   r   r   r   Únarwhals._sql.dataframer   Únarwhals._utilsr   r   r   r   r   r   r   r   r   Únarwhals.dependenciesr   Únarwhals.exceptionsr   Úcollections.abcr   r    r!   r"   Úior#   Úpathlibr$   rØ   r%   ÚpandasÚpdÚpyarrowÚpar&   Útyping_extensionsr'   r(   Únarwhals._compliant.typingr)   Únarwhals._duckdb.exprr*   rë   r,   ry   r.   r~   r0   r1   Únarwhals._typingr2   r3   Únarwhals.dataframer4   Únarwhals.dtypesr5   rk   r7   rm   Únarwhals.typingr8   r9   r:   r<   rt   rN   rL   ú<module>r“     s\  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø !Ð !Ð !Ð !Ð !Ð !ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 1Ð 0Ð 0Ð 0Ð 0Ð 0ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5àð SØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð àÐÐÐØÐÐÐØ!Ð!Ð!Ð!Ð!Ð!Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à@Ð@Ð@Ð@Ð@Ð@Ø0Ð0Ð0Ð0Ð0Ð0Ø7Ð7Ð7Ð7Ð7Ð7Ø:Ð:Ð:Ð:Ð:Ð:Ø?Ð?Ð?Ð?Ð?Ð?Ø4Ð4Ð4Ð4Ð4Ð4Ø2Ð2Ð2Ð2Ð2Ð2Ø/Ð/Ð/Ð/Ð/Ð/Ø,Ð,Ð,Ð,Ð,Ð,Ø%Ð%Ð%Ð%Ð%Ð%Ø;Ð;Ð;Ð;Ð;Ð;ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRðrð rð rð rð rØð	Uôð
 ñrô rð rð rð rrN   