Ë
    z�hdx  ã                  ó²  — d 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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! 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rjd 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"l0m1Z1 d d#l2m3Z3 d d$l4m5Z5 d d%l$m6Z6 d d&l7m8Z8 d d'l9m:Z: d d(l9m;Z; d d)l9m<Z< d d*l9m=Z= d d+l9m>Z> d d,l9m?Z? d d-l&m@Z@ d d.l&mAZA  ej„                  eC«      5  d d/lmDZD ddd«        G d0„ d1ed2   «      ZEy# 1 sw Y   ŒxY w)3é    )ÚannotationsN)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚLiteral)ÚSequence)Úcast©ÚCoalesceOperator©ÚFunctionExpression)ÚStarExpression)ÚDuckDBPyType)ÚLazyExpr©ÚDuckDBExprDateTimeNamespace©ÚDuckDBExprListNamespace©ÚDuckDBExprStringNamespace©ÚDuckDBExprStructNamespace)ÚWindowInputs©Úcol)Úensure_type)Úgenerate_order_by_sql)Úgenerate_partition_by_sql)Úlit)Únarwhals_to_native_dtype)Úwhen)ÚExprKind)ÚImplementation)Únot_implemented)Úrequires)ÚSelf)Ú
AliasNames)Ú	EvalNames)Ú
EvalSeries)ÚDuckDBLazyFrame©ÚDuckDBNamespace)ÚWindowFunction)ÚExprMetadata)ÚDType)ÚFillNullStrategy)ÚNonNestedLiteral)ÚNumericLiteral)Ú
RankMethod)ÚRollingInterpolationMethod)ÚTemporalLiteral)ÚVersion)Ú_FullContext)ÚSQLExpressionc                  ó4  — e Zd Zej                  Z	 	 	 	 	 	 	 	 	 	 	 	 dRd„ZdSd„ZdTd„ZdUd„Z		 	 	 	 	 	 dVd„Z
ddœ	 	 	 	 	 	 	 	 	 	 	 dWd„ZdXd	„Ze	 	 	 	 	 	 dYd
„«       ZedZd„«       Z	 	 	 	 	 	 d[d„Zd\d„Zd]d„Zd^d„Zd^d„Zd^d„Zd^d„Zd^d„Zd^d„Zd^d„Zd^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^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.	 	 	 	 	 	 dad+„Z/	 	 	 	 	 	 dbd,„Z0d_d-„Z1d_d.„Z2d_d/„Z3d_d0„Z4dcd1„Z5dcd2„Z6d_d3„Z7d_d4„Z8d_d5„Z9 e:jv                  d6«      ddd7„«       Z<d_d8„Z=d_d9„Z>d_d:„Z?ded;„Z@dfd<„ZA e:jv                  d6«      dgd=„«       ZB e:jv                  d6«      d_d>„«       ZC e:jv                  d6«      d_d?„«       ZD e:jv                  d6«      d_d@„«       ZE e:jv                  d6«      dhdA„«       ZF e:jv                  d6«      dhdB„«       ZG e:jv                  d6«      dhdC„«       ZH e:jv                  d6«      dhdD„«       ZI e:jv                  d6«      dhdE„«       ZJ e:jv                  d6«      didF„«       ZK e:jv                  d6«      didG„«       ZL e:jv                  d6«      	 	 	 	 	 	 	 	 	 	 djdH„«       ZM e:jv                  d6«      	 	 	 	 	 	 	 	 	 	 djdI„«       ZN	 	 	 	 	 	 	 	 dkdJ„ZOdldK„ZP e:jv                  d6«      d_dL„«       ZQ e:jv                  d6«      dmdM„«       ZReSdndN„«       ZTeSdodO„«       ZUeSdpdP„«       ZVeSdqdQ„«       ZW eX«       ZY eX«       ZZy)rÚ
DuckDBExprc               óf   — || _         || _        || _        || _        || _        d | _        d | _        y ©N)Ú_callÚ_evaluate_output_namesÚ_alias_output_namesÚ_backend_versionÚ_versionÚ_window_functionÚ	_metadata)ÚselfÚcallÚevaluate_output_namesÚalias_output_namesÚbackend_versionÚversions         úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_duckdb/expr.pyÚ__init__zDuckDBExpr.__init__?   s9   € ð ˆŒ
Ø&;ˆÔ#Ø#5ˆÔ Ø /ˆÔØˆŒØ7;ˆÔØ.2ˆ�ó    c                ó$   — | j                  |«      S r<   )r=   )rD   Údfs     rJ   Ú__call__zDuckDBExpr.__call__P   s   € Ø�z‰z˜"‹~ÐrL   c                 ó   — y r<   © ©rD   s    rJ   Ú__narwhals_expr__zDuckDBExpr.__narwhals_expr__S   s   � rL   c                óJ   — ddl m}  || j                  | j                  ¬«      S )Nr   r+   )rH   rI   )Únarwhals._duckdb.namespacer,   r@   rA   )rD   r,   s     rJ   Ú__narwhals_namespace__z!DuckDBExpr.__narwhals_namespace__U   s!   € å>áØ ×1Ñ1¸4¿=¹=ô
ð 	
rL   c               ó   ‡‡— dˆˆfd„}|S )Nc                óš   •— t        | j                  d‰ iŽ}t        | j                  Ž }‰› d| j                  › d|› d|› d�}t        |«      S )NÚ	ascendingz (ú) over (ú z2 rows between unbounded preceding and current row)©r   Úorder_byr   Úpartition_byÚexprr8   )Úwindow_inputsÚorder_by_sqlÚpartition_by_sqlÚsqlÚ	func_nameÚreverses       €€rJ   Úfuncz)DuckDBExpr._cum_window_func.<locals>.funcc   sr   ø€ Ü0Ø×'Ñ'ðØ7>°;ñˆLô  9¸-×:TÑ:TÐUÐà�+˜R × 2Ñ 2Ð3°8Ð<LÐ;MÈQÈ|Ènð ]Dð Dð ô ! Ó%Ð%rL   ©r`   r   Úreturnúduckdb.ExpressionrQ   )rD   re   rd   rf   s    `` rJ   Ú_cum_window_funczDuckDBExpr._cum_window_func]   s   ù€ ö		&ð ˆrL   N)Úddofc               óØ   ‡‡‡‡	‡
‡— t        |t        t        d «      «       t        ‰t        «       g d¢Š|r|dz
  dz  }|dz
  dz  }||z   › d�Š
|› d�Š	n
|dz
  › d�Š
dŠ	dˆˆ	ˆˆˆ
ˆfd„}|S )	N)ÚsumÚmeanÚstdÚvaré   é   z
 precedingú
 followingzcurrent rowc           	     óÈ  •— t        | j                  ddiŽ}t        | j                  Ž }d|› d|› d‰› d‰
› d�	}‰dv r‰}n\‰d	k(  r‰	d
k(  rd}nO‰d	v r‰	dk(  rd}nC‰dk(  r‰	d
k(  rd}n6‰dk(  r‰	dk(  rd}n)‰dv rd‰› d�}t	        |«      ‚d‰› d‰› d�}t	        |«      ‚d| j
                  › d|› d‰› �}t        |«      }t        |› d| j
                  › d|› �«      }t        ||«      S )NrY   Tú(r[   ú rows between z and ú)>   rm   rn   rp   r   Úvar_poprq   Úvar_sampro   Ú
stddev_popÚstddev_samp>   ro   rp   z;Only ddof=0 and ddof=1 are currently supported for rolling_ú.z,Only the following functions are supported: z.
Got: zcount(z) over z >= )r   r]   r   r^   Ú
ValueErrorr_   r8   r!   )r`   ra   rb   ÚwindowÚfunc_ÚmsgÚcondition_sqlÚ	conditionÚvaluerk   Úendrd   Úmin_samplesÚstartÚsupported_funcss            €€€€€€rJ   rf   z-DuckDBExpr._rolling_window_func.<locals>.func…   sF  ø€ Ü0°-×2HÑ2HÐYÐTXÑYˆLÜ8¸-×:TÑ:TÐUÐØÐ)Ð*¨!¨L¨>¸ÈÀwÈeÐTWÐSXÐXYÐZˆFØ˜OÑ+Ø&‘Ø˜eÒ#¨°ª	Ø!‘Ø˜eÑ#¨°ª	Ø"‘Ø˜eÒ#¨°ª	Ø$‘Ø˜eÒ#¨°ª	Ø%‘Ø˜nÑ,ØSÐT]ÐS^Ð^_Ð`�Ü  “oÐ%àDÀ_ÐDUÐU]Ð^gÐ]hÐhiÐj�Ü  “oÐ%Ø$ ]×%7Ñ%7Ð$8¸À¸xÀtÈKÈ=ÐYˆMÜ% mÓ4ˆIÜ! U G¨1¨]×-?Ñ-?Ð,@ÀÈÀxÐ"PÓQˆEÜ˜	 5Ó)Ð)rL   rg   )r   ÚintÚtype)rD   rd   ÚcenterÚwindow_sizer…   rk   ÚhalfÚ	remainderrf   r„   r†   r‡   s    `  ``   @@@rJ   Ú_rolling_window_funczDuckDBExpr._rolling_window_funcp   sˆ   ý€ ô 	�K¤¤d¨4£jÔ1Ü�K¤Ô%Ú7ˆÙØ !‘O¨Ñ)ˆDØ$ q™¨AÑ-ˆIØ˜iÑ'Ð(¨
Ð3ˆEØ�F˜*Ð%‰Cà" Q‘Ð' zÐ2ˆEØˆC÷	*ò 	*ð2 ˆrL   c                óô   ‡ ‡— |t         j                  u r‰ S ‰ j                  dk  rd}t        |«      ‚dŠdˆ ˆfd„}‰ j	                  |‰ j
                  ‰ j                  ‰ j                  ‰ j                  ¬«      S )N©rq   é   z`At least version 1.3 of DuckDB is required for binary operations between aggregates and columns.z{expr} over ()c                ól   •—  ‰| «      D �cg c]  }t        ‰j                  |¬«      «      ‘Œ c}S c c}w ©N)r_   )r8   Úformat©rN   r_   rD   Útemplates     €€rJ   rf   z"DuckDBExpr.broadcast.<locals>.func©   s+   ø€ ÙJNÈrË(ÖSÀ$”M (§/¡/°t /Ó"<Õ=ÒSÐSùÒSs   Œ"1©rF   rG   rH   rI   ©rN   r*   rh   zSequence[duckdb.Expression])r"   ÚLITERALr@   ÚNotImplementedErrorÚ	__class__r>   r?   rA   )rD   Úkindr€   rf   r–   s   `   @rJ   Ú	broadcastzDuckDBExpr.broadcast    s|   ù€ Ø”8×#Ñ#Ñ#ØˆKØ× Ñ  6Ò)ØtˆCÜ% cÓ*Ð*à#ˆö	Tð �~‰~ØØ"&×"=Ñ"=Ø#×7Ñ7Ø ×1Ñ1Ø—M‘Mð ó 
ð 	
rL   c              óR   ‡— dˆfd„} | |‰d |j                   |j                  ¬«      S )Nc                óL   •—  ‰| «      D �cg c]  }t        |«      ‘Œ c}S c c}w r<   r   )rN   ÚnameÚevaluate_column_namess     €rJ   rf   z*DuckDBExpr.from_column_names.<locals>.func¼   s    ø€ Ù*?ÀÓ*CÖD $”C˜•IÒDÐDùÒDs   Œ!r—   ©rN   r*   rh   zlist[duckdb.Expression]©r@   rA   )Úclsr¡   Úcontextrf   s    `  rJ   Úfrom_column_nameszDuckDBExpr.from_column_names´   s3   ø€ õ	Eñ ØØ"7Ø#Ø#×4Ñ4Ø×$Ñ$ô
ð 	
rL   c               óX   ‡— dˆfd„} | |ˆfd„d |j                   |j                  ¬«      S )Nc                ó^   •— | j                   }‰D �cg c]  }t        ||   «      ‘Œ c}S c c}w r<   )Úcolumnsr   )rN   r©   ÚiÚcolumn_indicess      €rJ   rf   z,DuckDBExpr.from_column_indices.<locals>.funcÉ   s(   ø€ Ø—j‘jˆGØ-;Ö<¨”C˜ ™
•OÒ<Ð<ùÒ<s   ’*c                óH   •— ‰D �cg c]  }| j                   |   ‘Œ c}S c c}w r<   )r©   )rN   rª   r«   s     €rJ   ú<lambda>z0DuckDBExpr.from_column_indices.<locals>.<lambda>Ï   s   ø€ À^Ö-TÀ¨b¯j©j¸«mÒ-T€ ùÒ-Ts   †r—   r¢   r£   )r¤   r¥   r«   rf   s     ` rJ   Úfrom_column_indiceszDuckDBExpr.from_column_indicesÇ   s2   ø€ õ	=ñ ØÛ"TØ#Ø#×4Ñ4Ø×$Ñ$ô
ð 	
rL   c               ó”   ‡ ‡‡— dˆˆˆ fd„}‰ j                  |‰ j                  ‰ j                  ‰ j                  ‰ j                  ¬«      S )aN  Create expression from callable.

        Arguments:
            call: Callable from compliant DataFrame to native Expression
            expr_name: Expression name
            expressifiable_args: arguments pass to expression which should be parsed
                as expressions (e.g. in `nw.col('a').is_between('b', 'c')`)
        c                óô   •—  ‰| «      }‰j                  «       D ��ci c]3  \  }}|‰j                  |«      r| j                  |«      n
t        |«      “Œ5 }}}|D �cg c]  } ‰|fi |¤Ž‘Œ c}S c c}}w c c}w r<   )ÚitemsÚ_is_exprÚ_evaluate_exprr   )	rN   Únative_series_listÚkeyrƒ   Úother_native_seriesÚnative_seriesrE   Úexpressifiable_argsrD   s	         €€€rJ   rf   z'DuckDBExpr._with_callable.<locals>.funcá   s�   ø€ Ù!% b£Ðð #6×";Ñ";Ó"=÷#á�C˜ð °·±¸uÔ1E�R×&Ñ& uÔ-Ì3ÈuË:ÑUð#Ðñ #ð &8öà!ñ �]Ñ:Ð&9Ó:òð ùó	#ùòs   �8A/ÁA5r—   r¢   )r›   r>   r?   r@   rA   )rD   rE   r¸   rf   s   ``` rJ   Ú_with_callablezDuckDBExpr._with_callableÕ   sE   ú€ ÷		ð �~‰~ØØ"&×"=Ñ"=Ø#×7Ñ7Ø ×1Ñ1Ø—M‘Mð ó 
ð 	
rL   c               ó~   —  t        | «      | j                  | j                  || j                  | j                  ¬«      S )N)rE   rF   rG   rH   rI   )r‰   r=   r>   r@   rA   ©rD   rf   s     rJ   Ú_with_alias_output_namesz#DuckDBExpr._with_alias_output_namesô   s8   € ØŒt�D‹zØ—‘Ø"&×"=Ñ"=Ø#Ø ×1Ñ1Ø—M‘Mô
ð 	
rL   c                ó¤   — | j                  | j                  | j                  | j                  | j                  | j
                  ¬«      }||_        |S )Nr—   )r›   r=   r>   r?   r@   rA   rB   )rD   Úwindow_functionÚresults      rJ   Ú_with_window_functionz DuckDBExpr._with_window_functioný   sM   € Ø—‘Ø�J‰JØ"&×"=Ñ"=Ø#×7Ñ7Ø ×1Ñ1Ø—M‘Mð  ó 
ˆð #2ˆÔØˆrL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z  S r<   rQ   ©Ú_inputÚothers     rJ   r­   z$DuckDBExpr.__and__.<locals>.<lambda>	  ó
   € ¸À%¹€ rL   ©rÅ   ©r¹   ©rD   rÅ   s     rJ   Ú__and__zDuckDBExpr.__and__  ó   € Ø×"Ñ"Ñ#GÈuÐ"ÓUÐUrL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__or__.<locals>.<lambda>  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__or__zDuckDBExpr.__or__  rË   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z   S r<   rQ   rÃ   s     rJ   r­   z$DuckDBExpr.__add__.<locals>.<lambda>  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__add__zDuckDBExpr.__add__  rË   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z  S r<   rQ   rÃ   s     rJ   r­   z(DuckDBExpr.__truediv__.<locals>.<lambda>  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__truediv__zDuckDBExpr.__truediv__  rË   rL   c                óH   — | j                  d„ |¬«      j                  d«      S )Nc                ó$   — |j                  | «      S r<   )rÔ   rÃ   s     rJ   r­   z)DuckDBExpr.__rtruediv__.<locals>.<lambda>  s   €  %×"3Ñ"3°FÓ";€ rL   rÇ   Úliteral©r¹   ÚaliasrÉ   s     rJ   Ú__rtruediv__zDuckDBExpr.__rtruediv__  s)   € Ø×"Ñ"Ù;À5ð #ó 
ç
‰%�	Ó
ð	rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó$   — | j                  |«      S r<   ©Ú__floordiv__rÃ   s     rJ   r­   z)DuckDBExpr.__floordiv__.<locals>.<lambda>  s   €  &×"5Ñ"5°eÓ"<€ rL   rÇ   rÈ   rÉ   s     rJ   rÞ   zDuckDBExpr.__floordiv__  s   € Ø×"Ñ"Ù<ÀEð #ó 
ð 	
rL   c                óH   — | j                  d„ |¬«      j                  d«      S )Nc                ó$   — |j                  | «      S r<   rÝ   rÃ   s     rJ   r­   z*DuckDBExpr.__rfloordiv__.<locals>.<lambda>   s   €  %×"4Ñ"4°VÓ"<€ rL   rÇ   r×   rØ   rÉ   s     rJ   Ú__rfloordiv__zDuckDBExpr.__rfloordiv__  s)   € Ø×"Ñ"Ù<ÀEð #ó 
ç
‰%�	Ó
ð	rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó$   — | j                  |«      S r<   ©Ú__mod__rÃ   s     rJ   r­   z$DuckDBExpr.__mod__.<locals>.<lambda>%  s   €  &§.¡.°Ó"7€ rL   rÇ   rÈ   rÉ   s     rJ   rå   zDuckDBExpr.__mod__#  s   € Ø×"Ñ"Ù7¸uð #ó 
ð 	
rL   c                óH   — | j                  d„ |¬«      j                  d«      S )Nc                ó$   — |j                  | «      S r<   rä   rÃ   s     rJ   r­   z%DuckDBExpr.__rmod__.<locals>.<lambda>*  ó   €  %§-¡-°Ó"7€ rL   rÇ   r×   rØ   rÉ   s     rJ   Ú__rmod__zDuckDBExpr.__rmod__(  ó)   € Ø×"Ñ"Ù7¸uð #ó 
ç
‰%�	Ó
ð	rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z
  S r<   rQ   rÃ   s     rJ   r­   z$DuckDBExpr.__sub__.<locals>.<lambda>.  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__sub__zDuckDBExpr.__sub__-  rË   rL   c                óH   — | j                  d„ |¬«      j                  d«      S )Nc                ó$   — |j                  | «      S r<   )rí   rÃ   s     rJ   r­   z%DuckDBExpr.__rsub__.<locals>.<lambda>2  rè   rL   rÇ   r×   rØ   rÉ   s     rJ   Ú__rsub__zDuckDBExpr.__rsub__0  rê   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z  S r<   rQ   rÃ   s     rJ   r­   z$DuckDBExpr.__mul__.<locals>.<lambda>6  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__mul__zDuckDBExpr.__mul__5  rË   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |z  S r<   rQ   rÃ   s     rJ   r­   z$DuckDBExpr.__pow__.<locals>.<lambda>9  s
   € ¸À¹€ rL   rÇ   rÈ   rÉ   s     rJ   Ú__pow__zDuckDBExpr.__pow__8  s   € Ø×"Ñ"Ñ#FÈeÐ"ÓTÐTrL   c                óH   — | j                  d„ |¬«      j                  d«      S )Nc                ó$   — |j                  | «      S r<   )rö   rÃ   s     rJ   r­   z%DuckDBExpr.__rpow__.<locals>.<lambda>=  rè   rL   rÇ   r×   rØ   rÉ   s     rJ   Ú__rpow__zDuckDBExpr.__rpow__;  rê   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |k  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__lt__.<locals>.<lambda>A  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__lt__zDuckDBExpr.__lt__@  rË   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |kD  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__gt__.<locals>.<lambda>D  rÆ   rL   rÇ   rÈ   rÉ   s     rJ   Ú__gt__zDuckDBExpr.__gt__C  rË   rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |k  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__le__.<locals>.<lambda>G  ó
   € ¸À5¹€ rL   rÇ   rÈ   rÉ   s     rJ   Ú__le__zDuckDBExpr.__le__F  ó   € Ø×"Ñ"Ñ#HÐPUÐ"ÓVÐVrL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |k\  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__ge__.<locals>.<lambda>J  r  rL   rÇ   rÈ   rÉ   s     rJ   Ú__ge__zDuckDBExpr.__ge__I  r  rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |k(  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__eq__.<locals>.<lambda>M  r  rL   rÇ   rÈ   rÉ   s     rJ   Ú__eq__zDuckDBExpr.__eq__L  r  rL   c                ó*   — | j                  d„ |¬«      S )Nc                ó   — | |k7  S r<   rQ   rÃ   s     rJ   r­   z#DuckDBExpr.__ne__.<locals>.<lambda>P  r  rL   rÇ   rÈ   rÉ   s     rJ   Ú__ne__zDuckDBExpr.__ne__O  r  rL   c                óX   — t        dt        j                  «      }| j                  |«      S )Nú Callable[..., duckdb.Expression])r	   ÚoperatorÚinvertr¹   )rD   r  s     rJ   Ú
__invert__zDuckDBExpr.__invert__R  s$   € ÜÐ8¼(¿/¹/ÓJˆØ×"Ñ" 6Ó*Ð*rL   c                ó2   ‡— dˆfd„}| j                  |«      S )Nc                óF   •— t        | «      dk7  rd| › �}t        |«      ‚‰gS )Nrq   z:Expected function with single output, found output names: )Úlenr}   )Únamesr€   r    s     €rJ   rG   z,DuckDBExpr.alias.<locals>.alias_output_namesW  s-   ø€ Ü�5‹z˜QŠØRÐSXÐRYÐZ�Ü  “oÐ%Ø�6ˆMrL   )r  úSequence[str]rh   r  )r¼   )rD   r    rG   s    ` rJ   rÙ   zDuckDBExpr.aliasV  s   ø€ õ	ð ×,Ñ,Ð-?Ó@Ð@rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚabsr   ©rÄ   s    rJ   r­   z DuckDBExpr.abs.<locals>.<lambda>`  ó   € Ô2DÀUÈFÓ2S€ rL   rÈ   rR   s    rJ   r  zDuckDBExpr.abs_  ó   € Ø×"Ñ"Ñ#SÓTÐTrL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )Nrn   r   r  s    rJ   r­   z!DuckDBExpr.mean.<locals>.<lambda>c  s   € Ô2DÀVÈVÓ2T€ rL   rÈ   rR   s    rJ   rn   zDuckDBExpr.meanb  s   € Ø×"Ñ"Ñ#TÓUÐUrL   c                ó,   — dd„}| j                  |«      S )Nc           
     ó²  — t        d| «      }t        d| «      |t        d«      z
  z  t        d||t        d«      z
  z  «      z  }t        |t        d«      k(  t        d «      «      j                  t        |t        d«      k(  t        t	        d«      «      «      j                  t        |t        d«      k(  t        d«      «      j                  |«      «      «      S )	NÚcountÚskewnessrr   Úsqrtrq   r   Únang        )r   r   r!   Ú	otherwiseÚfloat)rÄ   r"  Úsample_skewnesss      rJ   rf   zDuckDBExpr.skew.<locals>.funcf  s»   € Ü& w°Ó7ˆEô # :¨vÓ6Øœ3˜q›6‘>ñ#ä$ V¨U°e¼cÀ!»f±nÑ-EÓFñGð ô
 ˜¤ Q£™¬¨T«Ó3×=Ñ=Ü�Uœc !›f‘_¤c¬%°«,Ó&7Ó8×BÑBÜ˜¤# a£&™¬#¨c«(Ó3×=Ñ=¸oÓNóóð rL   ©rÄ   ri   rh   ri   rÈ   r»   s     rJ   ÚskewzDuckDBExpr.skewe  s   € ó	ð ×"Ñ" 4Ó(Ð(rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚmedianr   r  s    rJ   r­   z#DuckDBExpr.median.<locals>.<lambda>w  s   € Ô2DÀXÈvÓ2V€ rL   rÈ   rR   s    rJ   r-  zDuckDBExpr.medianv  s   € Ø×"Ñ"Ñ#VÓWÐWrL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚbool_andr   r  s    rJ   r­   z DuckDBExpr.all.<locals>.<lambda>z  ó   € Ô2DÀZÐQWÓ2X€ rL   rÈ   rR   s    rJ   ÚallzDuckDBExpr.ally  ó   € Ø×"Ñ"Ñ#XÓYÐYrL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚbool_orr   r  s    rJ   r­   z DuckDBExpr.any.<locals>.<lambda>}  s   € Ô2DÀYÐPVÓ2W€ rL   rÈ   rR   s    rJ   ÚanyzDuckDBExpr.any|  s   € Ø×"Ñ"Ñ#WÓXÐXrL   c                ó6   ‡‡— dˆˆfd„}| j                  |«      S )Nc                óT   •— ‰dk(  rt        d| t        ‰«      «      S d}t        |«      ‚)NÚlinearÚquantile_contzDOnly linear interpolation methods are supported for DuckDB quantile.)r   r   rš   )rÄ   r€   ÚinterpolationÚquantiles     €€rJ   rf   z!DuckDBExpr.quantile.<locals>.func‚  s.   ø€ Ø Ò(Ü)¨/¸6Ä3ÀxÃ=ÓQÐQØXˆCÜ% cÓ*Ð*rL   r)  rÈ   )rD   r=  r<  rf   s    `` rJ   r=  zDuckDBExpr.quantile  s   ù€ ö	+ð ×"Ñ" 4Ó(Ð(rL   c                ó¦   — dd„}dd„}	 	 	 	 	 	 	 	 d	d„}|€| j                  ||¬«      S |€| j                  ||¬«      S | j                  |||¬«      S )
Nc                ó   — t        d| |«      S )NÚgreatestr   )rÄ   Úlower_bounds     rJ   Ú_clip_lowerz$DuckDBExpr.clip.<locals>._clip_lower�  s   € Ü% j°&¸+ÓFÐFrL   c                ó   — t        d| |«      S )NÚleastr   )rÄ   Úupper_bounds     rJ   Ú_clip_upperz$DuckDBExpr.clip.<locals>._clip_upper’  s   € Ü% g¨v°{ÓCÐCrL   c                ó2   — t        dt        d| |«      |«      S )Nr@  rD  r   )rÄ   rA  rE  s      rJ   Ú
_clip_bothz#DuckDBExpr.clip.<locals>._clip_both•  s"   € ô &ØÔ.¨w¸ÀÓLÈkóð rL   )rE  )rA  )rA  rE  )rÄ   ri   rA  r   rh   ri   )rÄ   ri   rE  r   rh   ri   )rÄ   ri   rA  r   rE  r   rh   ri   rÈ   )rD   rA  rE  rB  rF  rH  s         rJ   ÚclipzDuckDBExpr.clipŠ  sŒ   € ó
	Gó	Dð	Ø%ð	Ø47ð	ØFIð	àó	ð ÐØ×&Ñ& {ÀÐ&ÓLÐLØÐØ×&Ñ& {ÀÐ&ÓLÐLØ×"Ñ"Ø K¸[ð #ó 
ð 	
rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )Nrm   r   r  s    rJ   r­   z DuckDBExpr.sum.<locals>.<lambda>¥  r  rL   rÈ   rR   s    rJ   rm   zDuckDBExpr.sum¤  r  rL   c                ó,   — dd„}| j                  |«      S )Nc           
     óº   — t        dt        d| «      «      t        dt        | j                  «       t        d«      «      j	                  t        d«      «      «      z   S )NÚarray_uniqueÚ	array_aggÚmaxr   rq   )r   r!   Ú	isnotnullr   r&  r  s    rJ   rf   z!DuckDBExpr.n_unique.<locals>.func¨  sQ   € ä%ØÔ 2°;ÀÓ Góä"Ø”t˜F×,Ñ,Ó.´°A³Ó7×AÑAÄ#ÀaÃ&ÓIóñð rL   r)  rÈ   r»   s     rJ   Ún_uniquezDuckDBExpr.n_unique§  s   € ó	ð ×"Ñ" 4Ó(Ð(rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S ©Nr"  r   r  s    rJ   r­   z"DuckDBExpr.count.<locals>.<lambda>³  ó   € Ô2DÀWÈfÓ2U€ rL   rÈ   rR   s    rJ   r"  zDuckDBExpr.count²  ó   € Ø×"Ñ"Ñ#UÓVÐVrL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d«      S rU  r   r  s    rJ   r­   z DuckDBExpr.len.<locals>.<lambda>¶  s   € Ô2DÀWÓ2M€ rL   rÈ   rR   s    rJ   r  zDuckDBExpr.lenµ  s   € Ø×"Ñ"Ñ#MÓNÐNrL   c                óŽ   ‡— ‰dk(  r| j                  d„ «      S ‰dk(  r| j                  d„ «      S dˆfd„}| j                  |«      S )Nr   c                ó   — t        d| «      S )Nrz   r   r  s    rJ   r­   z DuckDBExpr.std.<locals>.<lambda>»  s   € Ô1°,ÀÓG€ rL   rq   c                ó   — t        d| «      S )Nr{   r   r  s    rJ   r­   z DuckDBExpr.std.<locals>.<lambda>¿  s   € Ô1°-ÀÓH€ rL   c                ó€   •— t        d| «      }t        d| «      t        d|«      z  t        d|t        ‰«      z
  «      z  S )Nr"  rz   r$  ©r   r   ©rÄ   Ú	n_samplesrk   s     €rJ   Ú_stdzDuckDBExpr.std.<locals>._stdÂ  sF   ø€ Ü*¨7°FÓ;ˆIä" <°Ó8Ü$ V¨YÓ7ñ8ä% f¨y¼3¸t»9Ñ/DÓFñHðrL   r)  rÈ   )rD   rk   ra  s    ` rJ   ro   zDuckDBExpr.std¸  sW   ø€ Ø�1Š9Ø×&Ñ&ÙGóð ð �1Š9Ø×&Ñ&ÙHóð õ	ð ×"Ñ" 4Ó(Ð(rL   c                óŽ   ‡— ‰dk(  r| j                  d„ «      S ‰dk(  r| j                  d„ «      S dˆfd„}| j                  |«      S )Nr   c                ó   — t        d| «      S )Nrx   r   r  s    rJ   r­   z DuckDBExpr.var.<locals>.<lambda>Ï  s   € Ô1°)¸VÓD€ rL   rq   c                ó   — t        d| «      S )Nry   r   r  s    rJ   r­   z DuckDBExpr.var.<locals>.<lambda>Ó  s   € Ô1°*¸fÓE€ rL   c                óX   •— t        d| «      }t        d| «      |z  |t        ‰«      z
  z  S )Nr"  rx   r^  r_  s     €rJ   Ú_varzDuckDBExpr.var.<locals>._varÖ  s7   ø€ Ü*¨7°FÓ;ˆIä" 9¨fÓ5Øñàœs 4›yÑ(ñ*ðrL   r)  rÈ   )rD   rk   rf  s    ` rJ   rp   zDuckDBExpr.varÌ  sW   ø€ Ø�1Š9Ø×&Ñ&ÙDóð ð �1Š9Ø×&Ñ&ÙEóð õ	ð ×"Ñ" 4Ó(Ð(rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NrP  r   r  s    rJ   r­   z DuckDBExpr.max.<locals>.<lambda>á  r  rL   rÈ   rR   s    rJ   rP  zDuckDBExpr.maxà  r  rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚminr   r  s    rJ   r­   z DuckDBExpr.min.<locals>.<lambda>ä  r  rL   rÈ   rR   s    rJ   rk  zDuckDBExpr.minã  r  rL   c                ó&   — | j                  d„ «      S )Nc                óT   — t        d| j                  «       j                  d«      «      S )Nrm   rˆ   )r   Úisnullr	   r  s    rJ   r­   z'DuckDBExpr.null_count.<locals>.<lambda>è  s   € Ô-¨e°V·]±]³_×5IÑ5IÈ%Ó5PÓQ€ rL   rÈ   rR   s    rJ   Ú
null_countzDuckDBExpr.null_countæ  s   € Ø×"Ñ"ÙQó
ð 	
rL   r�   c                óê   ‡ ‡‡‡‡— ‰ j                   xŠ�‰€J ‚dˆˆˆ ˆfd„}nt        ‰Ž }d|› d�Šdˆ ˆfd„}‰ j                  |‰ j                  ‰ j                  ‰ j
                  ‰ j                  ¬«      S )Nc           
     ón   •— ‰j                  | «      D �cg c]  } ‰t        |‰‰«      «      ‘Œ c}S c c}w r<   )r=   r   )rN   r_   r]   r^   rD   r¾   s     €€€€rJ   rf   zDuckDBExpr.over.<locals>.funcð  s;   ø€ ð !%§
¡
¨2£öàñ $¤L°°|ÀXÓ$NÕOòð ùò s   •2z{expr} over (rw   c                ó~   •— ‰j                  | «      D �cg c]  }t        ‰j                  |¬«      «      ‘Œ c}S c c}w r“   )r=   r8   r”   r•   s     €€rJ   rf   zDuckDBExpr.over.<locals>.funcù  s9   ø€ àJNÏ*É*ÐUWË.öØBF”M (§/¡/°t /Ó"<Õ=òð ùò s   •":r—   r¢   )rB   r   r›   r>   r?   r@   rA   )rD   r^   r]   rf   rb   r–   r¾   s   ```  @@rJ   ÚoverzDuckDBExpr.overë  s‰   ü€ à#×4Ñ4Ð4ˆOÐAØÐ'Ð'Ð'÷ñ ô  9¸,ÐGÐØ(Ð)9Ð(:¸!Ð<ˆHöð
 �~‰~ØØ"&×"=Ñ"=Ø#×7Ñ7Ø ×1Ñ1Ø—M‘Mð ó 
ð 	
rL   c                ó&   — | j                  d„ «      S )Nc                ó"   — | j                  «       S r<   )rn  r  s    rJ   r­   z$DuckDBExpr.is_null.<locals>.<lambda>  s   € °&·-±-³/€ rL   rÈ   rR   s    rJ   Úis_nullzDuckDBExpr.is_null  s   € Ø×"Ñ"Ñ#AÓBÐBrL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚisnanr   r  s    rJ   r­   z#DuckDBExpr.is_nan.<locals>.<lambda>
  rV  rL   rÈ   rR   s    rJ   Úis_nanzDuckDBExpr.is_nan	  rW  rL   c                ó&   — | j                  d„ «      S )Nc                ó   — t        d| «      S )NÚisfiniter   r  s    rJ   r­   z&DuckDBExpr.is_finite.<locals>.<lambda>  r1  rL   rÈ   rR   s    rJ   Ú	is_finitezDuckDBExpr.is_finite  r3  rL   c                ó,   ‡— | j                  ˆfd„«      S )Nc                ó0   •— t        dt        ‰«      | «      S )NÚcontainsr^  rÃ   s    €rJ   r­   z"DuckDBExpr.is_in.<locals>.<lambda>  s   ø€ Ô-¨j¼#¸e»*ÀfÓM€ rL   rÈ   rÉ   s    `rJ   Úis_inzDuckDBExpr.is_in  ó   ø€ Ø×"Ñ"ÛMó
ð 	
rL   c                ó,   ‡— | j                  ˆfd„«      S )Nc                ó0   •— t        d| t        ‰«      «      S )NÚroundr^  )rÄ   Údecimalss    €rJ   r­   z"DuckDBExpr.round.<locals>.<lambda>  s   ø€ Ô-¨g°v¼sÀ8»}ÓM€ rL   rÈ   )rD   r‡  s    `rJ   r†  zDuckDBExpr.round  rƒ  rL   c                óR   ‡— t        ‰t        «       dˆfd„}| j                  |«      S )Nc           	     óš   •— t        | j                  ddiŽ}t        | j                  Ž }d| j                  › d‰› d|› d|› d�	}t        |«      S )NrY   Túlag(ú, rZ   r[   rw   r\   )r`   ra   rb   rc   Úns       €rJ   rf   zDuckDBExpr.shift.<locals>.func  sd   ø€ Ü0°-×2HÑ2HÐYÐTXÑYˆLÜ8¸-×:TÑ:TÐUÐà�}×)Ñ)Ð*¨"¨Q¨C¨xÐ8HÐ7IÈÈ<È.ÐXYÐZð ô ! Ó%Ð%rL   rg   )r   rˆ   rÀ   )rD   rŒ  rf   s    ` rJ   ÚshiftzDuckDBExpr.shift  s%   ø€ ä�A”sÔõ	&ð ×)Ñ)¨$Ó/Ð/rL   c                ó,   — dd„}| j                  |«      S )Nc                óþ   — t        | j                  ddiŽ}| j                  r#t        | j                  Ž d| j                  › �z   }nd| j                  › �}t        d«      › d|› d|› d�}t        |«      t        d	«      k(  S )
NrY   Tr‹  úpartition by Ú
row_numberú over(r[   rw   rq   ©r   r]   r^   r   r_   r   r8   r   ©r`   ra   rb   rc   s       rJ   rf   z*DuckDBExpr.is_first_distinct.<locals>.func)  s–   € Ü0°-×2HÑ2HÐYÐTXÑYˆLØ×)Ò)ä-¨}×/IÑ/IÐJØ˜=×-Ñ-Ð.Ð/ñ0ñ !ð
 &3°=×3EÑ3EÐ2FÐ#GÐ Ü'¨Ó5Ð6°fÐ=MÐ<NÈaÐP\È~Ð]^Ð_ˆCÜ  Ó%¬¨Q«Ñ/Ð/rL   rg   ©rÀ   r»   s     rJ   Úis_first_distinctzDuckDBExpr.is_first_distinct'  ó   € ó
	0ð ×)Ñ)¨$Ó/Ð/rL   c                ó,   — dd„}| j                  |«      S )Nc                óþ   — t        | j                  ddiŽ}| j                  r#t        | j                  Ž d| j                  › �z   }nd| j                  › �}t        d«      › d|› d|› d�}t        |«      t        d	«      k(  S )
NrY   Fr‹  r�  r‘  r’  r[   rw   rq   r“  r”  s       rJ   rf   z)DuckDBExpr.is_last_distinct.<locals>.func9  s–   € Ü0°-×2HÑ2HÐZÐTYÑZˆLØ×)Ò)ä-¨}×/IÑ/IÐJØ˜=×-Ñ-Ð.Ð/ñ0ñ !ð
 &3°=×3EÑ3EÐ2FÐ#GÐ Ü'¨Ó5Ð6°fÐ=MÐ<NÈaÐP\È~Ð]^Ð_ˆCÜ  Ó%¬¨Q«Ñ/Ð/rL   rg   r•  r»   s     rJ   Úis_last_distinctzDuckDBExpr.is_last_distinct7  r—  rL   c                ó,   — dd„}| j                  |«      S )Nc                ó¬   — t        | j                  ddiŽ}t        | j                  Ž }d| j                  › d|› d|› d�}| j                  t        |«      z
  S )NrY   TrŠ  rZ   r[   rw   r\   r”  s       rJ   rf   zDuckDBExpr.diff.<locals>.funcI  sc   € Ü0°-×2HÑ2HÐYÐTXÑYˆLÜ8¸-×:TÑ:TÐUÐØ˜×+Ñ+Ð,¨HÐ5EÐ4FÀaÈÀ~ÐUVÐWˆCØ ×%Ñ%¬°cÓ(:Ñ:Ð:rL   rg   r•  r»   s     rJ   ÚdiffzDuckDBExpr.diffG  s   € ó	;ð ×)Ñ)¨$Ó/Ð/rL   c               óF   — | j                  | j                  |d¬«      «      S )Nrm   ©re   rd   ©rÀ   rj   ©rD   re   s     rJ   Úcum_sumzDuckDBExpr.cum_sumQ  ó(   € à×)Ñ)Ø×!Ñ!¨'¸UÐ!ÓCó
ð 	
rL   c               óF   — | j                  | j                  |d¬«      «      S )NrP  rŸ  r   r¡  s     rJ   Úcum_maxzDuckDBExpr.cum_maxW  r£  rL   c               óF   — | j                  | j                  |d¬«      «      S )Nrk  rŸ  r   r¡  s     rJ   Úcum_minzDuckDBExpr.cum_min]  r£  rL   c               óF   — | j                  | j                  |d¬«      «      S )Nr"  rŸ  r   r¡  s     rJ   Ú	cum_countzDuckDBExpr.cum_countc  s(   € à×)Ñ)Ø×!Ñ!¨'¸WÐ!ÓEó
ð 	
rL   c               óF   — | j                  | j                  |d¬«      «      S )NÚproductrŸ  r   r¡  s     rJ   Úcum_prodzDuckDBExpr.cum_prodi  s(   € à×)Ñ)Ø×!Ñ!¨'¸YÐ!ÓGó
ð 	
rL   c               óJ   — | j                  | j                  d|||¬«      «      S )Nrm   ©rd   rŠ   r‹   r…   ©rÀ   rŽ   ©rD   r‹   r…   rŠ   s       rJ   Úrolling_sumzDuckDBExpr.rolling_sumo  s4   € à×)Ñ)Ø×%Ñ%ØØØ'Ø'ð	 &ó ó
ð 	
rL   c               óJ   — | j                  | j                  d|||¬«      «      S )Nrn   r®  r¯  r°  s       rJ   Úrolling_meanzDuckDBExpr.rolling_meanz  s4   € à×)Ñ)Ø×%Ñ%Ø ØØ'Ø'ð	 &ó ó
ð 	
rL   c          	     óL   — | j                  | j                  d||||¬«      «      S )Nrp   ©rd   rŠ   r‹   r…   rk   r¯  ©rD   r‹   r…   rŠ   rk   s        rJ   Úrolling_varzDuckDBExpr.rolling_var…  ó9   € ð ×)Ñ)Ø×%Ñ%ØØØ'Ø'Øð &ó ó
ð 	
rL   c          	     óL   — | j                  | j                  d||||¬«      «      S )Nro   rµ  r¯  r¶  s        rJ   Úrolling_stdzDuckDBExpr.rolling_std“  r¸  rL   c                ó¨   ‡‡— ‰�8| j                   dk  rd‰› d�}t        |«      ‚dˆˆfd„}| j                  |«      S dd„}| j                  ||¬«      S )	Nr�   z`fill_null` with `strategy=z%` is only available in DuckDB>=1.3.0.c           
     óÜ   •— t        | j                  ddiŽ}t        | j                  Ž }‰dk(  rdnd}‰€dn‰}‰dk(  r|› d�nd|› d	�}|› d
| j                  › d|› d|› d|› d�
}t        |«      S )NrY   TÚforwardÚ
last_valueÚfirst_valueÚ	unboundedz preceding and current rowzcurrent row and rs   ru   z ignore nulls) over (r[   rv   rw   r\   )	r`   ra   rb   Ú	fill_funcÚ_limitÚrows_betweenrc   ÚlimitÚstrategys	          €€rJ   Ú_fill_with_strategyz1DuckDBExpr.fill_null.<locals>._fill_with_strategy¬  s¸   ø€ Ü4Ø"×+Ñ+ð Ø7;ñ �ô $=¸m×>XÑ>XÐ#YÐ à,4¸	Ò,A™LÀ}�	Ø(-¨™¸5�ð   9Ò,ð �hÐ8Ñ9à+¨F¨8°:Ð>ð ð !�k  =×#5Ñ#5Ð"6ð 7Ø(Ð)¨¨<¨.¸À|ÀnÐTUðWð ô % SÓ)Ð)rL   c                ó   — t        | |«      S r<   r
   )rÄ   rƒ   s     rJ   Ú_fill_constantz,DuckDBExpr.fill_null.<locals>._fill_constantÁ  s   € Ü# F¨EÓ2Ð2rL   )rƒ   rg   )rÄ   ri   rƒ   r   rh   ri   )r@   rš   rÀ   r¹   )rD   rƒ   rÅ  rÄ  r€   rÆ  rÈ  s     ``   rJ   Ú	fill_nullzDuckDBExpr.fill_null¡  si   ù€ ð ÐØ×$Ñ$ vÒ-Ø3°H°:Ð=bÐc�Ü)¨#Ó.Ð.ö*ð& ×-Ñ-Ð.AÓBÐBó	3ð ×"Ñ" >¸Ð"Ó?Ð?rL   c                ó6   ‡ ‡— dˆˆ fd„}‰ j                  |«      S )Nc                ód   •— t        ‰‰j                  «      }| j                  t        |«      «      S r<   )r    rA   r	   r   )rÄ   Únative_dtypeÚdtyperD   s     €€rJ   rf   zDuckDBExpr.cast.<locals>.funcÇ  s'   ø€ Ü3°E¸4¿=¹=ÓIˆLØ—;‘;œ|¨LÓ9Ó:Ð:rL   r)  rÈ   )rD   rÍ  rf   s   `` rJ   r	   zDuckDBExpr.castÆ  s   ù€ ö	;ð ×"Ñ" 4Ó(Ð(rL   c                ó,   — dd„}| j                  |«      S )Nc                ó<   — d| › d�}t        |«      t        d«      k(  S )Nzcount(*) over (partition by rw   rq   )r8   r   )rÄ   rc   s     rJ   rf   z"DuckDBExpr.is_unique.<locals>.funcÏ  s$   € Ø0°°¸Ð:ˆCÜ  Ó%¬¨Q«Ñ/Ð/rL   r)  rÈ   r»   s     rJ   Ú	is_uniquezDuckDBExpr.is_uniqueÍ  s   € ó	0ð ×"Ñ" 4Ó(Ð(rL   c               óÊ   ‡‡‡— | j                   dk  rd}t        |«      ‚‰dv rt        d«      Šn‰dk(  rt        d«      Šnt        d«      Šd	ˆˆˆfd„}| j                  |«      S )
Nr�   z6At least version 1.3 of DuckDB is required for `rank`.>   rP  rk  ÚaverageÚrankÚdenseÚ
dense_rankr‘  c                ó’  •— ‰r| › d�}n| › d�}d|› �}t        dt        «       «      }‰dk(  r0t        ‰› d|› d�«      t        |› d| › d�«      z   t        d	«      z
  }nR‰d
k(  r<t        ‰› d|› d�«      t        |› d| › d�«      t        d	«      z
  t        d«      z  z   }nt        ‰› d|› d�«      }t	        | j                  «       |«      S )Nz desc nulls lastz asc nulls lastz	order by r"  rP  z OVER (rw   z OVER (PARTITION BY rq   rÒ  g       @)r   r   r8   r   r!   rQ  )rÄ   Úby_sqlra   Ú
count_exprr_   Ú
descendingrf   Úmethods        €€€rJ   Ú_rankzDuckDBExpr.rank.<locals>._ranká  s  ø€ ÙØ"˜8Ð#3Ð4‘à"˜8 ?Ð3�Ø& v hÐ/ˆLÜ+¨G´^Ó5EÓFˆJà˜Šä! T F¨'°,°¸qÐ"AÓBÜ# z lÐ2FÀvÀhÈaÐ$PÓQñRä˜!“fññ ð
 ˜9Ò$Ü$¨ v¨W°\°NÀ!Ð%DÓEÜ! Z LÐ0DÀVÀHÈAÐ"NÓOÔRUÐVWÓRXÑXÜ˜“HñIñ ‘ô %¨ v¨W°\°NÀ!Ð%DÓE�ä˜×(Ñ(Ó*¨DÓ1Ð1rL   r)  )r@   rš   r   r¹   )rD   rÚ  rÙ  r€   rÛ  rf   s    ``  @rJ   rÓ  zDuckDBExpr.rankÕ  sh   ú€ à× Ñ  6Ò)ØJˆCÜ% cÓ*Ð*ØÐ.Ñ.Ü% fÓ-‰DØ�wÒÜ% lÓ3‰Dä% lÓ3ˆD÷	2ð. ×"Ñ" 5Ó)Ð)rL   c                ó   — t        | «      S r<   r   rR   s    rJ   ÚstrzDuckDBExpr.strú  ó   € ä(¨Ó.Ð.rL   c                ó   — t        | «      S r<   r   rR   s    rJ   ÚdtzDuckDBExpr.dtþ  s   € ä*¨4Ó0Ð0rL   c                ó   — t        | «      S r<   r   rR   s    rJ   ÚlistzDuckDBExpr.list  s   € ä& tÓ,Ð,rL   c                ó   — t        | «      S r<   r   rR   s    rJ   ÚstructzDuckDBExpr.struct  rÞ  rL   )rE   z.EvalSeries[DuckDBLazyFrame, duckdb.Expression]rF   úEvalNames[DuckDBLazyFrame]rG   úAliasNames | NonerH   ztuple[int, ...]rI   r6   rh   ÚNoner˜   )rh   rç  )rh   r,   )re   Úboolrd   z0Literal['sum', 'max', 'min', 'count', 'product']rh   r-   )rd   z$Literal['sum', 'mean', 'std', 'var']rŠ   rè  r‹   rˆ   r…   rˆ   rk   ú
int | Nonerh   r-   )rœ   z/Literal[ExprKind.AGGREGATION, ExprKind.LITERAL]rh   r&   )r¡   rå  r¥   r7   rh   r&   )r«   rˆ   r¥   r7   rh   r&   )rE   r  r¸   z
Self | Anyrh   r&   )rf   ræ  rh   r&   )r¾   r-   rh   r&   )rÅ   r:   rh   r&   )rh   r&   )r    rÝ  rh   r&   )r=  r'  r<  r4   rh   r&   )rA  ú.Self | NumericLiteral | TemporalLiteral | NonerE  rê  rh   r&   )rk   rˆ   rh   r&   )r^   r  r]   zSequence[str] | Nonerh   r&   )rÅ   zSequence[Any]rh   r&   )r‡  rˆ   rh   r&   )rŒ  rˆ   rh   r&   )re   rè  rh   r&   )r‹   rˆ   r…   rˆ   rŠ   rè  rh   r&   )
r‹   rˆ   r…   rˆ   rŠ   rè  rk   rˆ   rh   r&   )rƒ   zSelf | NonNestedLiteralrÅ  zFillNullStrategy | NonerÄ  ré  rh   r&   )rÍ  zDType | type[DType]rh   r&   )rÚ  r3   rÙ  rè  rh   r&   )rh   r   )rh   r   )rh   r   )rh   r   )[Ú__name__Ú
__module__Ú__qualname__r#   ÚDUCKDBÚ_implementationrK   rO   rS   rV   rj   rŽ   r�   Úclassmethodr¦   r®   r¹   r¼   rÀ   rÊ   rÎ   rÑ   rÔ   rÚ   rÞ   rá   rå   ré   rí   rð   ró   rö   rù   rü   rÿ   r  r  r
  r  r  rÙ   r  rn   r*  r-  r2  r7  r=  rI  rm   rR  r"  r  ro   rp   rP  rk  ro  r%   rH   rs  rv  rz  r~  r‚  r†  r�  r–  rš  r�  r¢  r¥  r§  r©  r¬  r±  r³  r·  rº  rÉ  r	   rÐ  rÓ  ÚpropertyrÝ  rà  râ  rä  r$   Ú
drop_nullsÚuniquerQ   rL   rJ   r:   r:   <   s[  „ Ø$×+Ñ+€Oð3à<ð3ð  :ð	3ð
 .ð3ð )ð3ð ð3ð 
ó3ó"ó -ó
ðð ðð Dð	ð
 
óð4  ñ.ð 8ð.ð ð	.ð
 ð.ð ð.ð ð.ð 
ó.ó`
ð( ð
à9ð
ð
 ð
ð 
ò
ó ð
ð$ ò
ó ð
ð
Ø4ð
ØPZð
à	ó
ó>
ó	óVóVóVóVóó

ó
ó

ó
ó
Vóó
VóUóó
VóVóWóWóWóWó+óAóUóVó)ó"XóZóYð	)Øð	)Ø.Hð	)à	ó	)ð
àCð
ð Dð
ð 
ó	
ó4Uó	)óWóOó)ó()ó(UóUó
ð
 €X×Ñ˜fÓ%ò
ó &ð
ó4CóWóZó
ó

ð
 €X×Ñ˜fÓ%ò0ó &ð0ð €X×Ñ˜fÓ%ò0ó &ð0ð €X×Ñ˜fÓ%ò0ó &ð0ð €X×Ñ˜fÓ%ò0ó &ð0ð €X×Ñ˜fÓ%ò
ó &ð
ð
 €X×Ñ˜fÓ%ò
ó &ð
ð
 €X×Ñ˜fÓ%ò
ó &ð
ð
 €X×Ñ˜fÓ%ò
ó &ð
ð
 €X×Ñ˜fÓ%ò
ó &ð
ð
 €X×Ñ˜fÓ%ò
ó &ð
ð €X×Ñ˜fÓ%ò
ó &ð
ð €X×Ñ˜fÓ%ð
Øð
Ø03ð
Ø=Að
ØILð
à	ò
ó &ð
ð €X×Ñ˜fÓ%ð
Øð
Ø03ð
Ø=Að
ØILð
à	ò
ó &ð
ð#@à&ð#@ð *ð#@ð ð	#@ð
 
ó#@óJ)ð €X×Ñ˜fÓ%ò)ó &ð)ð €X×Ñ˜fÓ%ò"*ó &ð"*ðH ò/ó ð/ð ò1ó ð1ð ò-ó ð-ð ò/ó ð/ñ !Ó"€JÙÓ�FrL   r:   )r*   ri   )FÚ
__future__r   Ú
contextlibr  Útypingr   r   r   r   r   r	   Úduckdbr   r   r   Úduckdb.typingr   Únarwhals._compliantr   Únarwhals._duckdb.expr_dtr   Únarwhals._duckdb.expr_listr   Únarwhals._duckdb.expr_strr   Únarwhals._duckdb.expr_structr   Únarwhals._duckdb.utilsr   r   r   r   r   r   r    r!   Únarwhals._expression_parsingr"   Únarwhals.utilsr#   r$   r%   Útyping_extensionsr&   Únarwhals._compliant.typingr'   r(   r)   Únarwhals._duckdb.dataframer*   rU   r,   Únarwhals._duckdb.typingr-   r.   Únarwhals.dtypesr/   Únarwhals.typingr0   r1   r2   r3   r4   r5   r6   r7   ÚsuppressÚImportErrorr8   r:   rQ   rL   rJ   ú<module>r	     sÔ   ðÝ "ã Û Ý  Ý Ý Ý Ý Ý å #Ý %Ý !Ý &å (Ý @Ý >Ý ?Ý BÝ /Ý &Ý .Ý 8Ý <Ý &Ý ;Ý 'Ý 1Ý )Ý *Ý #áÛÝ&å5Ý4Ý5Ý:Ý:Ý6Ý9Ý%Ý0Ý0Ý.Ý*Ý:Ý/Ý&Ý+à€Z×Ñ˜Ó%ñ %Ý$÷%ôO�Ð@ÑAõ O÷	%ð %ús   Ä/EÅE