Ë
    7Ò^j&  ã            	      ól  — d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
Z
d dl
mZ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mZmZmZmZmZmZmZ d dlmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& er(d dl'm(Z(m)Z)m*Z* d dl
m+Z+ d dl,m-Z- d dl$m.Z. d dl/m0Z0m1Z1m2Z2m3Z3 ejh                  Z4 G d„ de#eedef   «      Z5y)é    )ÚannotationsN)Úreduce)Úchain)ÚTYPE_CHECKINGÚAny)ÚCoalesceOperatorÚ
Expression©ÚDuckDBLazyFrame©Ú
DuckDBExpr)ÚDuckDBSelectorNamespace)
ÚDeferredTimeZoneÚFÚ
concat_strÚduckdb_dtypesÚfunctionÚlitÚnarwhals_to_native_dtypeÚsql_expressionÚwhenÚwindow_expression)Úcombine_alias_output_namesÚcombine_evaluate_output_namesÚ!evaluate_output_names_and_aliases)ÚSQLNamespace)ÚImplementationÚrequires)ÚCallableÚIterableÚMapping)ÚDuckDBPyRelation)ÚWindowInputs)ÚVersion)ÚConcatMethodÚCorrelationMethodÚ	IntoDTypeÚPythonLiteralc                  ó>  — e Zd ZU ej                  Zded<   dd„Zedd„«       Z	edd„«       Z
edd„«       Zdd„Zdd„Z	 d	 	 	 	 	 	 	 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 ej0                  d«      d!d„«       Zd!d„Zy	)&ÚDuckDBNamespacer   Ú_implementationc               ó   — || _         y ©N)Ú_version)ÚselfÚversions     úe/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/narwhals/_duckdb/namespace.pyÚ__init__zDuckDBNamespace.__init__3   s	   € Øˆ�ó    c                ó,   — t        j                  | «      S r-   )r   Úfrom_namespace©r/   s    r1   Ú	selectorszDuckDBNamespace.selectors6   s   € ä&×5Ñ5°dÓ;Ð;r3   c                ó   — t         S r-   r   r6   s    r1   Ú_exprzDuckDBNamespace._expr:   s   € äÐr3   c                ó   — t         S r-   r
   r6   s    r1   Ú
_lazyframezDuckDBNamespace._lazyframe>   s   € äÐr3   c                ó   — t        |g|¢­Ž S r-   )r   )r/   ÚnameÚargss      r1   Ú	_functionzDuckDBNamespace._functionB   s   € Ü˜Ð$˜tÒ$Ð$r3   c                ó   — t        |«      S r-   )r   )r/   Úvalues     r1   Ú_litzDuckDBNamespace._litE   s   € Ü�5‹zÐr3   Nc                óT   — |€t        ||«      S t        ||«      j                  |«      S r-   )r   Ú	otherwise)r/   Ú	conditionrA   rD   s       r1   Ú_whenzDuckDBNamespace._whenH   s/   € ð ÐÜ˜	 5Ó)Ð)Ü�I˜uÓ%×/Ñ/°	Ó:Ð:r3   c                ó   — t        |Ž S r-   )r   )r/   Úexprss     r1   Ú	_coalescezDuckDBNamespace._coalesceR   s   € Ü Ð'Ð'r3   c               óˆ  ‡	— |D �cg c]  }|j                   ‘Œ }}t        |«      }|d   }|j                  Š	|dk(  r$t        ˆ	fd„|dd  D «       «      sd}t	        |«      ‚|dk(  r<|j
                  }|dd  D ]  }t        j                  d«      }Œ |j                  |«      S t        d„ |«      }|j                  |«      S c c}w )	Nr   Úverticalc              3  ó<   •K  — | ]  }|j                   ‰k(  –— Œ y ­wr-   )Úschema)Ú.0ÚxrM   s     €r1   ú	<genexpr>z)DuckDBNamespace.concat.<locals>.<genexpr>\   s   øè ø€ Ò(OÀ¨¯©°VÕ);Ñ(Oùs   ƒé   z&inputs should all have the same schemaÚdiagonalz]
                    from res select * union all by name from _item select *
                c                ó$   — | j                  |«      S r-   )Úunion)rO   Úys     r1   ú<lambda>z(DuckDBNamespace.concat.<locals>.<lambda>g   s   €  !§'¡'¨!£*€ r3   )
Ú_native_frameÚlistrM   ÚallÚ	TypeErrorÚnativeÚduckdbÚsqlÚ_with_nativer   )
r/   ÚitemsÚhowÚitemÚnative_itemsÚfirstÚmsgÚresÚ_itemrM   s
            @r1   ÚconcatzDuckDBNamespace.concatU   sÓ   ø€ ð 8=Ö=¨t˜×*Ó*Ð=ˆÐ=Ü�U“ˆØ�a‘ˆØ—‘ˆØ�*Ò¤SÓ(OÀUÈ1È2ÀYÔ(OÔ%OØ:ˆCÜ˜C“.Ð Ø�*ÒØ—,‘,ˆCØ% a bÐ)ò �ä—j‘jð "ó ‘ðð
 ×%Ñ% cÓ*Ð*ÜÑ,¨lÓ;ˆØ×!Ñ! #Ó&Ð&ùò! >s   †B?c               ón   ‡‡‡— dˆˆˆfd„}| j                  |t        ‰Ž t        ‰Ž | j                  ¬«      S )Nc                óö   •‡ — t        j                  ˆ fd„‰D «       «      }‰rt        |d‰iŽgS t        |«      }t	        t
        j                  d„ |D «       «      }d„ |D «       }t        | t        |d‰iŽ«      gS )Nc              3  ó.   •K  — | ]  } |‰«      –— Œ y ­wr-   © )rN   ÚeÚdfs     €r1   rP   z;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>n   s   øè ø€ Ò<RÀq¹Q¸r¿UÑ<Rùs   ƒÚ	separatorc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr-   )Úisnull)rN   Úss     r1   rP   z;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>r   s   è ø€ Ò-G¸Q¨a¯h©h¯jÑ-Gùs   ‚c              3  óF   K  — | ]  }|j                  t        «      –— Œ y ­wr-   )ÚcastÚVARCHAR)rN   Úcs     r1   rP   z;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>s   s   è ø€ Ò6¨A˜Ÿ™œwŸÑ6ùó   ‚!)r   Úfrom_iterabler   Útupler   ÚoperatorÚor_r   )rm   ÚcolsÚ	null_maskÚcols_strrH   Úignore_nullsrn   s   `   €€€r1   Úfuncz(DuckDBNamespace.concat_str.<locals>.funcm   st   ù€ Ü).×)<Ñ)<Ó<RÈEÔ<RÓ)RˆDÙÜ" DÐ>°IÑ>Ð?Ð?Ü˜“;ˆDÜœxŸ|™|Ñ-GÀ$Ô-GÓHˆIÙ6°Ô6ˆHÜ˜)˜¤Z°Ð%OÀYÑ%OÓPÐQÐQr3   ©ÚcallÚevaluate_output_namesÚalias_output_namesr0   ©rm   r   Úreturnúlist[Expression]©r9   r   r   r.   )r/   rn   r~   rH   r   s    ``` r1   r   zDuckDBNamespace.concat_strj   s;   ú€ ÷	Rð �z‰zØÜ"?ÀÐ"GÜ9¸5ÐAØ—M‘Mð	 ó 
ð 	
r3   c                óD   — dd„} | j                   j                  |g|¢­Ž S )Nc                ó¦   — t        | «      } t        t        j                  d„ | D «       «      }t        t        j                  d„ | D «       «      }||z  S )Nc              3  óF   K  — | ]  }t        |t        d «      «      –— Œ y­w)r   N)r   r   ©rN   Úcols     r1   rP   z@DuckDBNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>€   s   è ø€ Ò)XÈCÔ*:¸3ÄÀAÃ×*GÑ)Xùrv   c              3  óv   K  — | ]1  }|j                  «       j                  t        j                  «      –— Œ3 y ­wr-   )Ú	isnotnullrs   r   ÚBIGINTr‹   s     r1   rP   z@DuckDBNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>‚   s'   è ø€ ÒZÈc˜sŸ}™}›×3Ñ3´M×4HÑ4H×IÑZùs   ‚79)rx   r   ry   Úadd)r{   ÚtotalÚcounts      r1   r   z-DuckDBNamespace.mean_horizontal.<locals>.func~   sH   € Ü˜“;ˆDÜœ8Ÿ<™<Ñ)XÐSWÔ)XÓYˆEÜÜ—‘ÑZÐUYÔZóˆEð ˜5‘=Ð r3   )r{   zIterable[Expression]r…   r	   )r9   Ú_from_elementwise_horizontal_op)r/   rH   r   s      r1   Úmean_horizontalzDuckDBNamespace.mean_horizontal}   s%   € ó	!ð :ˆt�z‰z×9Ñ9¸$ÐGÀÒGÐGr3   c                ót   ‡ ‡‡‡— dˆˆ ˆfd„Š	 	 	 	 	 	 dˆfd„}‰ j                  ‰|d„ d ‰ j                  ¬«      S )Nc                óì   •— t        ‰t        «      r‰sd}t        |«      ‚t        | j                  «      }‰�2t        ‰‰j                  |«      }t        ‰«      j                  |«      gS t        ‰«      gS )Nz5Cannot create an empty struct type for DuckDB backend)	Ú
isinstanceÚdictÚNotImplementedErrorr   r[   r   r.   r   rs   )rm   rd   ÚtzÚtargetÚdtyper/   rA   s       €€€r1   r   z!DuckDBNamespace.lit.<locals>.func‰   sg   ø€ Ü˜%¤Ô&©uØM�Ü)¨#Ó.Ð.ä! "§)¡)Ó,ˆBØÐ Ü1°%¸¿¹ÈÓK�Ü˜E›
Ÿ™¨Ó/Ð0Ð0Ü˜“J�<Ðr3   c                ó   •—  ‰| «      S r-   rk   )rm   Ú_window_inputsr   s     €r1   Úwindow_funcz(DuckDBNamespace.lit.<locals>.window_func”   s   ø€ ñ ˜“8ˆOr3   c                ó   — dgS )NÚliteralrk   ©Ú_dfs    r1   rV   z%DuckDBNamespace.lit.<locals>.<lambda>œ   s   € ¨y¨k€ r3   )r‚   rƒ   r0   r„   )rm   r   rž   úWindowInputs[Expression]r…   r†   ©r9   r.   )r/   rA   rœ   rŸ   r   s   ``` @r1   r   zDuckDBNamespace.litˆ   sP   û€ ÷		 ð	Øð	Ø1Ið	àõ	ð
 �z‰zØØÙ"9Ø#Ø—M‘Mð ó 
ð 	
r3   c                óJ   — dd„}| j                  |d„ d | j                  ¬«      S )Nc                ó   — t        d«      gS )Nr’   ©r   r¢   s    r1   r   z!DuckDBNamespace.len.<locals>.func¢   s   € Ü�g“J�<Ðr3   c                ó   — dgS )NÚlenrk   r¢   s    r1   rV   z%DuckDBNamespace.len.<locals>.<lambda>§   s   € ¨u¨g€ r3   r€   )r£   r   r…   r†   r¥   )r/   r   s     r1   rª   zDuckDBNamespace.len¡   s/   € ó	 ð �z‰zØÙ"5Ø#Ø—M‘Mð	 ó 
ð 	
r3   c               óž   ‡‡— |dk7  rd}t        |«      ‚dˆˆfd„}| j                  |t        ‰‰«      t        ‰‰«      | j                  ¬«      S )NÚpearsonz3Only 'pearson' correlation is supported for DuckDB.c                ód   •— | j                  ‰«      }| j                  ‰«      }t        d||«      gS )NÚcorr)Ú_evaluate_single_output_exprr   )rm   Úa_Úb_ÚaÚbs      €€r1   r   z"DuckDBNamespace.corr.<locals>.func³   s5   ø€ Ø×0Ñ0°Ó3ˆBØ×0Ñ0°Ó3ˆBÜ�f˜b "Ó%Ð&Ð&r3   r€   r„   )r™   r9   r   r   r.   )r/   r²   r³   Úmethodrd   r   s    ``   r1   r®   zDuckDBNamespace.corr¬   sX   ù€ ð �YÒØGˆCÜ% cÓ*Ð*ö	'ð
 �z‰zØÜ"?ÀÀ1Ó"EÜ9¸!¸QÓ?Ø—M‘Mð	 ó 
ð 	
r3   c          	     óº   ‡‡‡‡— 	 	 	 	 	 	 	 	 dˆfd„Šdˆˆˆfd„}	 	 	 	 	 	 dˆˆˆfd„}| j                  ||t        ‰‰«      t        ‰‰«      | j                  ¬«      S )Nc                óÐ  •— ‰dk(  r |t        d| |«      «      gS ‰dk(  r |t        d| |«      «      gS | j                  «       |j                  «       z  j                  t        j                  «      } |t        d|«      «      }|t        ‰«      z
  } |t        d| |«      «      |t        d«      z
  |z  z  }t        |t        d«      k  t        d «      «      j                  |«      gS )Nr   Ú	covar_poprQ   Ú
covar_sampÚsum)r   rŽ   rs   r   r�   r   r   rD   )r°   r±   ÚwrapÚis_validÚ	n_samplesÚdenominatorÚrescaledÚddofs          €r1   Ú_covz!DuckDBNamespace.cov.<locals>._covÀ   sÚ   ø€ ð �qŠyÙœQ˜{¨B°Ó3Ó4Ð5Ð5Ø�qŠyÙœQ˜|¨R°Ó4Ó5Ð6Ð6ØŸ™›¨¯©«Ñ7×=Ñ=¼m×>RÑ>RÓSˆHÙœQ˜u hÓ/Ó0ˆIØ#¤c¨$£iÑ/ˆKÙœA˜l¨B°Ó3Ó4ØœS ›VÑ# {Ñ2ñˆHô ˜¬¨A«Ñ.´°D³	Ó:×DÑDÀXÓNÐOÐOr3   c                ó^   •— | j                  ‰«      }| j                  ‰«      } ‰||d„ «      S )Nc                ó   — | S r-   rk   )rl   s    r1   rV   z3DuckDBNamespace.cov.<locals>.func.<locals>.<lambda>Õ   s   € ¨!€ r3   ©r¯   )rm   r°   r±   rÀ   r²   r³   s      €€€r1   r   z!DuckDBNamespace.cov.<locals>.funcÒ   s2   ø€ Ø×0Ñ0°Ó3ˆBØ×0Ñ0°Ó3ˆBÙ˜˜B¡Ó,Ð,r3   c                ód   •‡— | j                  ‰«      }| j                  ‰«      } ‰||ˆfd„«      S )Nc                ó0   •— t        | ‰j                  «      S r-   )r   Úpartition_by)rl   Úinputss    €r1   rV   z7DuckDBNamespace.cov.<locals>.window_f.<locals>.<lambda>Ü   s   ø€ Ô*;¸A¸v×?RÑ?RÓ*S€ r3   rÃ   )rm   rÇ   r°   r±   rÀ   r²   r³   s    `  €€€r1   Úwindow_fz%DuckDBNamespace.cov.<locals>.window_f×   s5   ù€ ð ×0Ñ0°Ó3ˆBØ×0Ñ0°Ó3ˆBÙ˜˜BÓ SÓTÐTr3   )r�   Úwindow_functionr‚   rƒ   r0   )r°   r	   r±   r	   rº   z"Callable[[Expression], Expression]r…   r†   r„   )rm   r   rÇ   r¤   r…   r†   r‡   )r/   r²   r³   r¿   r   rÈ   rÀ   s    ```  @r1   ÚcovzDuckDBNamespace.cov¿   sŒ   û€ ð	PØð	PØ *ð	PØ2Tð	Pàõ	P÷$	-ð
	UØð	UØ)Að	Uà÷	Uð �z‰zØØ$Ü"?ÀÀ1Ó"EÜ9¸!¸QÓ?Ø—M‘Mð ó 
ð 	
r3   )rQ   é   c                ój   ‡— | j                   }dˆfd„}| j                  |t        ‰Ž t        ‰Ž |¬«      S )Nc                óþ   •— ‰D ����ci c].  }t         || «      gt        || g «      ¢­ddiŽD ]	  \  }}}||“Œ Œ0 }}}}}dj                  d„ |j                  «       D «       «      }t	        d|› d�«      gS c c}}}}w )NÚstrictTz, c              3  ó2   K  — | ]  \  }}d |› d|› �–— Œ y­w)ú"z" := Nrk   )rN   r=   rŒ   s      r1   rP   z7DuckDBNamespace.struct.<locals>.func.<locals>.<genexpr>ô   s&   è ø€ ò #Ù)2¨¨s�!�D�6˜˜s˜eÔ$ñ#ùs   ‚zstruct_pack(ú))Úzipr   Újoinr_   r   )rm   ÚexprÚnative_exprÚ_ÚaliasÚnames_to_colsÚ
field_argsrH   s          €r1   r   z$DuckDBNamespace.struct.<locals>.funcê   s²   ø€ ð "÷7ñ 7àÜ-0Ù˜“Hð.ä6°t¸RÀÓDò.ð  ñ.ò7ñ *�K  Eð �{Ñ"ð7Øð7ˆMó 7ð Ÿ™ñ #Ø6C×6IÑ6IÓ6Kô#ó ˆJô # \°*°¸QÐ#?Ó@ÐAÐAùõ7s   ‰3A7
r€   r„   ©r.   r9   r   r   ©r/   rH   r0   r   s    `  r1   ÚstructzDuckDBNamespace.structæ   s@   ø€ à—-‘-ˆõ	Bð �z‰zØÜ"?ÀÐ"GÜ9¸5ÐAØð	 ó 
ð 	
r3   c                ój   ‡— | j                   }dˆfd„}| j                  |t        ‰Ž t        ‰Ž |¬«      S )Nc                óf   •— ‰D ��cg c]  } || «      D ]  }|‘Œ Œ }}}t        dg|¢­Ž gS c c}}w )NÚ	list_packr¨   )rm   rÔ   rÕ   r{   rH   s       €r1   r   z"DuckDBNamespace.list.<locals>.func  s?   ø€ Ø,1×N DÁTÈ"ÃXÒN°k’KÐN�KÐNˆDÑNÜ�kÐ) DÒ)Ð*Ð*ùó Os   ‡-r€   r„   rÚ   rÛ   s    `  r1   rX   zDuckDBNamespace.list   s?   ø€ Ø—-‘-ˆõ	+ð �z‰zØÜ"?ÀÐ"GÜ9¸5ÐAØð	 ó 
ð 	
r3   )r0   r$   r…   ÚNone)r…   r   )r…   ztype[DuckDBExpr])r…   ztype[DuckDBLazyFrame])r=   Ústrr>   r	   r…   r	   )rA   r   r…   r	   r-   )rE   r	   rA   r	   rD   zExpression | Noner…   r	   )rH   r	   r…   r	   )r_   zIterable[DuckDBLazyFrame]r`   r%   r…   r   )rH   r   rn   rá   r~   Úboolr…   r   )rH   r   r…   r   )rA   r(   rœ   zIntoDType | Noner…   r   )r…   r   )r²   r   r³   r   r´   r&   r…   r   )r²   r   r³   r   r¿   Úintr…   r   )Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBr+   Ú__annotations__r2   Úpropertyr7   r9   r;   r?   rB   rF   rI   rg   r   r”   r   rª   r®   rÊ   r   Úbackend_versionrÜ   rX   rk   r3   r1   r*   r*   .   s7  … ð '5×&;Ñ&;€O�^Ó;ó ð ò<ó ð<ð òó ðð òó ðó%óð (,ð	;àð;ð ð;ð %ð	;ð
 
ó;ó(ð'Ø.ð'Ø8Dð'à	ó'ð*
Ø ð
Ø-0ð
Ø@Dð
à	ó
ó&	Hó
ó2	
ð
Øð
Ø *ð
Ø7Hð
à	ó
ó&%
ðN €X×Ñ˜fÓ%ò
ó &ð
ô2
r3   r*   r"   )6Ú
__future__r   ry   Ú	functoolsr   Ú	itertoolsr   Útypingr   r   r\   r   r	   Únarwhals._duckdb.dataframer   Únarwhals._duckdb.exprr   Únarwhals._duckdb.selectorsr   Únarwhals._duckdb.utilsr   r   r   r   r   r   r   r   r   r   Únarwhals._expression_parsingr   r   r   Únarwhals._sql.namespacer   Únarwhals._utilsr   r   Úcollections.abcr   r    r!   r"   Únarwhals._compliant.windowr#   r$   Únarwhals.typingr%   r&   r'   r(   rt   r*   rk   r3   r1   ú<module>rù      s…   ðÝ "ã Ý Ý ß %ã ß /å 6Ý ,Ý >÷÷ ÷ ÷ñ õ
 1ß 4áß;Ñ;å'å7Ý'ßYÓYà
×
Ñ
€ô^
Ø� *Ð.@À*ÐLÑMõ^
r3   