Ë
    ðmxiÝO  ã                  óæ  — 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 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l/Z0d dl1Z2d dl	m3Z3 d dl4m5Z5m6Z6 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lBmCZC d dlmDZD d dlEmFZF d dlGmHZH d dlImJZK d dlLmMZMmNZNmOZO  G d„ ded    e«      ZPy)!é    )Úannotations)Úreduce)Úand_)ÚTYPE_CHECKINGÚAnyN)ÚStarExpression)	ÚDeferredTimeZoneÚFÚcatch_duckdb_exceptionÚcolÚevaluate_exprs_and_aliasesÚjoin_column_namesÚlitÚnative_to_narwhals_dtypeÚwindow_expression)ÚSQLLazyFrame)ÚImplementationÚValidateBackendVersionÚVersionÚextend_boolÚgenerate_temporary_column_nameÚ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                  óZ  — e Zd Zej                  Zddœ	 	 	 	 	 	 	 d,d„Zed-d„«       Ze	d.d„«       Z
e	 	 	 	 	 	 d/d„«       Z	 	 	 	 	 	 d0d„Zd1d„Zd1d	„Zd2d
„Zd3d„Zd4d„Zd5d„Z	 	 	 	 	 	 d6d„Zd7d„Zd8d„Zd9d„Zd9d„Zd:d„Zd;d<d„Zd9d„Zd=d„Zed>d„«       Zed?d„«       Zd@d„ZdAd„Z dBd„Z!dCd„Z"	 	 	 	 	 	 dDd„Z#dEd„Z$	 	 	 	 	 	 	 	 	 	 	 	 dFd „Z%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dGd!„Z&d>d"„Z'	 	 	 	 	 	 	 	 dHd#„Z(dId$„Z)dJd%„Z*dKd&„Z+dLd'„Z,	 	 	 	 	 	 	 	 	 	 dMd(„Z- e.j^                  d)«      dNd*„«       Z0dOd+„Z1y)PÚDuckDBLazyFrameF)Úvalidate_backend_versionc               ób   — || _         || _        d | _        d | _        |r| j	                  «        y y ©N)Ú_native_frameÚ_versionÚ_cached_native_schemaÚ_cached_columnsÚ_validate_backend_version)ÚselfÚdfÚversionr<   s       úQ/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_duckdb/dataframe.pyÚ__init__zDuckDBLazyFrame.__init__F   s7   € ð 79ˆÔØˆŒØSWˆÔ"Ø15ˆÔÙ#Ø×*Ñ*Õ,ð $ó    c                ó6   — | j                   j                  «       S r>   )Ú_implementationÚ_backend_version©rD   s    rG   rL   z DuckDBLazyFrame._backend_versionT   s   € à×#Ñ#×4Ñ4Ó6Ð6rI   c                ó6   — t        | t        j                  «      S r>   )Ú
isinstanceÚduckdbÚDuckDBPyRelation)Úobjs    rG   Ú
_is_nativezDuckDBLazyFrame._is_nativeX   s   € ä˜#œv×6Ñ6Ó7Ð7rI   c              ó*   —  | ||j                   ¬«      S ©N©rF   )r@   )ÚclsÚdataÚcontexts      rG   Úfrom_nativezDuckDBLazyFrame.from_native\   s   € ñ �4 ×!1Ñ!1Ô2Ð2rI   c                ó”   — | j                   t        j                  u rddlm}  || d¬«      S | j                   j                  | d¬«      S )Nr   r5   Úinterchange)ÚlevelÚlazy)r@   r   ÚV1Únarwhals.stable.v1r6   Ú	lazyframe)rD   ÚargsÚkwdsÚDataFrameV1s       rG   Úto_narwhalszDuckDBLazyFrame.to_narwhalsb   s>   € ð �=‰=œGŸJ™JÑ&ÝCá˜t¨=Ô9Ð9Ø�}‰}×&Ñ& t°6Ð&Ó:Ð:rI   c                óX   — | j                   t        j                  urd}t        |«      ‚| S )Nz=__narwhals_dataframe__ is not implemented for DuckDBLazyFrame)r@   r   r_   ÚAttributeError)rD   Úmsgs     rG   Ú__narwhals_dataframe__z&DuckDBLazyFrame.__narwhals_dataframe__k   s'   € à�=‰=¤§
¡
Ñ*ØQˆCÜ  Ó%Ð%ØˆrI   c                ó   — | S r>   © rM   s    rG   Ú__narwhals_lazyframe__z&DuckDBLazyFrame.__narwhals_lazyframe__r   s   € ØˆrI   c                ó   — t        «       S r>   r   rM   s    rG   Ú__native_namespace__z$DuckDBLazyFrame.__native_namespace__u   s
   € Ü‹|ÐrI   c                ó4   — ddl m}  || j                  ¬«      S )Nr   r,   rV   )Únarwhals._duckdb.namespacer-   r@   )rD   r-   s     rG   Ú__narwhals_namespace__z&DuckDBLazyFrame.__narwhals_namespace__x   s   € Ý>á t§}¡}Ô5Ð5rI   c                óh   — ddl m}  || j                  j                  |«      | j                  ¬«      S )Nr   r.   rV   )Únarwhals._duckdb.seriesr/   ÚnativeÚselectr@   )rD   Únamer/   s      rG   Ú
get_columnzDuckDBLazyFrame.get_column}   s%   € ÝCá& t§{¡{×'9Ñ'9¸$Ó'?ÈÏÉÔWÐWrI   c              #  óH   K  — | j                   D ]  }t        |«      –— Œ y ­wr>   )Úcolumnsr   )rD   rv   s     rG   Ú_iter_columnszDuckDBLazyFrame._iter_columns‚   s"   è ø€ Ø—L‘Lò 	ˆDÜ�d“)‹Oñ	ùs   ‚ "c                ó>  — |�|t         j                  u r`ddlm} | j                  dk  r| j
                  j                  «       }n| 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   )ÚArrowDataFrame)é   é   T)r<   rF   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr<   rF   r   )ÚPolarsDataFrame)r<   rF   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframer|   rL   rt   ÚarrowÚfetch_arrow_tabler@   ÚPANDASÚnarwhals._pandas_like.dataframer€   rE   ÚPOLARSÚnarwhals._polars.dataframer‚   ÚplÚ
ValueError)rD   ÚbackendÚkwargsr|   Úretr€   r‚   rh   s           rG   ÚcollectzDuckDBLazyFrame.collect†   sú   € ð ˆ?˜g¬×)?Ñ)?Ñ?Ý@à×$Ñ$ vÒ-Ø—k‘k×'Ñ'Ó)‘à—k‘k×3Ñ3Ó5�Ù!ØØ)-ØŸ™Ø&*ô	ð ð ”n×+Ñ+Ñ+ÝKá&Ø—‘—‘Ó Ü-×4Ñ4Ø)-ØŸ™Ø&*ôð ð ”n×+Ñ+Ñ+ÝBá"Ø—‘—‘Ó ¸4ÈÏÉôð ð .¨g¨YÐ7ˆÜ˜‹oÐrI   c                óV   — | j                  | j                  j                  |«      «      S r>   )Ú_with_nativert   Úlimit)rD   Úns     rG   ÚheadzDuckDBLazyFrame.head¬   s"   € Ø× Ñ  §¡×!2Ñ!2°1Ó!5Ó6Ð6rI   c                óR   — | j                   | j                  j                  |Ž «      S r>   )r’   rt   ru   )rD   Úcolumn_namess     rG   Úsimple_selectzDuckDBLazyFrame.simple_select¯   s%   € Ø× Ñ Ð!3 §¡×!3Ñ!3°\Ð!BÓCÐCrI   c                óú   — t        | g|¢­Ž D ��cg c]  \  }}|j                  |«      ‘Œ }}}	 | j                  | j                  j	                  |«      «      S c c}}w # t
        $ r}t        || «      d ‚d }~ww xY wr>   )r   Úaliasr’   rt   Ú	aggregateÚ	Exceptionr   )rD   Úexprsrv   ÚvalÚ	selectionÚes         rG   r›   zDuckDBLazyFrame.aggregate²   s}   € ä-GÈÐ-UÈuÒ-U÷
Ù )  cˆC�I‰I�d�Oð
ˆ	ñ 
ð	<Ø×$Ñ$ T§[¡[×%:Ñ%:¸9Ó%EÓFÐFùó	
øô
 ò 	<Ü(¨¨DÓ1°tÐ;ûð	<ús   �A¯)A Á	A:Á(A5Á5A:c                ó¶   — d„ t        | g|¢­Ž D «       }	 | j                   | j                  j                  |Ž «      S # t        $ r}t        || «      d ‚d }~ww xY w)Nc              3  óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wr>   ©rš   )Ú.0rv   rž   s      rG   ú	<genexpr>z)DuckDBLazyFrame.select.<locals>.<genexpr>¼   s!   è ø€ ò 
Ù )  cˆC�I‰I�d�Oñ
ùó   ‚ )r   r’   rt   ru   rœ   r   )rD   r�   rŸ   r    s       rG   ru   zDuckDBLazyFrame.select»   sb   € ñ
Ü-GÈÐ-UÈuÒ-Uô
ˆ	ð	<Ø×$Ñ$Ð%7 T§[¡[×%7Ñ%7¸Ð%CÓDÐDøÜò 	<Ü(¨¨DÓ1°tÐ;ûð	<ús   •'= ½	AÁAÁAc               óÆ   — t        | ||¬«      }| j                  D �cg c]  }||vsŒt        |«      ‘Œ }}| j                   | j                  j
                  |Ž «      S c c}w )N©Ústrict)r   ry   r   r’   rt   ru   )rD   ry   r©   Úcolumns_to_droprv   rŸ   s         rG   ÚdropzDuckDBLazyFrame.dropÄ   s[   € Ü/°°gÀfÔMˆØ+/¯<©<ÖW 4¸4ÀÒ;V”S˜•YÐWˆ	ÐWØ× Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@ùò Xs
   �	A§ANc                ó$   — |�d}t        |«      ‚| S )Nz.`backend` argument is not supported for DuckDB)rŒ   )rD   r�   Ú_rh   s       rG   r^   zDuckDBLazyFrame.lazyÉ   s   € ð
 ÐØBˆCÜ˜S“/Ð!ØˆrI   c                óœ  — t        t        | g|¢­Ž «      }| j                  D �cg c]1  }||v r |j                  |«      j	                  |«      n
t        |«      ‘Œ3 }}|j                  d„ |j                  «       D «       «       	 | j                   | j                  j                  |Ž «      S c c}w # t        $ r}t        || «      d ‚d }~ww xY w)Nc              3  óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wr>   r£   )r¤   rv   Úvalues      rG   r¥   z/DuckDBLazyFrame.with_columns.<locals>.<genexpr>Û   s   è ø€ ÒS©K¨D°%�e—k‘k $×'ÑSùr¦   )Údictr   ry   Úpoprš   r   ÚextendÚitemsr’   rt   ru   rœ   r   )rD   r�   Únew_columns_maprv   Úresultr    s         rG   Úwith_columnszDuckDBLazyFrame.with_columnsÓ   sÓ   € ÜÔ9¸$ÐGÀÒGÓHˆð
 Ÿ™ö	
ð ð �Ñ&ð ×Ñ Ó%×+Ñ+¨DÔ1ä�T“ñð
ˆð 
ð 	�‰ÑS¸?×;PÑ;PÓ;RÔSÔSð	<Ø×$Ñ$Ð%7 T§[¡[×%7Ñ%7¸Ð%@ÓAÐAùò
øô ò 	<Ü(¨¨DÓ1°tÐ;ûð	<ús   ¤6B+Â'B0 Â0	CÂ9CÃCc                óª   —  || «      d   }	 | j                  | j                  j                  |«      «      S # t        $ r}t	        || «      |‚d }~ww xY w)Nr   )r’   rt   Úfilterrœ   r   )rD   Ú	predicateÚmaskr    s       rG   r¹   zDuckDBLazyFrame.filterá   sT   € á˜‹˜qÑ!ˆð	9Ø×$Ñ$ T§[¡[×%7Ñ%7¸Ó%=Ó>Ð>øÜò 	9Ü(¨¨DÓ1°qÐ8ûð	9ús   �)7 ·	AÁ AÁAc           
     óz  — | j                   €8t        t        | j                  | j                  j
                  «      «      | _         t        | j                  «      }t        | j                  j                  | j                  j
                  «      D ��ci c]  \  }}|t        || j                  |«      “Œ c}}S c c}}w r>   )
rA   r±   Úzipry   rt   Útypesr	   r   r   r@   )rD   Údeferred_time_zoneÚcolumn_nameÚduckdb_dtypes       rG   ÚschemazDuckDBLazyFrame.schemaé   s    € à×%Ñ%Ð-ô *.¬c°$·,±,ÀÇÁ×@QÑ@QÓ.RÓ)SˆDÔ&ä-¨d¯k©kÓ:Ðô
 .8Ø—‘×#Ñ# T§[¡[×%6Ñ%6ó.÷	
ñ *�˜\ð Ô1Ø˜dŸm™mÐ-?óñ ó
ð 	
ùó 
s   Â"B7c                óª   — | j                   €<| j                  �t        | j                  «      n| j                  j
                  | _         | j                   S r>   )rB   rA   ÚlistrÂ   rt   ry   rM   s    rG   ry   zDuckDBLazyFrame.columnsú   sM   € à×ÑÐ'ð ×-Ñ-Ð9ô �T—[‘[Ô!à—[‘[×(Ñ(ð Ô ð
 ×#Ñ#Ð#rI   c                ó6   — | j                   j                  «       S r>   )rt   rE   rM   s    rG   Ú	to_pandaszDuckDBLazyFrame.to_pandas  s   € à�{‰{�~‰~ÓÐrI   c                óp   — | j                  «       j                  t        j                  «      j                  S r>   )r^   r�   r   rƒ   rt   rM   s    rG   Úto_arrowzDuckDBLazyFrame.to_arrow  s%   € à�y‰y‹{×"Ñ"¤>×#9Ñ#9Ó:×AÑAÐArI   c                ó<   — | j                  | j                  |¬«      S rU   )Ú	__class__rt   )rD   rF   s     rG   Ú_with_versionzDuckDBLazyFrame._with_version  s   € Ø�~‰~˜dŸk™k°7ˆ~Ó;Ð;rI   c                ó<   — | j                  || j                  ¬«      S rU   )rÊ   r@   )rD   rE   s     rG   r’   zDuckDBLazyFrame._with_native  s   € Ø�~‰~˜b¨$¯-©-ˆ~Ó8Ð8rI   c               ó$   — ddl m}  || ||¬«      S )Nr   r*   )Údrop_null_keys)Únarwhals._duckdb.group_byr+   )rD   ÚkeysrÎ   r+   s       rG   Úgroup_byzDuckDBLazyFrame.group_by  s   € õ 	<á˜T 4¸ÔGÐGrI   c                ó–   ‡— | j                   }ˆfd„|j                  D «       }| j                   | j                   j                  |Ž «      S )Nc              3  óv   •K  — | ]0  }|‰v rt        |«      j                  ‰|   «      n
t        |«      –— Œ2 y ­wr>   )r   rš   )r¤   rv   Úmappings     €rG   r¥   z)DuckDBLazyFrame.rename.<locals>.<genexpr>  s9   øè ø€ ò 
àð /3°g©oŒC�‹I�O‰O˜G D™MÔ*Ä3ÀtÃ9ÓLñ
ùs   ƒ69)rt   ry   r’   ru   )rD   rÔ   rE   rŸ   s    `  rG   ÚrenamezDuckDBLazyFrame.rename  sD   ø€ Ø�[‰[ˆó
àŸ
™
ô
ˆ	ð × Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@rI   c               ór  — |dk(  rdn|}|dk(  rm| j                   dk  rd| j                   › �}t        |«      ‚| j                  j                  d«      j	                  |j                  j                  d«      «      }nq|€J ‚|€J ‚d„ t        ||«      D «       }	t        t        |	«      }
| j                  j                  d«      j                  |j                  j                  d«      |
|¬	«      }|d
v rþ| j                  D �cg c]  }t        d|› d�«      ‘Œ }}|j                  D ]–  }|| j                  v }|dk(  r!|s|j                  t        d|› d�«      «       Œ7|dk(  s|r8|�||vr2|j                  t        d|› d�«      j                  |› |› �«      «       Œv|�||vsŒ}|j                  t        |«      «       Œ˜  |j                  |Ž j                  | j                  j                  «      }n4|j                  d«      j                  | j                  j                  «      }| j                  |«      S c c}w )NÚfullÚouterÚcross)r}   r}   r~   z;'duckdb>=1.1.4' is required for cross-join, found version: ÚlhsÚrhsc              3  ó`   K  — | ]&  \  }}t        d |› d�«      t        d|› d�«      k(  –— Œ( y­w©úlhs."ú"úrhs."N©r   ©r¤   ÚleftÚrights      rG   r¥   z'DuckDBLazyFrame.join.<locals>.<genexpr>5  s<   è ø€ ò á�D˜%ô �e˜D˜6 �OÓ$¬¨e°E°7¸!Ð,<Ó(=Õ=ñùó   ‚,.)Ú	conditionÚhow>   rã   rÙ   ÚinnerrØ   rÞ   rß   rà   úlhs.*)rL   ÚNotImplementedErrorrt   Ú	set_aliasrÙ   r   r   r   Újoinry   r   Úappendrš   ru   r’   )rD   Úotherrç   Úleft_onÚright_onÚsuffixÚ
native_howrh   ÚrelÚitræ   Úxru   rv   Ú
col_in_lhsÚress                   rG   rì   zDuckDBLazyFrame.join!  s"  € ð !$ v¢‘W°3ˆ
à˜Ò Ø×$Ñ$ yÒ0ØSÐTX×TiÑTiÐSjÐk�Ü)¨#Ó.Ð.Ø—+‘+×'Ñ'¨Ó.×4Ñ4°U·\±\×5KÑ5KÈEÓ5RÓS‰Cð Ð&Ð&Ð&ØÐ'Ð'Ð'ñä#-¨g°xÓ#@ôˆBô %+¬4°Ó$4ˆIØ—+‘+×'Ñ'¨Ó.×3Ñ3Ø—‘×&Ñ& uÓ-à#Øð	 4ó ˆCð Ð<Ñ<Ø15·±Ö>¨A”c˜E !  A˜,Õ'Ð>ˆFÐ>ØŸ™ò 	-�Ø#'¨4¯<©<Ð#7�
Ø Ò(±Ø—M‘M¤#¨¨d¨V°1 oÓ"6Õ7Ø  GÒ+Ù HÐ$4¸ÀHÑ8Là—M‘M¤#¨¨d¨V°1 oÓ"6×"<Ñ"<À¸vÀfÀXÐ=NÓ"OÕPØÐ%¨°XÒ)=Ø—M‘M¤# d£)Õ,ð	-ð �#—*‘*˜fÐ%×/Ñ/°·±×0AÑ0AÓB‰Cà—*‘*˜WÓ%×/Ñ/°·±×0AÑ0AÓBˆCà× Ñ  Ó%Ð%ùò ?s   Ã?H4c          	     óô  — | j                   }|j                   }	g }
|�%|�#|
j                  d„ t        ||«      D «       «       ng x}}|dk(  r/|
j                  t	        d|› d�«      t	        d|› d�«      k\  «       nA|dk(  r/|
j                  t	        d|› d�«      t	        d|› d�«      k  «       nd}t        |«      ‚t        t        |
«      }dg}|	j                  D ]a  }||j                  v r$|�||h|£vr|j                  d|› d	|› |› d�«       Œ5|�||h|£vsŒ?|j                  t        t	        |«      «      «       Œc d
dj                  |«      › d|› d�}| j                  t        j                  |«      «      S )Nc              3  ó`   K  — | ]&  \  }}t        d |› d�«      t        d|› d�«      k(  –— Œ( y­wrÝ   rá   râ   s      rG   r¥   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>b  s<   è ø€ ò á�D˜%ô �e˜D˜6 �OÓ$¬¨e°E°7¸!Ð,<Ó(=Õ=ñùrå   Ú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 ú
            )rt   r³   r   rí   r   rê   r   r   ry   Ústrrì   r’   rP   Úsql)rD   rî   rï   rð   Úby_leftÚby_rightÚstrategyrñ   rÚ   rÛ   Ú
conditionsrh   ræ   ru   rv   Úquerys                   rG   Ú	join_asofzDuckDBLazyFrame.join_asofS  s©  € ð �k‰kˆØ�l‰lˆØ')ˆ
ØÐ 8Ð#7Ø×Ññ ä#-¨g°xÓ#@ôõ ð
 "$Ð#ˆG�hØ�zÒ!Ø×Ñœc E¨'¨°!Ð"4Ó5¼¸uÀXÀJÈaÐ=PÓ9QÑQÕRØ˜Ò"Ø×Ñœc E¨'¨°!Ð"4Ó5¼¸uÀXÀJÈaÐ=PÓ9QÑQÕRà_ˆCÜ% cÓ*Ð*Ü &¤t¨ZÓ 8ˆ	Ø�ˆØ—K‘Kò 	.ˆDØ�s—{‘{Ñ"ØÐ  D°Ð0E¸HÐ0EÑ$Eà—‘  d V¨6°$°¸°x¸qÐAÕBØÐ! T°(Ð1F¸XÐ1FÒ%FØ—‘œc¤# d£)›nÕ-ð	.ðØ—H‘H˜VÓ$Ð%ð &ð ˆ{ð ð	ˆð × Ñ ¤§¡¨EÓ!2Ó3Ð3rI   c                ó   — | j                   S r>   )rÂ   rM   s    rG   Úcollect_schemazDuckDBLazyFrame.collect_schema‚  s   € Ø�{‰{ÐrI   c               ó:  — |xs | j                   }| j                  |«      x}r|‚t        d| j                   d¬«      }|r|dk(  rt        dt	        |«      «      nd }|dk(  r't        t        dt        «       «      ||xs d||¬	«      }nt        t        d
«      ||xs d||¬	«      }| j                  | j                  j                  t        «       |j                  |«      «      j                  t        |«      t        d«      k(  «      «      j                  |gd¬«      S )Né   Ú
row_index_)ÚprefixÚlastTÚnoneÚcountrk   )Ú
descendingÚ
nulls_lastÚ
row_numberr}   Fr¨   )ry   Ú_check_columns_existr   r   Úlenr   r
   r   r’   rt   ru   rš   r¹   r   r   r«   )	rD   ÚsubsetÚkeepÚorder_byÚsubset_ÚerrorÚtmp_nameÚflagsÚexprs	            rG   ÚuniquezDuckDBLazyFrame.unique…  s  € ð Ò(˜DŸL™LˆØ×-Ñ-¨gÓ6Ð6ˆ5Ð6ØˆKÜ1°!°T·\±\È,ÔWˆÙ4<ÀÈÂ”˜D¤# h£-Ô0ÐUYˆØ�6Š>Ü$Ü�'œ>Ó+Ó,ØØ’˜BØ Ø ô‰Dô %Ü�,“ØØ’˜BØ Ø ôˆDð × Ñ Ø�K‰K×Ñœ~Ó/°·±¸HÓ1EÓF×MÑMÜ�H“¤ Q£Ñ'óó
÷ ‰$�ˆz %ˆ$Ó
(ð		)rI   c               óÎ   — t        |t        |«      «      }|rd„ t        ||«      D «       }nd„ t        ||«      D «       }| j                   | j                  j
                  |Ž «      S )Nc              3  ó¦   K  — | ]I  \  }}|st        |«      j                  «       n&t        |«      j                  «       j                  «       –— ŒK y ­wr>   )r   r  Údesc©r¤   rv   r  s      rG   r¥   z'DuckDBLazyFrame.sort.<locals>.<genexpr>ª  sD   è ø€ ò á�D˜$ñ /3”�D“	×$Ñ$Ô&¼¸D»	¿¹Ó8H×8SÑ8SÓ8UÓUñùó   ‚AAc              3  ó¦   K  — | ]I  \  }}|st        |«      j                  «       n&t        |«      j                  «       j                  «       –— ŒK y ­wr>   )r   Únulls_firstr  r   s      rG   r¥   z'DuckDBLazyFrame.sort.<locals>.<genexpr>¯  sD   è ø€ ò á�D˜$ñ 04”�D“	×%Ñ%Ô'¼¸T»¿¹Ó9I×9UÑ9UÓ9WÓWñùr!  )r   r  r   r’   rt   Úsort)rD   r  r  Úbyrô   s        rG   r$  zDuckDBLazyFrame.sort§  sf   € Ü  ¬S°«WÓ5ˆ
Ùñä",¨R°Ó"<ô‰Bñ
ä",¨R°Ó"<ôˆBð × Ñ Ð!1 §¡×!1Ñ!1°2Ð!6Ó7Ð7rI   c               óh  — | j                   }t        |«      }t        |t        «      rt	        | t        |«      «      }nt        d„ |D «       «      }t        t        d«      ||t	        dt        |«      «      ¬«      }|t        |«      k  }d|› d�}| j                  t        j                  |«      «      S )Nc              3  ó"   K  — | ]  }| –— Œ	 y ­wr>   rk   )r¤   Úrevs     rG   r¥   z(DuckDBLazyFrame.top_k.<locals>.<genexpr>»  s   è ø€ Ò:¨3 3œwÑ:ùs   ‚r  T)r  r  r  z@
            SELECT *
            FROM _rel
            QUALIFY z	
        )rt   rÄ   rO   Úboolr   r  Útupler   r
   r   r’   rP   rÿ   )	rD   Úkr%  ÚreverseÚ_relr  r  ræ   r  s	            rG   Útop_kzDuckDBLazyFrame.top_kµ  s¨   € Ø�{‰{ˆÜ�"‹XˆÜ�gœtÔ$Ü$¨ [´#°b³'Ó:‰JäÑ:°'Ô:Ó:ˆJÜ Üˆl‹OØØ!Ü" 4¬¨R«Ó1ô	
ˆð œC ›F‘Nˆ	ðð �Kð  	ðˆð
 × Ñ ¤§¡¨EÓ!2Ó3Ð3rI   c                ó¤   — |�|n| j                   }t        t        d„ |D «       «      }| j                  | j                  j                  |«      «      S )Nc              3  óN   K  — | ]  }t        |«      j                  «       –— Œ y ­wr>   )r   Ú	isnotnull)r¤   rv   s     rG   r¥   z-DuckDBLazyFrame.drop_nulls.<locals>.<genexpr>Ì  s   è ø€ Ò&QÀ¤s¨4£y×':Ñ':×'<Ñ&Qùs   ‚#%)ry   r   r   r’   rt   r¹   )rD   r  r  Úkeep_conditions       rG   Ú
drop_nullszDuckDBLazyFrame.drop_nullsÊ  sD   € Ø"Ð.‘&°D·L±LˆÜ¤Ñ&QÈÔ&QÓRˆØ× Ñ  §¡×!3Ñ!3°NÓ!CÓDÐDrI   c                ób  ‡‡— | j                   j                  }| j                  «       }‰D ]'  }||   }||j                  k7  sŒd|› d�}t	        |«      ‚ t        ‰«      dk7  rd}t        |«      ‚t        ‰d   «      Š| j                  }| j                  }t        d«      }	‰j                  «       t        d‰«      z  |	kD  }
 |j                  |
«      j                  ˆˆfd„|D «       Ž } |j                  |
 «      j                  ˆfd„|D «       Ž }| j                  |j!                  |«      «      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   r  c              3  ó`   •K  — | ]%  }|‰v rt        d ‰«      j                  |«      n|–— Œ' y­w)ÚunnestN)r
   rš   )r¤   rv   Úcol_to_explodery   s     €€rG   r¥   z*DuckDBLazyFrame.explode.<locals>.<genexpr>é  s8   øè ø€ ò àð <@À7¹?”�(˜NÓ+×1Ñ1°$Ô7ÐPTÓTñùs   ƒ+.c              3  ó^   •K  — | ]$  }|‰v rt        d «      j                  |«      n|–— Œ& y ­wr>   )r   rš   )r¤   rv   ry   s     €rG   r¥   z*DuckDBLazyFrame.explode.<locals>.<genexpr>ð  s1   øè ø€ ò àð *.°©”�D“	—‘ Ô%¸dÓBñùs   ƒ*-)r@   Údtypesr  ÚListr   r  rê   r   rt   ry   r   r1  r
   r¹   ru   r’   Úunion)rD   ry   r9  rÂ   rv   Údtyperh   ró   Úoriginal_columnsÚzeroÚnot_null_conditionÚnon_null_relÚnull_relr7  s    `           @rG   ÚexplodezDuckDBLazyFrame.explodeÏ  sM  ù€ Ø—‘×%Ñ%ˆØ×$Ñ$Ó&ˆØò 	1ˆDØ˜4‘LˆEØ˜Ÿ™Ó#àCÀEÀ7ð K)ð )ð ô ,¨CÓ0Ð0ð	1ô ˆw‹<˜1Òð^ð ô & cÓ*Ð*ä˜W Q™Z›ˆØ�k‰kˆØŸ<™<Ðä�1‹vˆØ+×5Ñ5Ó7¼!¸EÀ>Ó:RÑRÐUYÑYÐØ<�s—z‘zÐ"4Ó5×<Ñ<ôà,ôð
ˆð :�3—:‘:Ð1Ð1Ó2×9Ñ9óà,ôð
ˆð × Ñ  ×!3Ñ!3°HÓ!=Ó>Ð>rI   c                óx  — |€g n|}|€| j                   D �cg c]	  }||vsŒ|‘Œ c}n|}|dk(  rd}t        |«      ‚|dk(  rd}t        |«      ‚t        |Ž }	| j                  }
d|	› dt	        |«      › dt	        |«      › d�}| j                   t        j                  |«      j                  g |¢|‘|‘Ž «      S c c}w )NÚ 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ý   )	ry   rê   r   rt   r   r’   rP   rÿ   ru   )rD   ÚonÚindexÚvariable_nameÚ
value_nameÚindex_ÚcÚon_rh   Ú
unpivot_onr-  r  s               rG   ÚunpivotzDuckDBLazyFrame.unpivotø  sê   € ð �}‘¨%ˆØ>@¸j˜$Ÿ,™,Ö:�Q¨!°6ª/ŠqÓ:Èbˆà˜BÒØNˆCÜ% cÓ*Ð*à˜ÒØKˆCÜ% cÓ*Ð*ä&¨Ð,ˆ
Ø�{‰{ˆðàˆ|ð ä˜-Ó(Ð)ð *Ü˜:“Ð'ð (ðˆð × Ñ Ø$ŒF�J‰J�uÓ×$Ñ$Ð&J¨Ð&J°Ð&J¸zÐ&JÐKó
ð 	
ùò+ ;s
   —	B7¡B7)r}   é   c                óè   — |€d}t        |«      ‚t        t        d«      |¬«      t        d«      z
  j	                  |«      }| j                  | j                  j                  |t        «       «      «      S )Nz5Cannot pass `order_by` to `with_row_index` for DuckDBr  )r  r}   )	Ú	TypeErrorr   r
   r   rš   r’   rt   ru   r   )rD   rv   r  rh   r  s        rG   Úwith_row_indexzDuckDBLazyFrame.with_row_index  se   € àÐØIˆCÜ˜C“.Ð Ü!¤! L£/¸HÔEÌÈAËÑN×UÑUØó
ˆð × Ñ  §¡×!3Ñ!3°D¼.Ó:JÓ!KÓLÐLrI   c                óR   — | j                   }d|› d�}t        j                  |«       y )Nz7
            COPY (SELECT * FROM _rel)
            TO 'z+'
            (FORMAT parquet)
            )rt   rP   rÿ   )rD   Úfiler-  r  s       rG   Úsink_parquetzDuckDBLazyFrame.sink_parquet#  s/   € Ø�{‰{ˆðà�ð ðˆô
 	�
‰
�5ÕrI   )rE   úduckdb.DuckDBPyRelationrF   r   r<   r)  ÚreturnÚNone)rV  ztuple[int, ...])rR   zduckdb.DuckDBPyRelation | AnyrV  zTypeIs[duckdb.DuckDBPyRelation])rX   rU  rY   r2   rV  r&   )rb   r   rc   r   rV  úILazyFrame[duckdb.DuckDBPyRelation] | DataFrameV1[duckdb.DuckDBPyRelation])rV  r&   )rV  r$   )rV  r-   )rv   rþ   rV  r/   )rV  zIterator[Expression])r�   z_EagerAllowedImpl | NonerŽ   r   rV  r(   )r”   ÚintrV  r&   )r—   rþ   rV  r&   )r�   r)   rV  r&   )ry   úSequence[str]r©   r)  rV  r&   r>   )r�   rW  r­   rW  rV  r&   )rº   r)   rV  r&   )rV  zdict[str, DType])rV  z	list[str])rV  zpd.DataFrame)rV  zpa.Table)rF   r   rV  r&   )rE   rU  rV  r&   )rÐ   z$Sequence[str] | Sequence[DuckDBExpr]rÎ   r)  rV  r+   )rÔ   zMapping[str, str]rV  r&   )rî   r&   rç   r8   rï   úSequence[str] | Nonerð   r[  rñ   rþ   rV  r&   )rî   r&   rï   rþ   rð   rþ   r   r[  r  r[  r  r7   rñ   rþ   rV  r&   )r  r[  r  r9   r  r[  rV  r&   )r%  rþ   r  úbool | Sequence[bool]r  r)  rV  r&   )r+  rY  r%  zIterable[str]r,  r\  rV  r&   )r  r[  rV  r&   )ry   rZ  rV  r&   )
rE  r[  rF  r[  rG  rþ   rH  rþ   rV  r&   )rv   rþ   r  rZ  rV  r&   )rS  zstr | Path | BytesIOrV  rW  )2Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBrK   rH   ÚpropertyrL   ÚstaticmethodrS   ÚclassmethodrZ   re   ri   rl   rn   rq   rw   rz   r�   r•   r˜   r›   ru   r«   r^   r·   r¹   rÂ   ry   rÆ   rÈ   rË   r’   rÑ   rÕ   rì   r  r  r  r$  r.  r3  rB  rM  r   Úbackend_versionrQ  rT  rk   rI   rG   r;   r;   <   s´  „ ð %×+Ñ+€Oð */ñ-à#ð-ð ð	-ð
 #'ð-ð 
ó-ð ò7ó ð7ð ò8ó ð8ð ð3Ø*ð3Ø;Jð3à	ò3ó ð3ð
;Øð;Ø"%ð;à	Ró;óóóó6ó
Xó
ð$Ø/ð$Ø;>ð$à	ó$óL7óDó<ó<óAô
ó<ó9ð ò
ó ð
ð  ò$ó ð$ó óBó<ó9ðHØ8ðHØMQðHà	óHóAð0&àð0&ð ð	0&ð
 &ð0&ð 'ð0&ð ð0&ð 
ó0&ðd-4àð-4ð ð	-4ð
 ð-4ð &ð-4ð 'ð-4ð #ð-4ð ð-4ð 
ó-4ó^ð )à$ð )ð !ð	 )ð
 'ð )ð 
ó )óD8ó4ó*Eó
'?ðR
à ð
ð $ð
ð ð	
ð
 ð
ð 
ó
ðB €X×Ñ˜fÓ%òMó &ðMôrI   r;   )r)   rU  rX  )QÚ
__future__r   Ú	functoolsr   Úoperatorr   Útypingr   r   rP   r   Únarwhals._duckdb.utilsr	   r
   r   r   r   r   r   r   r   Únarwhals._sql.dataframer   Únarwhals._utilsr   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+   rp   r-   rs   r/   r0   Únarwhals._typingr1   r2   Únarwhals.dataframer3   Únarwhals.dtypesr4   r`   r6   rd   Únarwhals.typingr7   r8   r9   r;   rk   rI   rG   ú<module>r|     s¦   ðÝ "å Ý ß %ã Ý !÷
÷ 
õ 
õ 1÷	÷ 	ó 	õ -Ý 5áßEÓEÝÝÝ ãÛÝ!ß.å@Ý0Ý7Ý:Ý?Ý4Ý2Ý/Ý,Ý%Ý;ßRÑRônØð	Uñð
 õnrI   