Ë
    ðmxiò  ã                  ó,  — d dl mZ d dlZd dl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 d dlmZ d dlmZmZ d dlmZ d d	lmZmZmZmZ er0d d
lmZ d dl m!Z! d dlmZmZ d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+  G d„ deeef   e	eef   «      Z,y)é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚProtocol)ÚLazyExpr)Ú
AliasNamesÚ	EvalNamesÚ
EvalSeriesÚNativeExprTÚWindowFunction)ÚWindowInputs)Úcombine_alias_output_namesÚcombine_evaluate_output_names)ÚSQLLazyFrameT)ÚImplementationÚVersionÚextend_boolÚnot_implemented)ÚSequence)ÚSelf)r
   r   )ÚSQLExprDateTimeNamesSpace)ÚSQLExprStringNamespace)ÚSQLNamespace)ÚModeKeepStrategyÚPythonLiteralÚ
RankMethodc                  ó²  — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   	 dlej
                  dœ	 	 	 	 	 	 	 	 	 	 	 	 	 dmd„Zdnd„Z	 	 dod„Z	 	 	 	 	 	 dpd„Z		 	 	 	 	 	 dqd„Z
	 	 	 	 drd„Z	 dl	 	 	 	 	 	 	 dsd„Z	 	 	 	 	 	 dtd„Zdud„Zdvd„Zedwd„«       Zdxd„Zdyd„Zdzd„Zd{d„Zd|d„Zd|d„Zd}d „Z	 dl	 	 	 	 	 	 	 d~d!„Z	 	 	 	 dddd"œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d€d#„Z	 	 	 	 	 	 d�d$„Z	 dl	 	 	 	 	 	 	 	 	 	 	 d‚d%„Zedƒd&„«       Zed„d'„«       Ze	 	 	 	 	 	 d…d(„«       Z d†d)„Z!d‡d*„Z"d‡d+„Z#d‡d,„Z$d‡d-„Z%d‡d.„Z&d‡d/„Z'd‡d0„Z(d‡d1„Z)d‡d2„Z*d‡d3„Z+d‡d4„Z,d‡d5„Z-d‡d6„Z.d‡d7„Z/d‡d8„Z0d‡d9„Z1d‡d:„Z2d‡d;„Z3d‡d<„Z4d‡d=„Z5dˆd>„Z6dˆd?„Z7dˆd@„Z8dˆdA„Z9d‰dB„Z:d‰dC„Z;dˆdD„Z<dŠdE„Z=dˆdF„Z>dˆdG„Z?dˆdH„Z@dˆdI„ZAdˆdJ„ZBd‹dK„ZCdŒdL„ZDd�dM„ZEdˆdN„ZFdŽdO„ZGdˆdP„ZHdˆdQ„ZIdˆdR„ZJdˆdS„ZKdˆdT„ZLd�dU„ZMd�dV„ZNd�dW„ZOd�dX„ZPd�dY„ZQd�dZ„ZRd‘d[„ZSd‘d\„ZT	 	 	 	 	 	 	 	 	 	 d’d]„ZU	 	 	 	 	 	 	 	 	 	 d’d^„ZVdˆd_„ZWd“d`„ZXdˆda„ZYdˆdb„ZZdˆdc„Z[dˆdd„Z\d”de„Z]d•df„Z^dˆdg„Z_	 	 	 	 	 	 d–dh„Z`d—di„Zaed˜dj„«       Zbed™dk„«       Zc ed«       Ze ed«       Zf ed«       Zgy)šÚSQLExprú&EvalSeries[SQLLazyFrameT, NativeExprT]Ú_callúEvalNames[SQLLazyFrameT]Ú_evaluate_output_namesúAliasNames | NoneÚ_alias_output_namesr   Ú_versionr   Ú_implementationú1WindowFunction[SQLLazyFrameT, NativeExprT] | NoneÚ_window_functionN)Úimplementationc                ó   — y ©N© )ÚselfÚcallÚwindow_functionÚevaluate_output_namesÚalias_output_namesÚversionr+   s          úI/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_sql/expr.pyÚ__init__zSQLExpr.__init__*   s   € ð ó    c                ó$   — | j                  |«      S r-   )r"   )r/   Údfs     r5   Ú__call__zSQLExpr.__call__5   s   € Ø�z‰z˜"‹~Ðr7   c                 ó   — y r-   r.   ©r/   s    r5   Ú__narwhals_namespace__zSQLExpr.__narwhals_namespace__8   s   € à>Ar7   c               ó   ‡ ‡‡— dˆˆˆ fd„}|S )Nc                ó¼   •—  ‰| «      }‰j                  «       D ��ci c]  \  }}|| j                  |«      “Œ }}}|D �cg c]  } ‰|fi |¤Ž‘Œ c}S c c}}w c c}w r-   )ÚitemsÚ_evaluate_single_output_expr)	r9   Únative_series_listÚkeyÚvalueÚother_native_seriesÚnative_seriesr0   Úexpressifiable_argsr/   s	         €€€r5   Úfuncz.SQLExpr._callable_to_eval_series.<locals>.func?   s|   ø€ Ù!% b£Ðð #6×";Ñ";Ó"=÷#á�C˜ð �R×4Ñ4°UÓ;Ñ;ð#Ðñ #ð &8öà!ñ �]Ñ:Ð&9Ó:òð ùó	#ùòs   �AÁ A)r9   r   Úreturnzlist[NativeExprT]r.   )r/   r0   rG   rH   s   ``` r5   Ú_callable_to_eval_seriesz SQLExpr._callable_to_eval_series<   s   ú€ ÷		ð ˆr7   c               ó(   ‡ ‡‡— 	 	 	 	 	 	 dˆˆˆ fd„}|S )Nc           	     óÒ   •— ‰	j                  | |«      }‰j                  «       D ��ci c]  \  }}|| j                  ||«      “Œ }}}|D �cg c]  } ‰|fi |¤Ž‘Œ c}S c c}}w c c}w r-   )r1   r@   Ú_evaluate_window_expr)
r9   Úwindow_inputsrB   rC   rD   rE   rF   r0   rG   r/   s
          €€€r5   Úwindow_fz4SQLExpr._push_down_window_function.<locals>.window_fO   s‰   ø€ ð "&×!5Ñ!5°b¸-Ó!HÐð #6×";Ñ";Ó"=÷#á�C˜ð �R×-Ñ-¨e°]ÓCÑCð#Ðñ #ð &8öà!ñ �]Ñ:Ð&9Ó:òð ùó	#ùòs   §AÁA$©r9   r   rN   úWindowInputs[NativeExprT]rI   úSequence[NativeExprT]r.   )r/   r0   rG   rO   s   ``` r5   Ú_push_down_window_functionz"SQLExpr._push_down_window_functionL   s'   ú€ ð	Øð	Ø.Gð	à"÷	ð$ ˆr7   c                ó”   — | j                  | j                  || j                  | j                  | j                  | j
                  ¬«      S ©N©r2   r3   r4   r+   )Ú	__class__r"   r$   r&   r'   r(   )r/   r1   s     r5   Ú_with_window_functionzSQLExpr._with_window_functionc   sF   € ð �~‰~Ø�J‰JØØ"&×"=Ñ"=Ø#×7Ñ7Ø—M‘MØ×/Ñ/ð ó 
ð 	
r7   c               ó¢   — | j                   | j                  |fi |¤Ž|| j                  | j                  | j                  | j
                  ¬«      S rU   )rW   rJ   r$   r&   r'   r(   )r/   r0   Úwindow_funcrG   s       r5   Ú_with_callablezSQLExpr._with_callableo   sU   € ð �~‰~Ø)ˆD×)Ñ)¨$ÑFÐ2EÑFØØ"&×"=Ñ"=Ø#×7Ñ7Ø—M‘MØ×/Ñ/ð ó 
ð 	
r7   c               óÄ   — | j                   | j                  |fi |¤Ž | j                  |fi |¤Ž| j                  | j                  | j
                  | j                  ¬«      S rU   ©rW   rJ   rS   r$   r&   r'   r(   )r/   r0   rG   s      r5   Ú_with_elementwisezSQLExpr._with_elementwise   sh   € ð �~‰~Ø)ˆD×)Ñ)¨$ÑFÐ2EÑFØ+ˆD×+Ñ+¨DÑHÐ4GÑHØ"&×"=Ñ"=Ø#×7Ñ7Ø—M‘MØ×/Ñ/ð ó 
ð 	
r7   c                óÄ   — | j                  | j                  ||¬«      | j                  ||¬«      | j                  | j                  | j
                  | j                  ¬«      S )N©ÚotherrV   r]   )r/   Úopra   s      r5   Ú_with_binaryzSQLExpr._with_binary‹   s`   € Ø�~‰~Ø×)Ñ)¨"°EÐ)Ó:Ø×+Ñ+¨B°eÐ+Ó<Ø"&×"=Ñ"=Ø#×7Ñ7Ø—M‘MØ×/Ñ/ð ó 
ð 	
r7   c               óÌ   ‡‡— | j                   Š‰€d n	‰€‰nˆˆfd„} t        | «      | j                  | j                  | j                  || j
                  | j                  ¬«      S )Nc                ó    •—  ‰ ‰| «      «      S r-   r.   )Úoutput_namesÚcurrent_alias_output_namesrH   s    €€r5   ú<lambda>z2SQLExpr._with_alias_output_names.<locals>.<lambda>œ   s   ø€ ¡dÑ+EÀlÓ+SÓ&T€ r7   rV   )r&   Útyper"   r*   r$   r'   r(   )r/   rH   r3   rg   s    ` @r5   Ú_with_alias_output_namesz SQLExpr._with_alias_output_names•   sq   ù€ Ø%)×%=Ñ%=Ð"ð ˆ|ñ ð *Ð1ñ äTð 	ð Œt�D‹zØ�J‰JØ×!Ñ!Ø"&×"=Ñ"=Ø1Ø—M‘MØ×/Ñ/ô
ð 	
r7   c                ó<   ‡ — 	 	 	 	 	 	 dˆ fd„}‰ j                   xs |S )Nc                óŠ   •— |j                   rJ ‚ ‰| «      D �cg c]  }‰j                  ||j                  «      ‘Œ  c}S c c}w r-   )Úorder_byÚ_window_expressionÚpartition_by©r9   ÚinputsÚexprr/   s      €r5   Údefault_window_funcz4SQLExpr.window_function.<locals>.default_window_func©   sG   ø€ ð —’Ð&Ð&áOSÐTVËxöØGK�×'Ñ'¨¨f×.AÑ.AÕBòð ùò s   š#A ©r9   r   rq   rQ   rI   rR   )r*   )r/   rs   s   ` r5   r1   zSQLExpr.window_function§   s4   ø€ ð	Øð	Ø'@ð	à"õ	ð ×$Ñ$Ò;Ð(;Ð;r7   c                óD   —  | j                  «       j                  |g|¢­Ž S r-   )r=   Ú	_function)r/   ÚnameÚargss      r5   rv   zSQLExpr._function³   s#   € Ø6ˆt×*Ñ*Ó,×6Ñ6°tÐC¸dÒCÐCr7   c                ó@   — | j                  «       j                  |«      S r-   )r=   Ú_lit)r/   rD   s     r5   rz   zSQLExpr._lit¶   s   € Ø×*Ñ*Ó,×1Ñ1°%Ó8Ð8r7   c                ó<   —  | j                  «       j                  |Ž S r-   )r=   Ú	_coalesce)r/   rr   s     r5   r|   zSQLExpr._coalesce¹   s   € Ø6ˆt×*Ñ*Ó,×6Ñ6¸Ð=Ð=r7   c                 ó   — y r-   r.   r<   s    r5   Ú_count_starzSQLExpr._count_star¼   ó   � r7   c                 ó   — y r-   r.   ©r/   rr   rm   s      r5   Ú_firstzSQLExpr._first½   r   r7   c                 ó   — y r-   r.   r�   s      r5   Ú_lastzSQLExpr._last¾   r   r7   c                ó   — y r-   r.   )r/   rr   Úignore_nullss      r5   Ú
_any_valuezSQLExpr._any_value¿   r   r7   c                óD   — | j                  «       j                  |||«      S r-   )r=   Ú_when)r/   Ú	conditionrD   Ú	otherwises       r5   r‰   zSQLExpr._whenÀ   s"   € ð ×*Ñ*Ó,×2Ñ2°9¸eÀYÓOÐOr7   ©Ú
descendingÚ
nulls_lastc                ó   — y r-   r.   )r/   rr   ro   rm   Ú
rows_startÚrows_endr�   rŽ   s           r5   rn   zSQLExpr._window_expressionÈ   s   € ð r7   c               ó(   ‡ ‡‡— 	 	 	 	 	 	 dˆˆˆ fd„}|S )Nc                ó,  •— t        ‰t        |j                  «      «      } ‰| «      D �cg c]^  }‰j                  ‰j	                  d|«       ‰j                  ‰j	                  ‰|«      |j                  |j                  ||d¬«      «      ‘Œ` c}S c c}w )NÚisnullr   ©r�   rŽ   r‘   )r   Úlenrm   r‰   rv   rn   ro   )r9   rq   Úflagsrr   Ú	func_nameÚreverser/   s       €€€r5   rH   z&SQLExpr._cum_window_func.<locals>.func×   s–   ø€ ô   ¬¨V¯_©_Ó)=Ó>ˆEñ ! ›Höð ð —
‘
Ø—^‘^ H¨dÓ3Ð3Ø×+Ñ+ØŸ™ y°$Ó7Ø×+Ñ+ØŸ™Ø#(Ø#(Ø!"ð ,ó õ
òð ùò s   «A#Brt   r.   )r/   r˜   r™   rH   s   ``` r5   Ú_cum_window_funczSQLExpr._cum_window_funcÔ   s'   ú€ ð	Øð	Ø'@ð	à"÷	ð& ˆr7   c               ó†   ‡ ‡‡‡‡	‡
‡— g d¢Š|r|dz
  dz  }|dz
  dz  }||z    Š
|Š	n|dz
   Š
dŠ		 	 	 	 	 	 dˆˆ	ˆˆˆ ˆ
ˆfd„}|S )N)ÚsumÚmeanÚstdÚvaré   é   r   c                óþ  •— ‰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        |«      ‚|j                  |j                  ‰‰dœ} ‰
| «      D �cg c]h  }‰
j                   ‰
j                  ‰
j                  d|«      fi |¤Ž‰
j                  ‰	«      k\   ‰
j                  ‰
j                  ||«      fi |¤Ž«      ‘Œj c}S c c}w )N>   rœ   r�   rŸ   r   Úvar_popr    Úvar_samprž   Ú
stddev_popÚstddev_samp>   rž   rŸ   z;Only ddof=0 and ddof=1 are currently supported for rolling_ú.z,Only the following functions are supported: z.
Got: )ro   rm   r�   r‘   Úcount)Ú
ValueErrorro   rm   r‰   rn   rv   rz   )r9   rq   Úfunc_ÚmsgÚwindow_kwargsrr   ÚddofÚendr˜   Úmin_samplesr/   ÚstartÚsupported_funcss         €€€€€€€r5   rH   z*SQLExpr._rolling_window_func.<locals>.funcÿ   sM  ø€ ð ˜OÑ+Ø&‘Ø˜eÒ#¨°ª	Ø!‘Ø˜eÑ#¨°ª	Ø"‘Ø˜eÒ#¨°ª	Ø$‘Ø˜eÒ#¨°ª	Ø%‘Ø˜nÑ,ØSÐT]ÐS^Ð^_Ð`�Ü  “oÐ%àDÀ_ÐDUÐU]Ð^gÐ]hÐhiÐj�Ü  “oÐ%à &× 3Ñ 3Ø"ŸO™OØ#Øñ	"ˆMñ ! ›Hö	ð ð —
‘
Ø+�D×+Ñ+ØŸ™ w°Ó5ñØ9Fñð —y‘y Ó-ñ.ð ,�D×+Ñ+¨D¯N©N¸5À$Ó,GÑYÈ=ÑYõò	ð 	ùò 	s   Â
A-C:rt   r.   )r/   r˜   Úwindow_sizer¯   r­   ÚcenterÚhalfÚ	remainderrH   r®   r°   r±   s   `` ``    @@@r5   Ú_rolling_window_funczSQLExpr._rolling_window_funcì   sv   þ€ ò 8ˆÙØ !‘O¨Ñ)ˆDØ$ q™¨AÑ-ˆIØ˜YÑ&Ð'ˆEØ‰Cà! A‘oÐ&ˆEØˆCð"	Øð"	Ø'@ð"	à"÷"	ó "	ðH ˆr7   c                ó6   — | j                   j                  «       S r-   )r(   Ú_backend_versionr<   s    r5   r¸   zSQLExpr._backend_version%  s   € à×#Ñ#×4Ñ4Ó6Ð6r7   c                ó   — y r-   r.   )Úclsrr   rw   s      r5   Ú_alias_nativezSQLExpr._alias_native)  s   € ØLOr7   c                ó”   ‡‡— dˆˆfd„}	 	 	 	 	 	 dˆˆfd„}‰d   } | ||t        ‰Ž t        ‰Ž |j                  |j                  ¬«      S )Nc           	     ó\   •—  ‰‰D ��cg c]  } || «      D ]  }|‘Œ Œ c}}«      gS c c}}w r-   r.   )r9   rr   ÚeÚexprsrH   s      €€r5   r0   z5SQLExpr._from_elementwise_horizontal_op.<locals>.call0  s/   ø€ Ù¨×@ ±t¸B³xÒ@°!š!Ð@˜!Ó@ÓAÐBÐBùÓ@s   ‰(
c                ór   •— ‰D ��cg c]  }|j                  | |«      D ]  }|‘Œ Œ }}} ‰|«      gS c c}}w r-   )r1   )r9   rN   rr   r¾   Úlstr¿   rH   s        €€r5   r1   z@SQLExpr._from_elementwise_horizontal_op.<locals>.window_function3  sC   ø€ ð "'×X˜°×0DÑ0DÀRÈÓ0WÒX¨1’1ÐX�1ÐXˆCÑXÙ˜“I�;Ðùó Ys   ‡ 3r   )r1   r2   r3   r4   r+   ©r9   r   rI   rR   rP   )r   r   r'   r(   )rº   rH   r¿   r0   r1   Úcontexts    ``   r5   Ú_from_elementwise_horizontal_opz'SQLExpr._from_elementwise_horizontal_op,  sf   ù€ ö	Cð	Øð	Ø.Gð	à"ö	ð ˜‘(ˆÙØØ+Ü"?ÀÐ"GÜ9¸5ÐAØ×$Ñ$Ø"×2Ñ2ô
ð 	
r7   c                óJ   — | j                   j                  j                  «       S )a	  Return `True` for multi-output aggregations without names.

        For example, column `'a'` only appears in the output as a grouping key:

            df.group_by('a').agg(nw.all().sum())

        It does not get included in:

            nw.all().sum().
        )Ú	_metadataÚexpansion_kindÚis_multi_unnamedr<   s    r5   Ú_is_multi_output_unnamedz SQLExpr._is_multi_output_unnamedC  s   € ð �~‰~×,Ñ,×=Ñ=Ó?Ð?r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__eq__©rr   ra   s     r5   rh   z SQLExpr.__eq__.<locals>.<lambda>R  ó   € °T·[±[ÀÓ5G€ r7   ©rc   ©r/   ra   s     r5   rÌ   zSQLExpr.__eq__Q  ó   € Ø× Ñ Ñ!GÈÓOÐOr7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__ne__rÍ   s     r5   rh   z SQLExpr.__ne__.<locals>.<lambda>U  rÎ   r7   rÏ   rÐ   s     r5   rÔ   zSQLExpr.__ne__T  rÑ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__add__rÍ   s     r5   rh   z!SQLExpr.__add__.<locals>.<lambda>X  ó   € °T·\±\À%Ó5H€ r7   rÏ   rÐ   s     r5   r×   zSQLExpr.__add__W  ó   € Ø× Ñ Ñ!HÈ%ÓPÐPr7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__sub__rÍ   s     r5   rh   z!SQLExpr.__sub__.<locals>.<lambda>[  rØ   r7   rÏ   rÐ   s     r5   rÜ   zSQLExpr.__sub__Z  rÙ   r7   c                óF   — | j                  d„ |«      j                  d«      S )Nc                ó   — || z
  S r-   r.   rÍ   s     r5   rh   z"SQLExpr.__rsub__.<locals>.<lambda>^  ó
   € °U¸T±\€ r7   Úliteral©rc   ÚaliasrÐ   s     r5   Ú__rsub__zSQLExpr.__rsub__]  ó"   € Ø× Ñ Ñ!AÀ5ÓI×OÑOÐPYÓZÐZr7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__mul__rÍ   s     r5   rh   z!SQLExpr.__mul__.<locals>.<lambda>a  rØ   r7   rÏ   rÐ   s     r5   rç   zSQLExpr.__mul__`  rÙ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__truediv__rÍ   s     r5   rh   z%SQLExpr.__truediv__.<locals>.<lambda>d  s   € °T×5EÑ5EÀeÓ5L€ r7   rÏ   rÐ   s     r5   rê   zSQLExpr.__truediv__c  s   € Ø× Ñ Ñ!LÈeÓTÐTr7   c                óF   — | j                  d„ |«      j                  d«      S )Nc                ó   — || z  S r-   r.   rÍ   s     r5   rh   z&SQLExpr.__rtruediv__.<locals>.<lambda>g  rß   r7   rà   rá   rÐ   s     r5   Ú__rtruediv__zSQLExpr.__rtruediv__f  rä   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__pow__rÍ   s     r5   rh   z!SQLExpr.__pow__.<locals>.<lambda>j  rØ   r7   rÏ   rÐ   s     r5   rð   zSQLExpr.__pow__i  rÙ   r7   c                óF   — | j                  d„ |«      j                  d«      S )Nc                ó   — || z  S r-   r.   rÍ   s     r5   rh   z"SQLExpr.__rpow__.<locals>.<lambda>m  s
   € °U¸D±[€ r7   rà   rá   rÐ   s     r5   Ú__rpow__zSQLExpr.__rpow__l  s!   € Ø× Ñ Ñ!@À%ÓH×NÑNÈyÓYÐYr7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__mod__rÍ   s     r5   rh   z!SQLExpr.__mod__.<locals>.<lambda>p  rØ   r7   rÏ   rÐ   s     r5   rö   zSQLExpr.__mod__o  rÙ   r7   c                óF   — | j                  d„ |«      j                  d«      S )Nc                ó   — || z  S r-   r.   rÍ   s     r5   rh   z"SQLExpr.__rmod__.<locals>.<lambda>s  rß   r7   rà   rá   rÐ   s     r5   Ú__rmod__zSQLExpr.__rmod__r  rä   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__ge__rÍ   s     r5   rh   z SQLExpr.__ge__.<locals>.<lambda>v  rÎ   r7   rÏ   rÐ   s     r5   rü   zSQLExpr.__ge__u  rÑ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__gt__rÍ   s     r5   rh   z SQLExpr.__gt__.<locals>.<lambda>y  rÎ   r7   rÏ   rÐ   s     r5   rÿ   zSQLExpr.__gt__x  rÑ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__le__rÍ   s     r5   rh   z SQLExpr.__le__.<locals>.<lambda>|  rÎ   r7   rÏ   rÐ   s     r5   r  zSQLExpr.__le__{  rÑ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__lt__rÍ   s     r5   rh   z SQLExpr.__lt__.<locals>.<lambda>  rÎ   r7   rÏ   rÐ   s     r5   r  zSQLExpr.__lt__~  rÑ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__and__rÍ   s     r5   rh   z!SQLExpr.__and__.<locals>.<lambda>‚  rØ   r7   rÏ   rÐ   s     r5   r  zSQLExpr.__and__�  rÙ   r7   c                ó(   — | j                  d„ |«      S )Nc                ó$   — | j                  |«      S r-   )Ú__or__rÍ   s     r5   rh   z SQLExpr.__or__.<locals>.<lambda>…  rÎ   r7   rÏ   rÐ   s     r5   r  zSQLExpr.__or__„  rÑ   r7   c                ó6   ‡ — dˆ fd„}‰ j                  ||¬«      S )Nc                ó”   •— ‰j                  |‰j                  d«      k7  t        j                  | |«      ‰j                  d «      «      S ©Nr   ©r‰   rz   rb   Úfloordiv©rr   ra   r/   s     €r5   rH   z"SQLExpr.__floordiv__.<locals>.funcˆ  s;   ø€ Ø—:‘:Ø˜Ÿ™ 1›Ñ%¤r§{¡{°4¸Ó'?ÀÇÁÈ4Ãóð r7   r`   ©rr   r   ra   r   rI   r   rÏ   ©r/   ra   rH   s   `  r5   Ú__floordiv__zSQLExpr.__floordiv__‡  s    ø€ õ	ð
 × Ñ  ¨UÐ Ó3Ð3r7   c                óT   ‡ — dˆ fd„}‰ j                  ||¬«      j                  d«      S )Nc                ó”   •— ‰j                  | ‰j                  d«      k7  t        j                  || «      ‰j                  d «      «      S r  r  r  s     €r5   rH   z#SQLExpr.__rfloordiv__.<locals>.func�  s;   ø€ Ø—:‘:Ø˜Ÿ	™	 !›Ñ$¤b§k¡k°%¸Ó&>ÀÇ	Á	È$Ãóð r7   r`   rà   r  rá   r  s   `  r5   Ú__rfloordiv__zSQLExpr.__rfloordiv__�  s+   ø€ õ	ð
 × Ñ  ¨UÐ Ó3×9Ñ9¸)ÓDÐDr7   c                óL   ‡ — dˆ fd„}	 	 	 	 	 	 dˆ fd„}‰ j                  ||«      S )Nc                óf   •— ‰j                  ‰j                  d| «      ‰j                  d«      «      S ©NÚbool_andT©r|   rv   rz   ©rr   r/   s    €r5   ÚfzSQLExpr.all.<locals>.f™  s'   ø€ Ø—>‘> $§.¡.°¸TÓ"BÀDÇIÁIÈdÃOÓTÐTr7   c                óÌ   •—  ‰| «      D �cg c]M  }‰j                  ‰j                  ‰j                  d|«      |j                  «      ‰j	                  d«      «      ‘ŒO c}S c c}w r  ©r|   rn   rv   ro   rz   rp   s      €r5   rO   zSQLExpr.all.<locals>.window_fœ  se   ø€ ñ ! ›Höð ð —‘Ø×+Ñ+ØŸ™ z°4Ó8¸&×:MÑ:Móð —I‘I˜d“Oõ	òð ùò ó   ŒAA!©rr   r   rI   r   rt   ©r[   ©r/   r  rO   s   `  r5   ÚallzSQLExpr.all˜  ó;   ø€ õ	Uð	Øð	Ø'@ð	à"õ	ð ×"Ñ" 1 hÓ/Ð/r7   c                óL   ‡ — dˆ fd„}	 	 	 	 	 	 dˆ fd„}‰ j                  ||«      S )Nc                óf   •— ‰j                  ‰j                  d| «      ‰j                  d«      «      S ©NÚbool_orFr  r  s    €r5   r  zSQLExpr.any.<locals>.f¬  s(   ø€ Ø—>‘> $§.¡.°¸DÓ"AÀ4Ç9Á9ÈUÓCSÓTÐTr7   c                óÌ   •—  ‰| «      D �cg c]M  }‰j                  ‰j                  ‰j                  d|«      |j                  «      ‰j	                  d«      «      ‘ŒO c}S c c}w r)  r   rp   s      €r5   rO   zSQLExpr.any.<locals>.window_f¯  sf   ø€ ñ ! ›Höð ð —‘Ø×+Ñ+ØŸ™ y°$Ó7¸×9LÑ9Lóð —I‘I˜eÓ$õ	òð ùò r!  r"  rt   r#  r$  s   `  r5   ÚanyzSQLExpr.any«  r&  r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚmax©rv   r  s    €r5   rh   zSQLExpr.max.<locals>.<lambda>¿  ó   ø€ °·±¸uÀdÓ0K€ r7   r#  r<   s   `r5   r/  zSQLExpr.max¾  ó   ø€ Ø×"Ñ"Ó#KÓLÐLr7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )Nr�   r0  r  s    €r5   rh   zSQLExpr.mean.<locals>.<lambda>Â  ó   ø€ °·±¸vÀtÓ0L€ r7   r#  r<   s   `r5   r�   zSQLExpr.meanÁ  s   ø€ Ø×"Ñ"Ó#LÓMÐMr7   c               ó6   ‡ ‡— dˆˆ fd„}‰ j                  |«      S )Nc                óF  •— ‰dk(  r‰j                  d| «      S ‰dk(  r‰j                  d| «      S ‰j                  d| «      }t        j                  ‰j                  d| «      ‰j                  dt        j                  |d«      t        j                  |‰«      z  «      «      S )Nr   r¥   r    r¦   r¨   Úsqrt©rv   rb   ÚmulÚsub©rr   Ú	n_samplesr­   r/   s     €€r5   rH   zSQLExpr.std.<locals>.funcÅ  sŒ   ø€ Ø�qŠyØ—~‘~ l°DÓ9Ð9Ø�qŠyØ—~‘~ m°TÓ:Ð:ØŸ™ w°Ó5ˆIÜ—6‘6Ø—‘˜}¨dÓ3Ø—‘˜v¬¯©¨y¸!Ó(<ÄÇÁÀyÐRVÓ@WÑ'WÓXóð r7   r"  r#  ©r/   r­   rH   s   `` r5   rž   zSQLExpr.stdÄ  ó   ù€ ö		ð ×"Ñ" 4Ó(Ð(r7   c               ó6   ‡ ‡— dˆˆ fd„}‰ j                  |«      S )Nc                ó&  •— ‰dk(  r‰j                  d| «      S ‰dk(  r‰j                  d| «      S ‰j                  d| «      }t        j                  ‰j                  d| «      t        j                  |d«      t        j                  |‰«      z  «      S )Nr   r£   r    r¤   r¨   r9  r<  s     €€r5   rH   zSQLExpr.var.<locals>.funcÓ  s€   ø€ Ø�qŠyØ—~‘~ i°Ó6Ð6Ø�qŠyØ—~‘~ j°$Ó7Ð7ØŸ™ w°Ó5ˆIÜ—6‘6Ø—‘˜z¨4Ó0Ü—‘�y !Ó$¤r§v¡v¨i¸Ó'>Ñ>óð r7   r"  r#  r>  s   `` r5   rŸ   zSQLExpr.varÒ  r?  r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚmedianr0  r  s    €r5   rh   z SQLExpr.median.<locals>.<lambda>á  s   ø€ °·±¸xÈÓ0N€ r7   r#  r<   s   `r5   rD  zSQLExpr.medianà  s   ø€ Ø×"Ñ"Ó#NÓOÐOr7   c                ó6   ‡ ‡— dˆ ˆfd„}‰ j                  |«      S )Nc                óh   •— ‰j                  ‰j                  d| «      ‰j                  ‰«      | «      S )NÚisnan)r‰   rv   rz   )rr   r/   rD   s    €€r5   Ú	_fill_nanz#SQLExpr.fill_nan.<locals>._fill_nanä  s*   ø€ Ø—:‘:˜dŸn™n¨W°dÓ;¸T¿Y¹YÀuÓ=MÈtÓTÐTr7   r"  ©r^   )r/   rD   rH  s   `` r5   Úfill_nanzSQLExpr.fill_nanã  s   ù€ ö	Uð ×%Ñ% iÓ0Ð0r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚminr0  r  s    €r5   rh   zSQLExpr.min.<locals>.<lambda>ê  r1  r7   r#  r<   s   `r5   rM  zSQLExpr.miné  r2  r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )Nr¨   r0  r  s    €r5   rh   zSQLExpr.count.<locals>.<lambda>í  s   ø€ °·±¸wÈÓ0M€ r7   r#  r<   s   `r5   r¨   zSQLExpr.countì  s   ø€ Ø×"Ñ"Ó#MÓNÐNr7   c                óL   ‡ — dˆ fd„}	 	 	 	 	 	 dˆ fd„}‰ j                  ||«      S )Nc                óf   •— ‰j                  ‰j                  d| «      ‰j                  d«      «      S ©Nrœ   r   r  r  s    €r5   r  zSQLExpr.sum.<locals>.fð  s'   ø€ Ø—>‘> $§.¡.°¸Ó"=¸t¿y¹yÈ»|ÓLÐLr7   c                óè   •— |j                   rJ ‚ ‰| «      D �cg c]M  }‰j                  ‰j                  ‰j                  d|«      |j                  «      ‰j                  d«      «      ‘ŒO c}S c c}w rR  )rm   r|   rn   rv   ro   rz   rp   s      €r5   rO   zSQLExpr.sum.<locals>.window_fó  st   ø€ ð —’Ð&Ð&ñ ! ›Höð ð —‘Ø×+Ñ+ØŸ™ u¨dÓ3°V×5HÑ5Hóð —I‘I˜a“Lõ	òð ùò s   šAA/r"  rt   r#  r$  s   `  r5   rœ   zSQLExpr.sumï  s;   ø€ õ	Mð	Øð	Ø'@ð	à"õ	ð ×"Ñ" 1 hÓ/Ð/r7   c                óØ   ‡ ‡‡‡‡— ‰ j                   Š‰ j                  Š‰ j                  d«      ‰ j                  d«      cŠŠdˆˆˆ ˆfd„}	 	 	 	 	 	 dˆˆˆˆ ˆfd„}‰ j                  ||«      S )Nr   r    c                ó|   •— t        j                   ‰d| «       ‰d‰j                   ‰d| «      ‰‰«      «      «      S ©NÚcount_distinctr/  r”   )rb   Úaddr‰   )rr   ÚFÚoner/   Úzeros    €€€€r5   rH   zSQLExpr.n_unique.<locals>.func  s=   ø€ Ü—6‘6ÙÐ" DÓ)Ù�%˜Ÿ™¡A h°Ó$5°s¸DÓAÓBóð r7   c                óò   •—  ‰| «      D �cg c]`  }t        j                   ‰ ‰d|«      |j                  «       ‰ ‰d‰j                   ‰d|«      ‰‰«      «      |j                  «      «      ‘Œb c}S c c}w rV  )rb   rX  ro   r‰   )r9   rq   rr   rY  ÚWrZ  r/   r[  s      €€€€€r5   rO   z"SQLExpr.n_unique.<locals>.window_f  s{   ø€ ñ ! ›Hö	ð ô —‘Ù‘aÐ(¨$Ó/°×1DÑ1DÓEÙÙ˜% §¡©A¨h¸Ó,=¸sÀDÓ!IÓJØ×+Ñ+óõò	ð 	ùò 	s   ŒA%A4r"  rt   )rv   rn   rz   r[   )r/   rH   rO   rY  r]  rZ  r[  s   `  @@@@r5   Ún_uniquezSQLExpr.n_unique  ss   ü€ Ø�N‰NˆØ×#Ñ#ˆØ—I‘I˜a“L $§)¡)¨A£,ˆ	ˆˆc÷	ð 	ð	Øð	Ø'@ð	à"÷	ñ 	ð ×"Ñ" 4¨Ó2Ð2r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚabsr0  r  s    €r5   rh   zSQLExpr.abs.<locals>.<lambda>   ó   ø€ °4·>±>À%ÈÓ3N€ r7   rI  r<   s   `r5   ra  zSQLExpr.abs  ó   ø€ Ø×%Ñ%Ó&NÓOÐOr7   c                óH   ‡ — 	 	 	 	 	 	 	 	 dˆ fd„}‰ j                  |||¬«      S )Nc                óL   •— ‰j                  d‰j                  d| |«      |«      S )NÚgreatestÚleastr0  )rr   Úlower_boundÚupper_boundr/   s      €r5   Ú_clipzSQLExpr.clip.<locals>._clip#  s*   ø€ ð —>‘>Ø˜DŸN™N¨7°D¸+ÓFÈóð r7   )rh  ri  )rr   r   rh  r   ri  r   rI   r   rI  )r/   rh  ri  rj  s   `   r5   ÚclipzSQLExpr.clip"  sI   ø€ ð	Øð	Ø,7ð	ØFQð	àõ	ð ×%Ñ%Ø˜{¸ð &ó 
ð 	
r7   c                ó6   ‡ — dˆ fd„}‰ j                  ||¬«      S )Nc                ó*   •— ‰j                  d| |«      S )Nrf  r0  )rr   rh  r/   s     €r5   rj  z!SQLExpr.clip_lower.<locals>._clip/  s   ø€ Ø—>‘> *¨d°KÓ@Ð@r7   )rh  )rr   r   rh  r   rI   r   rI  )r/   rh  rj  s   `  r5   Ú
clip_lowerzSQLExpr.clip_lower.  s!   ø€ õ	Að ×%Ñ% e¸Ð%ÓEÐEr7   c                ó6   ‡ — dˆ fd„}‰ j                  ||¬«      S )Nc                ó*   •— ‰j                  d| |«      S )Nrg  r0  )rr   ri  r/   s     €r5   rj  z!SQLExpr.clip_upper.<locals>._clip5  s   ø€ Ø—>‘> '¨4°Ó=Ð=r7   )ri  )rr   r   ri  r   rI   r   rI  )r/   ri  rj  s   `  r5   Ú
clip_upperzSQLExpr.clip_upper4  s    ø€ õ	>ð ×%Ñ% e¸Ð%ÓEÐEr7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )Nr”   r0  r  s    €r5   rh   z!SQLExpr.is_null.<locals>.<lambda>;  s   ø€ °4·>±>À(ÈDÓ3Q€ r7   rI  r<   s   `r5   Úis_nullzSQLExpr.is_null:  s   ø€ Ø×%Ñ%Ó&QÓRÐRr7   c                ó0   ‡ ‡— ‰ j                  ˆˆ fd„«      S )Nc                óH   •— ‰j                  d| ‰j                  ‰«      «      S )NÚround)rv   rz   )rr   Údecimalsr/   s    €€r5   rh   zSQLExpr.round.<locals>.<lambda>?  s   ø€ ˜Ÿ™¨°°t·y±yÀÓ7JÓK€ r7   rI  )r/   rx  s   ``r5   rw  zSQLExpr.round=  s   ù€ Ø×%Ñ%ÜKó
ð 	
r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚfloorr0  r  s    €r5   rh   zSQLExpr.floor.<locals>.<lambda>C  s   ø€ °4·>±>À'È4Ó3P€ r7   rI  r<   s   `r5   r{  zSQLExpr.floorB  s   ø€ Ø×%Ñ%Ó&PÓQÐQr7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚceilr0  r  s    €r5   rh   zSQLExpr.ceil.<locals>.<lambda>F  s   ø€ °4·>±>À&È$Ó3O€ r7   rI  r<   s   `r5   r~  zSQLExpr.ceilE  s   ø€ Ø×%Ñ%Ó&OÓPÐPr7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚsinr0  r  s    €r5   rh   zSQLExpr.sin.<locals>.<lambda>I  rb  r7   rI  r<   s   `r5   r�  zSQLExpr.sinH  rc  r7   c                ó2   ‡ — dˆ fd„}‰ j                  |«      S )Nc                óž   •— ‰j                  | ‰j                  d«      k  ‰j                  t        d«      «      ‰j                  d| «      «      S )Nr   Únanr8  )r‰   rz   Úfloatrv   r  s    €r5   Ú_sqrtzSQLExpr.sqrt.<locals>._sqrtL  sA   ø€ Ø—:‘:Ø�t—y‘y “|Ñ# T§Y¡Y¬u°U«|Ó%<¸d¿n¹nÈVÐUYÓ>Zóð r7   r"  rI  )r/   r†  s   ` r5   r8  zSQLExpr.sqrtK  s   ø€ õ	ð
 ×%Ñ% eÓ,Ð,r7   c                ó,   ‡ — ‰ j                  ˆ fd„«      S )Nc                ó(   •— ‰j                  d| «      S )NÚexpr0  r  s    €r5   rh   zSQLExpr.exp.<locals>.<lambda>T  rb  r7   rI  r<   s   `r5   r‰  zSQLExpr.expS  rc  r7   c                ó6   ‡ ‡— dˆˆ fd„}‰ j                  |«      S )Nc                ón  •— ‰j                   }‰j                  | ‰j                  d«      k  ‰j                  t        d«      «      ‰j                  | ‰j                  d«      k(  ‰j                  t        d«      «      t	        j
                   |d| «       |d‰j                  ‰«      «      «      «      «      S )Nr   r„  z-infÚlog)rv   r‰   rz   r…  rb   Útruediv)rr   rY  Úbaser/   s     €€r5   Ú_logzSQLExpr.log.<locals>._logW  sŒ   ø€ Ø—‘ˆAØ—:‘:Ø�t—y‘y “|Ñ#Ø—	‘	œ% ›,Ó'Ø—
‘
Ø˜DŸI™I a›LÑ(Ø—I‘Iœe F›mÓ,Ü—J‘J™q ¨›~©q°¸¿	¹	À$»Ó/HÓIóóð r7   r"  rI  )r/   rŽ  r�  s   `` r5   rŒ  zSQLExpr.logV  s   ù€ ö
	ð ×%Ñ% dÓ+Ð+r7   c               óF   — | j                  | j                  d|¬«      «      S )Nrœ   ©r™   ©rX   rš   ©r/   r™   s     r5   Úcum_sumzSQLExpr.cum_sumf  ó#   € Ø×)Ñ)¨$×*?Ñ*?ÀÈwÐ*?Ó*WÓXÐXr7   c               óF   — | j                  | j                  d|¬«      «      S )Nr/  r‘  r’  r“  s     r5   Úcum_maxzSQLExpr.cum_maxi  r•  r7   c               óF   — | j                  | j                  d|¬«      «      S )NrM  r‘  r’  r“  s     r5   Úcum_minzSQLExpr.cum_minl  r•  r7   c               óB   ‡ ‡— 	 	 	 	 	 	 dˆˆ fd„}‰ j                  |«      S )Nc                óê   •— t        ‰t        |j                  «      «      } ‰| «      D �cg c]=  }‰j                  ‰j	                  d|«      |j
                  |j                  ||d¬«      ‘Œ? c}S c c}w )Nr¨   r   r•   )r   r–   rm   rn   rv   ro   )r9   rq   r—   rr   r™   r/   s       €€r5   rH   zSQLExpr.cum_count.<locals>.funcp  sy   ø€ ô   ¬¨V¯_©_Ó)=Ó>ˆEñ ! ›Hö
ð ð ×'Ñ'Ø—N‘N 7¨DÓ1Ø×'Ñ'Ø—O‘OØ$Ø$Øð (õ ò
ð 
ùò 
s   «AA0rt   ©rX   )r/   r™   rH   s   `` r5   Ú	cum_countzSQLExpr.cum_counto  s3   ù€ ð	Øð	Ø'@ð	à"ö	ð  ×)Ñ)¨$Ó/Ð/r7   c               óF   — | j                  | j                  d|¬«      «      S )NÚproductr‘  r’  r“  s     r5   Úcum_prodzSQLExpr.cum_prod‚  s(   € Ø×)Ñ)Ø×!Ñ! )°WÐ!Ó=ó
ð 	
r7   c               óJ   — | j                  | j                  d|||¬«      «      S )Nrœ   ©r³   ©rX   r¶   ©r/   r²   r¯   r³   s       r5   Úrolling_sumzSQLExpr.rolling_sumˆ  s,   € Ø×)Ñ)Ø×%Ñ% e¨[¸+ÈfÐ%ÓUó
ð 	
r7   c               óJ   — | j                  | j                  d|||¬«      «      S )Nr�   r¢  r£  r¤  s       r5   Úrolling_meanzSQLExpr.rolling_mean�  s,   € Ø×)Ñ)Ø×%Ñ% f¨k¸;ÈvÐ%ÓVó
ð 	
r7   c          	     óL   — | j                  | j                  d||||¬«      «      S )NrŸ   ©r­   r³   r£  ©r/   r²   r¯   r³   r­   s        r5   Úrolling_varzSQLExpr.rolling_var’  ó5   € ð ×)Ñ)Ø×%Ñ%Ø�{ K°dÀ6ð &ó ó
ð 	
r7   c          	     óL   — | j                  | j                  d||||¬«      «      S )Nrž   r©  r£  rª  s        r5   Úrolling_stdzSQLExpr.rolling_std›  r¬  r7   c                ó>   ‡ — 	 	 	 	 	 	 dˆ fd„}‰ j                  |«      S )Nc                óØ   •— ‰j                   }‰j                  } ‰| «      D �cg c];  }t        j                  | | |d|«      |j                  |j
                  «      «      ‘Œ= c}S c c}w ©NÚlag)rv   rn   rb   r;  ro   rm   )r9   rq   rY  Úwindowrr   r/   s        €r5   rH   zSQLExpr.diff.<locals>.func¦  sc   ø€ ð —‘ˆAØ×,Ñ,ˆFñ ! ›Höàô —‘�t™V¡A e¨T£N°F×4GÑ4GÈÏÉÓYÕZòð ùò s   ¤A A'rt   rœ  ©r/   rH   s   ` r5   ÚdiffzSQLExpr.diff¥  ó3   ø€ ð	Øð	Ø'@ð	à"õ	ð ×)Ñ)¨$Ó/Ð/r7   c                óB   ‡ ‡— 	 	 	 	 	 	 dˆˆ fd„}‰ j                  |«      S )Nc           
     ó¦   •—  ‰| «      D �cg c]:  }‰j                  ‰j                  d|‰«      |j                  |j                  «      ‘Œ< c}S c c}w r±  )rn   rv   ro   rm   )r9   rq   rr   Únr/   s      €€r5   rH   zSQLExpr.shift.<locals>.func³  sT   ø€ ñ ! ›Hö	ð ð ×'Ñ'Ø—N‘N 5¨$°Ó2°F×4GÑ4GÈÏÉõòð ùò s   Œ?Art   rœ  )r/   r¹  rH   s   `` r5   ÚshiftzSQLExpr.shift²  s3   ù€ ð	Øð	Ø'@ð	à"ö	ð ×)Ñ)¨$Ó/Ð/r7   c                ó>   ‡ — 	 	 	 	 	 	 dˆ fd„}‰ j                  |«      S )Nc                óÐ   •—  ‰| «      D �cg c]O  }‰j                  ‰j                  d«      g |j                  ¢|‘­|j                  «      ‰j	                  d«      k(  ‘ŒQ c}S c c}w )NÚ
row_numberr    )rn   rv   ro   rm   rz   rp   s      €r5   rH   z'SQLExpr.is_first_distinct.<locals>.funcÀ  sn   ø€ ñ ! ›Höð ð ×'Ñ'Ø—N‘N <Ó0Ø0�f×)Ñ)Ð0¨4Ñ0Ø—O‘Oóð
 —9‘9˜Q“<ó òð ùò s   ŒAA#rt   rœ  r´  s   ` r5   Úis_first_distinctzSQLExpr.is_first_distinct¿  s3   ø€ ð	Øð	Ø'@ð	à"õ	ð ×)Ñ)¨$Ó/Ð/r7   c                ó>   ‡ — 	 	 	 	 	 	 dˆ fd„}‰ j                  |«      S )Nc           
     ó  •— t        dt        |j                  «      «      } ‰| «      D �cg c]R  }‰j                  ‰j	                  d«      g |j
                  ¢|‘­|j                  ||¬«      ‰j                  d«      k(  ‘ŒT c}S c c}w )NTr½  rŒ   r    )r   r–   rm   rn   rv   ro   rz   )r9   rq   r—   rr   r/   s       €r5   rH   z&SQLExpr.is_last_distinct.<locals>.funcÑ  s�   ø€ ô   ¤c¨&¯/©/Ó&:Ó;ˆEñ ! ›Hö
ð ð ×'Ñ'Ø—N‘N <Ó0Ø0�f×)Ñ)Ð0¨4Ñ0Ø—O‘OØ$Ø$ð (ó ð —9‘9˜Q“<ó ò
ð 
ùò 
s   «ABrt   rœ  r´  s   ` r5   Úis_last_distinctzSQLExpr.is_last_distinctÐ  s3   ø€ ð	Øð	Ø'@ð	à"õ	ð  ×)Ñ)¨$Ó/Ð/r7   c                ó>   ‡ — 	 	 	 	 	 	 dˆ fd„}‰ j                  |«      S )Nc           	     ó¤   •—  ‰| «      D �cg c]9  }‰j                   ‰j                  |g|j                  ¢­Ž |j                  «      ‘Œ; c}S c c}w r-   )rn   r‚   rm   ro   rp   s      €r5   rH   zSQLExpr.first.<locals>.funcä  sU   ø€ ñ ! ›Hö	ð ð ×'Ñ'Ø�D—K‘K Ð7 v§¡Ò7¸×9LÑ9Lõòð ùò ó   Œ>Art   rœ  r´  s   ` r5   ÚfirstzSQLExpr.firstã  r¶  r7   c                ó>   ‡ — 	 	 	 	 	 	 dˆ fd„}‰ j                  |«      S )Nc           	     ó¤   •—  ‰| «      D �cg c]9  }‰j                   ‰j                  |g|j                  ¢­Ž |j                  «      ‘Œ; c}S c c}w r-   )rn   r„   rm   ro   rp   s      €r5   rH   zSQLExpr.last.<locals>.funcñ  sU   ø€ ñ ! ›Hö	ð ð ×'Ñ'Ø�D—J‘J˜tÐ6 f§o¡oÒ6¸×8KÑ8Kõòð ùò rÄ  rt   rœ  r´  s   ` r5   ÚlastzSQLExpr.lastð  r¶  r7   c               ó0   ‡ ‡— ‰ j                  ˆˆ fd„«      S )Nc                ó*   •— ‰j                  | ‰¬«      S )N)r†   )r‡   )rr   r†   r/   s    €€r5   rh   z#SQLExpr.any_value.<locals>.<lambda>ÿ  s   ø€ ˜Ÿ™¨¸L˜ÓI€ r7   r#  )r/   r†   s   ``r5   Ú	any_valuezSQLExpr.any_valueý  s   ù€ Ø×"Ñ"ÜIó
ð 	
r7   c               óø   ‡ ‡‡‡‡— ‰dv r‰ j                  d«      Šn(‰dk(  r‰ j                  d«      Šn‰ j                  d«      Š	 d		 	 	 	 	 	 	 d
ˆˆˆ fd„Šdˆˆfd„}	 	 	 	 	 	 dˆˆˆ fd„}‰ j                  ||«      S )N>   r/  rM  ÚaverageÚrankÚdenseÚ
dense_rankr½  c               ó:  •— ‰j                  «       }|| f|gdgdœ}dg |¢| ‘­i}‰j                  }‰j                  }‰
dk(  rHt        j                  t        j
                   |‰	fi |¤Ž ||fi |¤Ž«      ‰j                  d«      «      }ny‰
dk(  rkt        j
                   |‰	fi |¤Žt        j                  t        j                   ||fi |¤Ž‰j                  d«      «      ‰j                  d«      «      «      }n	 |‰	fi |¤Ž}‰j                   |d| «       |«      S )	NT)ro   rm   r�   rŽ   ro   r/  r    rÍ  g       @r”   )	r~   rn   rv   rb   r;  rX  rz   r�  r‰   )rr   ro   r�   Ú
count_exprr¬   Úcount_window_kwargsr³  rY  Ú	rank_exprrH   Úmethodr/   s            €€€r5   Ú_rankzSQLExpr.rank.<locals>._rank
  s-  ø€ ð ×)Ñ)Ó+ˆJà ,Ø!˜GØ)˜lØ#˜fñ	-ˆMð 4BÐCXÀ\ÐCXÐSWÑCXÐ2YÐØ×,Ñ,ˆFØ—‘ˆAØ˜ŠÜŸF™FÜ—F‘FÙ˜tÑ5 }Ñ5Ù˜zÑAÐ-@ÑAóð —I‘I˜a“Ló‘	ð ˜9Ò$ÜŸF™FÙ˜4Ñ1 =Ñ1Ü—J‘JÜŸ™™v jÑHÐ4GÑHÈ$Ï)É)ÐTUË,ÓWØŸ	™	 #›óó‘	ñ # 4Ñ9¨=Ñ9�	Ø—:‘:™q ¨4Ó0Ð0°)Ó<Ð<r7   c                ó   •—  ‰| ‰¬«      S )N©r�   r.   )rr   rÖ  r�   s    €€r5   Ú_unpartitioned_rankz)SQLExpr.rank.<locals>._unpartitioned_rank.  s   ø€ Ù˜¨*Ô5Ð5r7   c                ó’   •— |j                   rd}t        |«      ‚ ‰| «      D �cg c]  } ‰||j                  ‰¬«      ‘Œ c}S c c}w )Nz[`rank` followed by `over` with `order_by` specified is not supported for SQL-like backends.rØ  )rm   ÚNotImplementedErrorro   )r9   rq   r«   rr   rÖ  r�   r/   s       €€€r5   Ú_partitioned_rankz'SQLExpr.rank.<locals>._partitioned_rank1  sQ   ø€ ð �ŠØs�Ü)¨#Ó.Ð.ñ ! ›Höàñ �d˜F×/Ñ/¸JÖGòð ùò s   ¥A)r.   )rr   r   ro   úSequence[str | NativeExprT]r�   ÚboolrI   r   r"  rt   )rv   r[   )r/   rÕ  r�   rÙ  rÜ  rÖ  rH   s   ```  @@r5   rÎ  zSQLExpr.rank  s¦   ü€ ØÐ.Ñ.Ø—>‘> &Ó)‰DØ�wÒØ—>‘> ,Ó/‰Dà—>‘> ,Ó/ˆDð 9;ð"	=Øð"	=à5ð"	=ð ð	"	=ð
 ÷"	=öH	6ð		Øð		Ø'@ð		à"÷		ð ×"Ñ"Ð#6Ð8IÓJÐJr7   c                ó„   ‡ ‡— 	 	 	 	 	 	 dˆ fd„Šdˆfd„}	 	 	 	 	 	 dˆˆ fd„}‰ j                  |«      j                  |«      S )Nc                óp   •— ‰j                  ‰j                  «       | g|¢­«      ‰j                  d«      k(  S )Nr    )rn   r~   rz   )rr   ro   r/   s     €r5   Ú
_is_uniquez%SQLExpr.is_unique.<locals>._is_unique?  s>   ø€ ð ×*Ñ*Ø× Ñ Ó" TÐ$9¨LÑ$9óà—‘˜1“ñð r7   c                ó   •—  ‰| «      S r-   r.   )rr   rá  s    €r5   Ú_unpartitioned_is_uniquez3SQLExpr.is_unique.<locals>._unpartitioned_is_uniqueF  s   ø€ Ù˜dÓ#Ð#r7   c                óx   •— |j                   rJ ‚ ‰| «      D �cg c]  } ‰|g|j                  ¢­Ž ‘Œ c}S c c}w r-   )rm   ro   )r9   rq   rr   rá  r/   s      €€r5   Ú_partitioned_is_uniquez1SQLExpr.is_unique.<locals>._partitioned_is_uniqueI  s:   ø€ ð —’Ð&Ð&ÙGKÈBÃxÖP¸t‘J˜tÐ: f×&9Ñ&9Ô:ÒPÐPùÒPs   š7)rr   r   ro   zstr | NativeExprTrI   r   r"  rt   )r[   rX   )r/   rã  rå  rá  s   `  @r5   Ú	is_uniquezSQLExpr.is_unique>  sj   ù€ ð	Øð	Ø.?ð	àõ	õ	$ð	QØð	QØ'@ð	Qà"ö	Qð ×"Ñ"Ð#;Ó<×RÑRØ"ó
ð 	
r7   c                ó”   ‡ ‡‡— dˆˆˆ fd„}‰ j                  |‰ j                  ‰ j                  ‰ j                  ‰ j                  ¬«      S )Nc                ó<   •— ‰j                  | t        ‰‰«      «      S r-   )r1   r   )r9   rm   ro   r/   s    €€€r5   rH   zSQLExpr.over.<locals>.funcW  s   ø€ Ø×'Ñ'¨¬L¸ÀxÓ,PÓQÐQr7   rV   rÂ   )rW   r$   r&   r'   r(   )r/   ro   rm   rH   s   ``` r5   ÚoverzSQLExpr.overT  sF   ú€ ÷	Rð �~‰~ØØ"&×"=Ñ"=Ø#×7Ñ7Ø—M‘MØ×/Ñ/ð ó 
ð 	
r7   c               ór   ‡ — |dk7  rd|› d‰ j                   › d�}t        |«      ‚‰ j                  ˆ fd„«      S )Nr,  z`Expr.mode(keep='z#')` is not implemented for backend z3

Hint: Use `nw.col(...).mode(keep='any')` instead.c                ó(   •— ‰j                  d| «      S )NÚmoder0  r  s    €r5   rh   zSQLExpr.mode.<locals>.<lambda>j  r5  r7   )r(   rÛ  r[   )r/   Úkeepr«   s   `  r5   rì  zSQLExpr.modeb  sP   ø€ Ø�5Š=à# D 6Ð)LÈT×MaÑMaÐLbð cDð Dð ô & cÓ*Ð*à×"Ñ"Ó#LÓMÐMr7   c                 ó   — y r-   r.   r<   s    r5   ÚstrzSQLExpr.strm  s   € Ø36r7   c                 ó   — y r-   r.   r<   s    r5   Údtz
SQLExpr.dtp  s   € Ø58r7   r-   )r0   r!   r1   r)   r2   r#   r3   r%   r4   r   r+   r   rI   ÚNonerÂ   )rI   z3SQLNamespace[SQLLazyFrameT, Self, Any, NativeExprT])r0   úCallable[..., NativeExprT]rG   r   rI   r!   )r0   ró  rG   r   rI   ú*WindowFunction[SQLLazyFrameT, NativeExprT])r1   rô  rI   r   )r0   ró  rZ   r)   rG   r   rI   r   )r0   ró  rG   r   rI   r   )rb   ró  ra   r   rI   r   )rH   r%   rI   r   )rI   rô  )rw   rï  rx   zNativeExprT | PythonLiteralrI   r   )rD   r   rI   r   r"  )rI   r   )rr   r   rm   rï  rI   r   )rr   r   r†   rÞ  rI   r   )rŠ   r   rD   r   r‹   zNativeExprT | NonerI   r   )r.   r.   NN)rr   r   ro   rÝ  rm   rÝ  r�   ú
int | Noner‘   rõ  r�   úSequence[bool] | NonerŽ   rö  rI   r   )r˜   z'Literal['sum', 'max', 'min', 'product']r™   rÞ  rI   rô  )r˜   z$Literal['sum', 'mean', 'std', 'var']r²   Úintr¯   r÷  r­   rõ  r³   rÞ  rI   rô  )rI   ztuple[int, ...])rr   r   rw   rï  rI   r   )rH   z*Callable[[list[NativeExprT]], NativeExprT]r¿   r   rI   r   )rI   rÞ  )ra   r   rI   r   )rI   r   )r­   r÷  rI   r   )rD   zfloat | NonerI   r   )rh  r   ri  r   rI   r   )rh  r   rI   r   )ri  r   rI   r   )rx  r÷  rI   r   )rŽ  r…  rI   r   )r™   rÞ  rI   r   )r²   r÷  r¯   r÷  r³   rÞ  rI   r   )
r²   r÷  r¯   r÷  r³   rÞ  r­   r÷  rI   r   )r¹  r÷  rI   r   )r†   rÞ  rI   r   )rÕ  r   r�   rÞ  rI   r   )ro   rÝ  rm   zSequence[str]rI   r   )rí  r   rI   r   )rI   zSQLExprStringNamespace[Self])rI   zSQLExprDateTimeNamesSpace[Self])hÚ__name__Ú
__module__Ú__qualname__Ú__annotations__r   ÚDUCKDBr6   r:   r=   rJ   rS   rX   r[   r^   rc   rj   Úpropertyr1   rv   rz   r|   r~   r‚   r„   r‡   r‰   rn   rš   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ž   rŸ   rD  rJ  rM  r¨   rœ   r^  ra  rk  rn  rq  rt  rw  r{  r~  r�  r8  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   Ú
drop_nullsÚfilterÚuniquer.   r7   r5   r    r    "   sÓ  … Ø1Ó1Ø4Ó4Ø*Ó*ØÓØ#Ó#ØGÓGð
 NRð	ð *8×)>Ñ)>ñ	à4ð	ð Kð	ð
  8ð	ð .ð	ð ð	ð 'ð	ð 
ó	óðBà	<óBðØ.ðØJNðà	/óð Ø.ðØJNðà	3óð.

ØIð

à	ó

ð JNð
à(ð
ð Gð
ð
  $ð
ð 
ó
ð 

Ø.ð

ØJNð

à	ó

ó
ó
ð$ ò	<ó ð	<óDó9ó>ó .ÛKÛJÛVð
 )-ð	PàðPð ðPð &ð	Pð
 
óPð 57Ø02Ø!%Ø#ð
ð -1Ø,0ñ
àð
ð 2ð
ð .ð	
ð
 ð
ð ð
ð *ð
ð *ð
ð 
ó
ðØ@ðØNRðà	3óð:  ð7à7ð7ð ð7ð ð	7ð
 ð7ð ð7ð 
4ó7ðr ò7ó ð7ð ÚOó ØOàð
Ø=ð
ØGKð
à	ò
ó ð
ó,@óPóPóQóQó[óQóUó[óQóZóQó[óPóPóPóPóQóPó4óEó0ó&0ó&MóNó)ó)óPó1óMóOó0ó(3ó8Pó

óFóFóSó
ó
RóQóPó-óPó,ó YóYóYó0ó&
ó
ó

ð

Øð
Ø03ð
Ø=Að
ØILð
à	ó
ð
Øð
Ø03ð
Ø=Að
ØILð
à	ó
ó0ó0ó0ó"0ó&0ó0ó
ó
:Kóx
ð,
Ø7ð
ØCPð
à	ó
óNð Ú6ó Ø6àÚ8ó Ø8á Ó"€JÙÓ€FÙÓ�Fr7   r    )-Ú
__future__r   Úoperatorrb   Útypingr   r   r   r   r   Únarwhals._compliant.exprr	   Únarwhals._compliant.typingr
   r   r   r   r   Únarwhals._compliant.windowr   Únarwhals._expression_parsingr   r   Únarwhals._sql.typingr   Únarwhals._utilsr   r   r   r   Úcollections.abcr   Útyping_extensionsr   Únarwhals._sql.expr_dtr   Únarwhals._sql.expr_strr   Únarwhals._sql.namespacer   Únarwhals.typingr   r   r   r    r.   r7   r5   ú<module>r     sr   ðÝ "ã ß BÕ Bå -÷õ õ 4÷õ /ß QÓ QáÝ(å&çEÝ?Ý=Ý4ßKÑKôSˆh�} kÐ1Ñ2°H¸]ÈKÐ=WÑ4Xõ Sr7   