Ë
    z�h¡K  ã                  ór  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d dlZd d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dlm$Z$ d dlm%Z% erPd dl&m'Z' d dl(Z)d dl*Z+d dl,m-Z- d dl,m.Z. d d l/m0Z0 d d!l1m2Z2 d d"l3m4Z4 d d#l5m6Z6 d d$l7m8Z8 d d%lm9Z9 d d&lm:Z: d d'lm;Z; d d(lm<Z<  ejz                  e>«      5  d d)lm?Z? ddd«        G d*„ d+ed,   «      Z@y# 1 sw Y   ŒxY w)-é    )ÚannotationsN)Úreduce)Úand_)ÚTYPE_CHECKING)ÚAny)ÚIterator)ÚMapping)ÚSequence)ÚFunctionExpression)ÚStarExpression©Úcol)Úevaluate_exprs)Úgenerate_partition_by_sql)Úlit)Únative_to_narwhals_dtype©Ú
get_duckdb)ÚColumnNotFoundError)ÚInvalidOperationError)ÚCompliantDataFrame)ÚCompliantLazyFrame)ÚImplementation)ÚVersion)Úgenerate_temporary_column_name)Únot_implemented)Úparse_columns_to_drop)Úparse_version)Úvalidate_backend_version)Ú
ModuleType)ÚSelf)ÚTypeIs)Ú
DuckDBExpr©ÚDuckDBGroupBy©ÚDuckDBNamespace©ÚDuckDBInterchangeSeries)ÚDType)ÚAsofJoinStrategy)ÚJoinStrategy)ÚLazyUniqueKeepStrategy)Ú_FullContext)ÚSQLExpressionc                  óL  — e Zd Zej                  Z	 	 	 	 	 	 	 	 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d0d„Zd1d„Zd2d„Z	 	 	 	 d2d„Zd3d„Zddœd4d„Zd2d„Zd5d„Zed6d„«       Zed7d„«       Zd8d„Zd9d„Zd:d„Zd;d„Z 	 	 	 	 	 	 d<d„Z!d=d„Z"	 	 	 	 	 	 	 	 	 	 	 	 d>d„Z#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d?d„Z$d6d„Z%	 	 	 	 	 	 d@d „Z&dAd!„Z'dBd"„Z(dCd#„Z)	 	 	 	 	 	 	 	 	 	 dDd$„Z* e+jX                  d%«      Z- e+jX                  d&«      Z. e+«       Z/y)EÚDuckDBLazyFramec               óŠ   — || _         || _        || _        d | _        d | _        t        | j                  | j                  «       y ©N)Ú_native_frameÚ_versionÚ_backend_versionÚ_cached_schemaÚ_cached_columnsr   Ú_implementation)ÚselfÚdfÚbackend_versionÚversions       úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_duckdb/dataframe.pyÚ__init__zDuckDBLazyFrame.__init__;   sA   € ð 79ˆÔØˆŒØ /ˆÔØ7;ˆÔØ15ˆÔÜ  ×!5Ñ!5°t×7LÑ7LÕMó    c                ó6   — t        | t        j                  «      S r3   )Ú
isinstanceÚduckdbÚDuckDBPyRelation)Úobjs    r>   Ú
_is_nativezDuckDBLazyFrame._is_nativeI   s   € ä˜#œv×6Ñ6Ó7Ð7r@   c              ó@   —  | ||j                   |j                  ¬«      S ©N©r<   r=   )r6   r5   )ÚclsÚdataÚcontexts      r>   Úfrom_nativezDuckDBLazyFrame.from_nativeM   s$   € ñ Ø '×":Ñ":ÀG×DTÑDTô
ð 	
r@   c                óX   — | j                   t        j                  urd}t        |«      ‚| S )Nz=__narwhals_dataframe__ is not implemented for DuckDBLazyFrame)r5   r   ÚV1ÚAttributeError)r:   Úmsgs     r>   Ú__narwhals_dataframe__z&DuckDBLazyFrame.__narwhals_dataframe__U   s'   € à�=‰=¤§
¡
Ñ*ØQˆCÜ  Ó%Ð%Øˆr@   c                ó   — | S r3   © ©r:   s    r>   Ú__narwhals_lazyframe__z&DuckDBLazyFrame.__narwhals_lazyframe__\   s   € Øˆr@   c                ó   — t        «       S r3   r   rU   s    r>   Ú__native_namespace__z$DuckDBLazyFrame.__native_namespace___   s
   € Ü‹|Ðr@   c                óJ   — ddl m}  || j                  | j                  ¬«      S )Nr   r&   rI   )Únarwhals._duckdb.namespacer'   r6   r5   )r:   r'   s     r>   Ú__narwhals_namespace__z&DuckDBLazyFrame.__narwhals_namespace__b   s!   € Ý>áØ ×1Ñ1¸4¿=¹=ô
ð 	
r@   c                óh   — ddl m}  || j                  j                  |«      | j                  ¬«      S )Nr   r(   )r=   )Únarwhals._duckdb.seriesr)   ÚnativeÚselectr5   )r:   Únamer)   s      r>   Ú
get_columnzDuckDBLazyFrame.get_columni   s%   € ÝCá& t§{¡{×'9Ñ'9¸$Ó'?ÈÏÉÔWÐWr@   c              #  óH   K  — | j                   D ]  }t        |«      –— Œ y ­wr3   )Úcolumnsr   )r:   r`   s     r>   Ú_iter_columnszDuckDBLazyFrame._iter_columnsn   s"   è ø€ Ø—L‘Lò 	ˆDÜ�d“)‹Oñ	ùs   ‚ "c                ó4  — |�|t         j                  u rAdd l}ddlm}  || j
                  j                  «       t        |«      | j                  d¬«      S |t         j                  u rPdd l
}ddlm}  || j
                  j                  «       t         j                  t        |«      | j                  d¬«      S |t         j                  u r@dd l}ddlm}  || j
                  j%                  «       t        |«      | j                  ¬«      S d	|› �}	t'        |	«      ‚)
Nr   )ÚArrowDataFrameT)r<   r=   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr<   r=   rg   )ÚPolarsDataFramerI   zUnsupported `backend` value: )r   ÚPYARROWÚpyarrowÚnarwhals._arrow.dataframerf   r^   Úarrowr   r5   ÚPANDASÚpandasÚnarwhals._pandas_like.dataframerh   r;   ÚPOLARSÚpolarsÚnarwhals._polars.dataframerj   ÚplÚ
ValueError)
r:   ÚbackendÚkwargsÚparf   Úpdrh   ru   rj   rQ   s
             r>   ÚcollectzDuckDBLazyFrame.collectr   sí   € ð
 ˆ?˜g¬×)?Ñ)?Ñ?Û å@á!Ø—‘×!Ñ!Ó#Ü -¨bÓ 1ØŸ™Ø&*ô	ð ð ”n×+Ñ+Ñ+ÛåKá&Ø—‘—‘Ó Ü-×4Ñ4Ü -¨bÓ 1ØŸ™Ø&*ôð ð ”n×+Ñ+Ñ+ÛåBá"Ø—‘—‘Ó ´-ÀÓ2CÈTÏ]É]ôð ð .¨g¨YÐ7ˆÜ˜‹oÐr@   c                óV   — | j                  | j                  j                  |«      «      S r3   )Ú_with_nativer^   Úlimit)r:   Úns     r>   ÚheadzDuckDBLazyFrame.headœ   s"   € Ø× Ñ  §¡×!2Ñ!2°1Ó!5Ó6Ð6r@   c                óR   — | j                   | j                  j                  |Ž «      S r3   )r}   r^   r_   )r:   Úcolumn_namess     r>   Úsimple_selectzDuckDBLazyFrame.simple_selectŸ   s%   € Ø× Ñ Ð!3 §¡×!3Ñ!3°\Ð!BÓCÐCr@   c                ó¼   — t        | g|¢­Ž D ��cg c]  \  }}|j                  |«      ‘Œ }}}| j                  | j                  j	                  |«      «      S c c}}w r3   )r   Úaliasr}   r^   Ú	aggregate)r:   Úexprsr`   ÚvalÚ	selections        r>   r†   zDuckDBLazyFrame.aggregate¢   sQ   € Ü6DÀTÐ6RÈEÒ6R×S©¨¨s�S—Y‘Y˜t•_ÐSˆ	ÑSØ× Ñ  §¡×!6Ñ!6°yÓ!AÓBÐBùó Ts   �Ac                óx   — d„ t        | g|¢­Ž D «       }| j                   | j                  j                  |Ž «      S )Nc              3  óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wr3   ©r…   )Ú.0r`   rˆ   s      r>   ú	<genexpr>z)DuckDBLazyFrame.select.<locals>.<genexpr>ª   s   è ø€ ÒS©¨¨s�S—Y‘Y˜t—_ÑSùó   ‚ )r   r}   r^   r_   )r:   r‡   r‰   s      r>   r_   zDuckDBLazyFrame.select¦   s<   € ñ T´nÀTÐ6RÈEÒ6RÔSˆ	Ø× Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@r@   c               óš   ‡— t        | ||¬«      Šˆfd„| j                  D «       }| j                   | j                  j                  |Ž «      S )N)rc   Ústrictc              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wr3   rT   )r�   r`   Úcolumns_to_drops     €r>   rŽ   z'DuckDBLazyFrame.drop.<locals>.<genexpr>¯   s   øè ø€ ÒR˜d°dÀ/Ò6Q”TÑRùs   ƒ	�)r   rc   r}   r^   r_   )r:   rc   r‘   r‰   r“   s       @r>   ÚdropzDuckDBLazyFrame.drop­   sB   ø€ Ü/°¸gÈfÔUˆÛR d§l¡lÔRˆ	Ø× Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@r@   N)rw   c               ó$   — |�d}t        |«      ‚| S )Nz.`backend` argument is not supported for DuckDB)rv   )r:   rw   rQ   s      r>   ÚlazyzDuckDBLazyFrame.lazy²   s   € ð
 ÐØBˆCÜ˜S“/Ð!Øˆr@   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 )Nc              3  óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wr3   rŒ   )r�   r`   Úvalues      r>   rŽ   z/DuckDBLazyFrame.with_columns.<locals>.<genexpr>Ä   s   è ø€ ÒS©K¨D°%�e—k‘k $×'ÑSùr�   )Údictr   rc   Úpopr…   r   ÚextendÚitemsr}   r^   r_   )r:   r‡   Únew_columns_mapr`   Úresults        r>   Úwith_columnszDuckDBLazyFrame.with_columns¼   s¬   € Üœ~¨dÐ;°UÒ;Ó<ˆð
 Ÿ™ö	
ð ð �Ñ&ð ×Ñ Ó%×+Ñ+¨DÔ1ä�T“ñð
ˆð 
ð 	�‰ÑS¸?×;PÑ;PÓ;RÔSÔSØ× Ñ Ð!3 §¡×!3Ñ!3°VÐ!<Ó=Ð=ùò
s   ¤6B*c                ól   —  || «      d   }| j                  | j                  j                  |«      «      S )Nr   )r}   r^   Úfilter)r:   Ú	predicateÚmasks      r>   r¢   zDuckDBLazyFrame.filterÇ   s0   € á˜‹˜qÑ!ˆØ× Ñ  §¡×!3Ñ!3°DÓ!9Ó:Ð:r@   c           	     ó   — | j                   €at        | j                  j                  | j                  j                  «      D ��ci c]  \  }}|t        || j                  «      “Œ c}}| _         | j                   S c c}}w r3   )r7   Úzipr^   rc   Útypesr   r5   )r:   Úcolumn_nameÚduckdb_dtypes      r>   ÚschemazDuckDBLazyFrame.schemaÌ   sq   € à×ÑÐ&ô
 25Ø—K‘K×'Ñ'¨¯©×):Ñ):ó2÷#á-�K ð Ô5°lÀDÇMÁMÓRÑRó#ˆDÔð ×"Ñ"Ð"ùó#s   Á!A:c                óª   — | j                   €<| j                  �t        | j                  «      n| j                  j
                  | _         | j                   S r3   )r8   r7   Úlistrª   r^   rc   rU   s    r>   rc   zDuckDBLazyFrame.columnsÙ   sM   € à×ÑÐ'ð ×&Ñ&Ð2ô �T—[‘[Ô!à—[‘[×(Ñ(ð Ô ð
 ×#Ñ#Ð#r@   c                óŽ   — dd l }t        |«      dk\  r| j                  j                  «       S d|j                  › �}t        |«      ‚)Nr   )é   r   r   z3Conversion to pandas requires pandas>=1.0.0, found )rp   r   r^   r;   Ú__version__ÚNotImplementedError)r:   rz   rQ   s      r>   Ú	to_pandaszDuckDBLazyFrame.to_pandasã   s?   € ãä˜Ó 	Ò)Ø—;‘;—>‘>Ó#Ð#àGÈÏÉÐGWÐXˆCÜ% cÓ*Ð*r@   c                ó6   — | j                   j                  «       S r3   )r^   rn   rU   s    r>   Úto_arrowzDuckDBLazyFrame.to_arrowí   s   € à�{‰{× Ñ Ó"Ð"r@   c                óR   — | j                  | j                  || j                  ¬«      S )N)r=   r<   )Ú	__class__r^   r6   )r:   r=   s     r>   Ú_with_versionzDuckDBLazyFrame._with_versionñ   s)   € Ø�~‰~Ø�K‰K ¸$×:OÑ:Oð ó 
ð 	
r@   c                óR   — | j                  || j                  | j                  ¬«      S rH   )rµ   r6   r5   )r:   r;   s     r>   r}   zDuckDBLazyFrame._with_nativeö   s)   € Ø�~‰~Ø × 5Ñ 5¸t¿}¹}ð ó 
ð 	
r@   c               ó$   — ddl m}  || ||¬«      S )Nr   r$   )Údrop_null_keys)Únarwhals._duckdb.group_byr%   )r:   Úkeysr¹   r%   s       r>   Úgroup_byzDuckDBLazyFrame.group_byû   s   € õ 	<á˜T 4¸ÔGÐGr@   c                ó–   ‡— | j                   }ˆfd„|j                  D «       }| j                   | j                   j                  |Ž «      S )Nc              3  óv   •K  — | ]0  }|‰v rt        |«      j                  ‰|   «      n
t        |«      –— Œ2 y ­wr3   )r   r…   )r�   r`   Úmappings     €r>   rŽ   z)DuckDBLazyFrame.rename.<locals>.<genexpr>  s9   øè ø€ ò 
àð /3°g©oŒC�‹I�O‰O˜G D™MÔ*Ä3ÀtÃ9ÓLñ
ùs   ƒ69)r^   rc   r}   r_   )r:   r¿   r;   r‰   s    `  r>   ÚrenamezDuckDBLazyFrame.rename  sD   ø€ Ø�[‰[ˆó
àŸ
™
ô
ˆ	ð × Ñ Ð!3 §¡×!3Ñ!3°YÐ!?Ó@Ð@r@   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®   é   z9DuckDB>=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."Nr   ©r�   ÚleftÚrights      r>   rŽ   z'DuckDBLazyFrame.join.<locals>.<genexpr>  s<   è ø€ ò á�D˜%ô �e˜D˜6 �OÓ$¬¨e°E°7¸!Ð,<Ó(=Õ=ñùó   ‚,.)Ú	conditionÚhow>   rÎ   rÄ   ÚinnerrÃ   rÊ   rË   rÌ   úlhs.*)r6   r°   r^   Ú	set_aliasrÄ   r¦   r   r   Újoinrc   r   Úappendr…   r_   r}   )r:   ÚotherrÒ   Úleft_onÚright_onÚsuffixÚ
native_howrQ   ÚrelÚitrÑ   Úxr_   r`   Ú
col_in_lhsÚress                   r>   rÖ   zDuckDBLazyFrame.join
  s"  € ð !$ v¢‘W°3ˆ
à˜Ò Ø×$Ñ$ yÒ0ØQÐRV×RgÑRgÐQhÐi�Ü)¨#Ó.Ð.Ø—+‘+×'Ñ'¨Ó.×4Ñ4°U·\±\×5KÑ5KÈEÓ5RÓS‰Cð Ð&Ð&Ð&ØÐ'Ð'Ð'ñä#& w°Ó#9ôˆBô ,2´$¸Ó+;ˆ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      r>   rŽ   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>K  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 z
            )r^   rœ   r¦   r×   r   r°   r   r   rc   ÚstrrÖ   r}   rC   Úsql)r:   rØ   rÙ   rÚ   Úby_leftÚby_rightÚstrategyrÛ   rÆ   rÇ   Ú
conditionsrQ   rÑ   r_   r`   Úquerys                   r>   Ú	join_asofzDuckDBLazyFrame.join_asof<  s©  € ð �k‰kˆØ�l‰lˆØ.0ˆ
ØÐ 8Ð#7Ø×Ññ ä#& w°Ó#9ôõ ð
 "$Ð#ˆ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Ó*Ð*Ü'-¬d°JÓ'?ˆ	Ø�ˆØ—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Ð3r@   c                ó   — | j                   S r3   )rª   rU   s    r>   Úcollect_schemazDuckDBLazyFrame.collect_schemak  s   € Ø�{‰{Ðr@   c               ó¼  ‡ — |dk(  r|n|xs ‰ j                   x}�r‰ j                  dk  rd}t        |«      ‚t        ˆ fd„|D «       «      r@dt	        |«      j                  ‰ j                   «      › d‰ j                   › d�}t        |«      ‚t        d‰ j                   «      }t        dg ‰ j                   ¢|‘«      }t        |Ž }|d	k(  r|n|}t        t        d
«      › d|› d�«      j                  |«      }	t        t        dt        «       «      › d|› d�«      j                  |«      }
‰ j                  ‰ j                  j                  t        «       |	|
«      j!                  t#        |«      t%        d«      k(  «      j                  t        ||g¬«      «      «      S ‰ j                  ‰ j                  j'                  dj)                  ‰ j                   «      «      «      S )NÚany)r®   é   zZAt least version 1.3 of DuckDB is required for `unique` operation
with `subset` specified.c              3  ó:   •K  — | ]  }|‰j                   v–— Œ y ­wr3   )rc   )r�   rß   r:   s     €r>   rŽ   z)DuckDBLazyFrame.unique.<locals>.<genexpr>y  s   øè ø€ Ò:¨Q�1˜DŸL™LÔ(Ñ:ùs   ƒzColumns z not found in ú.é   ÚnoneÚ
row_numberz over (ú)Úcountr®   )Úexcludeú, )rc   r6   r°   rò   ÚsetÚ
differencer   r   r   r/   r   r…   r   r}   r^   r_   r¢   r   r   ÚuniquerÖ   )r:   ÚsubsetÚkeepÚsubset_rQ   Úidx_nameÚ
count_nameÚpartition_by_sqlr`   Úidx_exprÚ
count_exprs   `          r>   rÿ   zDuckDBLazyFrame.uniquen  sÀ  ø€ ð !%¨¢‘f°FÒ4J¸d¿l¹lÐKˆ7ÑKØ×$Ñ$ vÒ-ð/ð ô *¨#Ó.Ð.äÓ:°'Ô:Ô:Ø ¤ W£×!8Ñ!8¸¿¹Ó!FÐ GÀ~ÐVZ×VbÑVbÐUcÐcdÐe�Ü)¨#Ó.Ð.Ü5°a¸¿¹ÓFˆHÜ7¸Ð;T¸T¿\¹\Ð;TÈ8Ð;TÓUˆJÜ8¸7ÐDÐØ!%¨¢‘:°XˆDÜ$Ü% lÓ3Ð4°GÐ<LÐ;MÈQÐOóç‰e�H‹oð ô 'Ü% g¬~Ó/?Ó@ÐAÀÐIYÐHZÐZ[Ð\óç‰e�JÓð ð ×$Ñ$Ø—‘×"Ñ"¤>Ó#3°X¸zÓJß‘œ˜D›	¤S¨£VÑ+Ó,ß‘œ°
¸HÐ/EÔFÓGóð ð
 × Ñ  §¡×!3Ñ!3°D·I±I¸d¿l¹lÓ4KÓ!LÓMÐMr@   c               óâ   — t        |t        «      r|gt        |«      z  }|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r3   )r   Ú
nulls_lastÚdesc©r�   r`   r  s      r>   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r3   )r   Únulls_firstr  r  s      r>   rŽ   z'DuckDBLazyFrame.sort.<locals>.<genexpr>–  sD   è ø€ ò á�D˜$ñ 04”�D“	×%Ñ%Ô'¼¸T»¿¹Ó9I×9UÑ9UÓ9WÓWñùr  )rB   ÚboolÚlenr¦   r}   r^   Úsort)r:   Ú
descendingr
  ÚbyrÞ   s        r>   r  zDuckDBLazyFrame.sort�  sp   € Ü�j¤$Ô'Ø$˜¬¨B«Ñ/ˆJÙñä"% b¨*Ó"5ô‰Bñ
ä"% b¨*Ó"5ôˆBð × Ñ Ð!1 §¡×!1Ñ!1°2Ð!6Ó7Ð7r@   c                ó¤   — |�|n| j                   }t        t        d„ |D «       «      }| j                  | j                  j                  |«      «      S )Nc              3  óN   K  — | ]  }t        |«      j                  «       –— Œ y ­wr3   )r   Ú	isnotnull©r�   r`   s     r>   rŽ   z-DuckDBLazyFrame.drop_nulls.<locals>.<genexpr>ž  s   è ø€ Ò&QÀ¤s¨4£y×':Ñ':×'<Ñ&Qùs   ‚#%)rc   r   r   r}   r^   r¢   )r:   r   r  Úkeep_conditions       r>   Ú
drop_nullszDuckDBLazyFrame.drop_nullsœ  sD   € Ø"Ð.‘&°D·L±LˆÜ¤Ñ&QÈÔ&QÓRˆØ× Ñ  §¡×!3Ñ!3°NÓ!CÓDÐDr@   c                ó^  ‡‡— | j                   j                  }| j                  «       }‰D ]'  }||   }||j                  k7  sŒd|› d�}t	        |«      ‚ t        ‰«      dk7  rd}t        |«      ‚t        ‰d   «      Š| j                  }| j                  }‰j                  «       t        d‰«      z  t        d«      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�   r`   Úcol_to_exploderc   s     €€r>   rŽ   z*DuckDBLazyFrame.explode.<locals>.<genexpr>¼  s>   øè ø€ ò ð ð ˜7‘?ô # 8¨^Ó<×BÑBÀ4ÔHàóñùs   ƒ+.c              3  ó^   •K  — | ]$  }|‰v rt        d «      j                  |«      n|–— Œ& y ­wr3   )r   r…   )r�   r`   rc   s     €r>   rŽ   z*DuckDBLazyFrame.explode.<locals>.<genexpr>Å  s1   øè ø€ ò àð *.°©”�D“	—‘ Ô%¸dÓBñùs   ƒ*-)r5   Údtypesrð   ÚListr   r  r°   r   r^   rc   r  r   r   r¢   r_   r}   Úunion)r:   rc   r   rª   r`   ÚdtyperQ   rÝ   Úoriginal_columnsÚnot_null_conditionÚnon_null_relÚnull_relr  s    `          @r>   ÚexplodezDuckDBLazyFrame.explode¡  sT  ù€ Ø—‘×%Ñ%ˆØ×$Ñ$Ó&ˆØò 	1ˆDØ˜4‘LˆEØ˜Ÿ™Ó#àCÀEÀ7ð K)ð )ð ô ,¨CÓ0Ð0ð	1ô ˆw‹<˜1Òð^ð ô & cÓ*Ð*ä˜W Q™Z›ˆØ�k‰kˆØŸ<™<Ðà+×5Ñ5Ó7Ô:LØ�>ó;
ñ 
ä�‹FñÐð =�s—z‘zÐ"4Ó5×<Ñ<ôð -ô	ð
ˆð :�3—:‘:Ð1Ð1Ó2×9Ñ9óà,ôð
ˆð × Ñ  ×!3Ñ!3°HÓ!=Ó>Ð>r@   c                ót  — |€g n|}|€| j                   D �cg c]	  }||vsŒ|‘Œ c}n|}|dk(  rd}t        |«      ‚|dk(  rd}t        |«      ‚dj                  d„ |D «       «      }	| j                  }
d|	› d|› d|› 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.rü   c              3  óD   K  — | ]  }t        t        |«      «      –— Œ y ­wr3   )rç   r   r  s     r>   rŽ   z*DuckDBLazyFrame.unpivot.<locals>.<genexpr>ß  s   è ø€ Ò>°$œs¤3 t£9Ÿ~Ñ>ùr�   z(
            unpivot rel
            on z(
            into
                name "z"
                value "z"
            )rc   r°   rÖ   r^   r}   rC   rè   r_   )r:   ÚonÚindexÚvariable_nameÚ
value_nameÚindex_ÚcÚon_rQ   Ú
unpivot_onrÝ   rí   s               r>   ÚunpivotzDuckDBLazyFrame.unpivotÍ  sé   € ð �}‘¨%ˆØ>@¸j˜$Ÿ,™,Ö:�Q¨!°6ª/ŠqÓ:Èbˆà˜BÒØNˆCÜ% cÓ*Ð*à˜ÒØKˆCÜ% cÓ*Ð*à—Y‘YÑ>¸#Ô>Ó>ˆ
Ø�k‰kˆðàˆ|ð à$�oð &Ø"�|ð $ðˆð × Ñ Ø$ŒF�J‰J�uÓ×$Ñ$Ð&J¨Ð&J°Ð&J¸zÐ&JÐKó
ð 	
ùò+ ;s
   —	B5¡B5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;   úduckdb.DuckDBPyRelationr<   ztuple[int, ...]r=   r   ÚreturnÚNone)rE   zduckdb.DuckDBPyRelation | Anyr6  zTypeIs[duckdb.DuckDBPyRelation])rK   r5  rL   r.   r6  r!   )r6  r!   )r6  r    )r6  r'   )r`   rç   r6  r)   )r6  zIterator[duckdb.Expression])rw   z(ModuleType | Implementation | str | Nonerx   r   r6  z!CompliantDataFrame[Any, Any, Any])r   Úintr6  r!   )r‚   rç   r6  r!   )r‡   r#   r6  r!   )rc   úSequence[str]r‘   r  r6  r!   )rw   zImplementation | Noner6  r!   )r£   r#   r6  r!   )r6  zdict[str, DType])r6  z	list[str])r6  zpd.DataFrame)r6  zpa.Table)r=   r   r6  r!   )r;   r5  r6  r!   )r»   z$Sequence[str] | Sequence[DuckDBExpr]r¹   r  r6  r%   )r¿   zMapping[str, str]r6  r!   )rØ   r!   rÒ   r,   rÙ   úSequence[str] | NonerÚ   r:  rÛ   rç   r6  r!   )rØ   r!   rÙ   ú
str | NonerÚ   r;  ré   r:  rê   r:  rë   r+   rÛ   rç   r6  r!   )r   r:  r  r-   r6  r!   )r  rç   r  zbool | Sequence[bool]r
  r  r6  r!   )r   r:  r6  r!   )rc   r9  r6  r!   )
r,  r:  r-  r:  r.  rç   r/  rç   r6  r!   )0Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBr9   r?   ÚstaticmethodrF   ÚclassmethodrM   rR   rV   rX   r[   ra   rd   r{   r€   rƒ   r†   r_   r”   r–   r    r¢   Úpropertyrª   rc   r±   r³   r¶   r}   r¼   rÀ   rÖ   rî   rð   rÿ   r  r  r(  r4  r   Ú
deprecatedÚgather_everyÚtailÚwith_row_indexrT   r@   r>   r1   r1   8   sŸ  „ Ø$×+Ñ+€OðNà#ðNð )ð	Nð
 ðNð 
óNð ò8ó ð8ð ð
Ø*ð
Ø;Gð
à	ò
ó ð
óóóó
óXó
ð(à9ð(ð ð(ð 
+ó	(óT7óDóCðAàðAð 
óAóAð
 8<õ ó	>ó;ð
 ò
#ó ð
#ð ò$ó ð$ó+ó#ó
ó

ð
HØ8ðHØMQðHà	óHóAð0&àð0&ð ð	0&ð
 &ð0&ð 'ð0&ð ð0&ð 
ó0&ðd-4àð-4ð ð	-4ð
 ð-4ð &ð-4ð 'ð-4ð #ð-4ð ð-4ð 
ó-4ó^ðNØ*ðNØ5KðNà	óNó>8óEó
*?ðX
à ð
ð $ð
ð ð	
ð
 ð
ð 
ó
ðB .�?×-Ñ-ØYó€Lð &ˆ?×%Ñ%ØQó€Dñ %Ó&�Nr@   r1   )r#   r5  )AÚ
__future__r   Ú
contextlibÚ	functoolsr   Úoperatorr   Útypingr   r   r   r	   r
   rC   r   r   Únarwhals._duckdb.utilsr   r   r   r   r   Únarwhals.dependenciesr   Únarwhals.exceptionsr   r   Únarwhals.typingr   r   Únarwhals.utilsr   r   r   r   r   r   r   r§   r    rp   rz   rl   ry   Útyping_extensionsr!   r"   Únarwhals._duckdb.exprr#   rº   r%   rZ   r'   r]   r)   Únarwhals.dtypesr*   r+   r,   r-   r.   ÚsuppressÚImportErrorr/   r1   rT   r@   r>   ú<module>rV     sÆ   ðÝ "ã Ý Ý Ý  Ý Ý Ý Ý ã Ý %Ý !å &Ý 1Ý <Ý &Ý ;Ý ,Ý 3Ý 5Ý .Ý .Ý )Ý "Ý 9Ý *Ý 0Ý (Ý 3áÝ ãÛÝ&Ý(å0Ý7Ý:Ý?Ý%Ý0Ý,Ý6Ý+à€Z×Ñ˜Ó%ñ %Ý$÷%ô|'Ð(Ð)PÑQõ |'÷	%ð %ús   ÄD-Ä-D6