Ë
    ýéñià  ã            	      óh  — 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 d dlmZmZm Z  d dl!m"Z" d dl#m$Z$m%Z%m&Z& er&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/m0Z0m1Z1m2Z2 ejf                  Z3 G d„ de"eedef   «      Z4y)é    )Ú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)Úcombine_alias_output_namesÚcombine_evaluate_output_namesÚ!evaluate_output_names_and_aliases)ÚSQLNamespace)ÚImplementationÚrequiresÚ
zip_strict)Ú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 ej.                  d«      dd„«       Zy	)#ÚDuckDBNamespacer   Ú_implementationc               ó   — || _         y ©N)Ú_version)ÚselfÚversions     ú\/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/narwhals/_duckdb/namespace.pyÚ__init__zDuckDBNamespace.__init__2   s	   € Øˆ�ó    c                ó,   — t        j                  | «      S r,   )r   Úfrom_namespace©r.   s    r0   Ú	selectorszDuckDBNamespace.selectors5   s   € ä&×5Ñ5°dÓ;Ð;r2   c                ó   — t         S r,   r   r5   s    r0   Ú_exprzDuckDBNamespace._expr9   s   € äÐr2   c                ó   — t         S r,   r
   r5   s    r0   Ú
_lazyframezDuckDBNamespace._lazyframe=   s   € äÐr2   c                ó   — t        |g|¢­Ž S r,   )r   )r.   ÚnameÚargss      r0   Ú	_functionzDuckDBNamespace._functionA   s   € Ü˜Ð$˜tÒ$Ð$r2   c                ó   — t        |«      S r,   )r   )r.   Úvalues     r0   Ú_litzDuckDBNamespace._litD   s   € Ü�5‹zÐr2   Nc                óT   — |€t        ||«      S t        ||«      j                  |«      S r,   )r   Ú	otherwise)r.   Ú	conditionr@   rC   s       r0   Ú_whenzDuckDBNamespace._whenG   s/   € ð ÐÜ˜	 5Ó)Ð)Ü�I˜uÓ%×/Ñ/°	Ó:Ð:r2   c                ó   — t        |Ž S r,   )r   )r.   Úexprss     r0   Ú	_coalescezDuckDBNamespace._coalesceQ   s   € Ü Ð'Ð'r2   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ÚxrL   s     €r0   ú	<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)rN   Úys     r0   ú<lambda>z(DuckDBNamespace.concat.<locals>.<lambda>f   s   €  !§'¡'¨!£*€ r2   )
Ú_native_frameÚlistrL   ÚallÚ	TypeErrorÚnativeÚduckdbÚsqlÚ_with_nativer   )
r.   ÚitemsÚhowÚitemÚnative_itemsÚfirstÚmsgÚresÚ_itemrL   s
            @r0   ÚconcatzDuckDBNamespace.concatT   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,   © )rM   ÚeÚdfs     €r0   rO   z;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>m   s   øè ø€ Ò<RÀq¹Q¸r¿UÑ<Rùs   ƒÚ	separatorc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr,   )Úisnull)rM   Úss     r0   rO   z;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>q   s   è ø€ Ò-G¸Q¨a¯h©h¯jÑ-Gùs   ‚c              3  óF   K  — | ]  }|j                  t        «      –— Œ y ­wr,   )ÚcastÚVARCHAR)rM   Úcs     r0   rO   z;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>r   s   è ø€ Ò6¨A˜Ÿ™œwŸÑ6ùó   ‚!)r   Úfrom_iterabler   Útupler   ÚoperatorÚor_r   )rl   ÚcolsÚ	null_maskÚcols_strrG   Úignore_nullsrm   s   `   €€€r0   Úfuncz(DuckDBNamespace.concat_str.<locals>.funcl   st   ù€ Ü).×)<Ñ)<Ó<RÈEÔ<RÓ)RˆDÙÜ" DÐ>°IÑ>Ð?Ð?Ü˜“;ˆDÜœxŸ|™|Ñ-GÀ$Ô-GÓHˆIÙ6°Ô6ˆHÜ˜)˜¤Z°Ð%OÀYÑ%OÓPÐQÐQr2   ©ÚcallÚevaluate_output_namesÚalias_output_namesr/   ©rl   r   Úreturnúlist[Expression])r8   r   r   r-   )r.   rm   r}   rG   r~   s    ``` r0   r   zDuckDBNamespace.concat_stri   s;   ú€ ÷	Rð �z‰zØÜ"?ÀÐ"GÜ9¸5ÐAØ—M‘Mð	 ó 
ð 	
r2   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   ©rM   Úcols     r0   rO   z@DuckDBNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s   è ø€ Ò)XÈCÔ*:¸3ÄÀAÃ×*GÑ)Xùru   c              3  óv   K  — | ]1  }|j                  «       j                  t        j                  «      –— Œ3 y ­wr,   )Ú	isnotnullrr   r   ÚBIGINTr‰   s     r0   rO   z@DuckDBNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>�   s'   è ø€ ÒZÈc˜sŸ}™}›×3Ñ3´M×4HÑ4H×IÑZùs   ‚79)rw   r   rx   Úadd)rz   ÚtotalÚcounts      r0   r~   z-DuckDBNamespace.mean_horizontal.<locals>.func}   sH   € Ü˜“;ˆDÜœ8Ÿ<™<Ñ)XÐSWÔ)XÓYˆEÜÜ—‘ÑZÐUYÔZóˆEð ˜5‘=Ð r2   )rz   zIterable[Expression]r„   r	   )r8   Ú_from_elementwise_horizontal_op)r.   rG   r~   s      r0   Úmean_horizontalzDuckDBNamespace.mean_horizontal|   s%   € ó	!ð :ˆt�z‰z×9Ñ9¸$ÐGÀÒGÐGr2   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   rZ   r   r-   r   rr   )rl   rc   ÚtzÚtargetÚdtyper.   r@   s       €€€r0   r~   z!DuckDBNamespace.lit.<locals>.funcˆ   sg   ø€ Ü˜%¤Ô&©uØM�Ü)¨#Ó.Ð.ä! "§)¡)Ó,ˆBØÐ Ü1°%¸¿¹ÈÓK�Ü˜E›
Ÿ™¨Ó/Ð0Ð0Ü˜“J�<Ðr2   c                ó   •—  ‰| «      S r,   rj   )rl   Ú_window_inputsr~   s     €r0   Úwindow_funcz(DuckDBNamespace.lit.<locals>.window_func“   s   ø€ ñ ˜“8ˆOr2   c                ó   — dgS )NÚliteralrj   ©Ú_dfs    r0   rU   z%DuckDBNamespace.lit.<locals>.<lambda>›   s   € ¨y¨k€ r2   )r�   r‚   r/   rƒ   )rl   r   rœ   zWindowInputs[Expression]r„   r…   ©r8   r-   )r.   r@   rš   r�   r~   s   ``` @r0   r   zDuckDBNamespace.lit‡   sP   û€ ÷		 ð	Øð	Ø1Ið	àõ	ð
 �z‰zØØÙ"9Ø#Ø—M‘Mð ó 
ð 	
r2   c                óJ   — dd„}| j                  |d„ d | j                  ¬«      S )Nc                ó   — t        d«      gS )Nr�   )r   r    s    r0   r~   z!DuckDBNamespace.len.<locals>.func¡   s   € Ü�g“J�<Ðr2   c                ó   — dgS )NÚlenrj   r    s    r0   rU   z%DuckDBNamespace.len.<locals>.<lambda>¦   s   € ¨u¨g€ r2   r   )r¡   r   r„   r…   r¢   )r.   r~   s     r0   r¦   zDuckDBNamespace.len    s/   € ó	 ð �z‰zØÙ"5Ø#Ø—M‘Mð	 ó 
ð 	
r2   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   )rl   Úa_Úb_ÚaÚbs      €€r0   r~   z"DuckDBNamespace.corr.<locals>.func²   s5   ø€ Ø×0Ñ0°Ó3ˆBØ×0Ñ0°Ó3ˆBÜ�f˜b "Ó%Ð&Ð&r2   r   rƒ   )r—   r8   r   r   r-   )r.   r®   r¯   Úmethodrc   r~   s    ``   r0   rª   zDuckDBNamespace.corr«   sX   ù€ ð �YÒØGˆCÜ% cÓ*Ð*ö	'ð
 �z‰zØÜ"?ÀÀ1Ó"EÜ9¸!¸QÓ?Ø—M‘Mð	 ó 
ð 	
r2   )rP   é   c                ój   ‡— | j                   }dˆfd„}| j                  |t        ‰Ž t        ‰Ž |¬«      S )Nc                óø   •— ‰D ����ci c]+  }t         || «      gt        || g «      ¢­Ž D ]	  \  }}}||“Œ Œ- }}}}}dj                  d„ |j                  «       D «       «      }t	        d|› d�«      gS c c}}}}w )Nz, c              3  ó2   K  — | ]  \  }}d |› d|› �–— Œ y­w)ú"z" := Nrj   )rM   r<   rŠ   s      r0   rO   z7DuckDBNamespace.struct.<locals>.func.<locals>.<genexpr>Ê   s&   è ø€ ò #Ù)2¨¨s�!�D�6˜˜s˜eÔ$ñ#ùs   ‚zstruct_pack(ú))r   r   Újoinr^   r   )rl   ÚexprÚnative_exprÚ_ÚaliasÚnames_to_colsÚ
field_argsrG   s          €r0   r~   z$DuckDBNamespace.struct.<locals>.funcÂ   s¨   ø€ ð "÷7ñ 7àÜ-7Ù˜“Hð.Ü@ÀÀrÈ2ÓNò.ò7ñ *�K  Eð �{Ñ"ð7Øð7ˆMó 7ð Ÿ™ñ #Ø6C×6IÑ6IÓ6Kô#ó ˆJô # \°*°¸QÐ#?Ó@ÐAÐAùõ7s   ‰0A4
r   rƒ   )r-   r8   r   r   )r.   rG   r/   r~   s    `  r0   ÚstructzDuckDBNamespace.struct¾   s@   ø€ à—-‘-ˆõ	Bð �z‰zØÜ"?ÀÐ"GÜ9¸5ÐAØð	 ó 
ð 	
r2   )r/   r#   r„   ÚNone)r„   r   )r„   ztype[DuckDBExpr])r„   ztype[DuckDBLazyFrame])r<   Ústrr=   r	   r„   r	   )r@   r   r„   r	   r,   )rD   r	   r@   r	   rC   zExpression | Noner„   r	   )rG   r	   r„   r	   )r^   zIterable[DuckDBLazyFrame]r_   r$   r„   r   )rG   r   rm   rÀ   r}   Úboolr„   r   )rG   r   r„   r   )r@   r'   rš   zIntoDType | Noner„   r   )r„   r   )r®   r   r¯   r   r°   r%   r„   r   )Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBr*   Ú__annotations__r1   Úpropertyr6   r8   r:   r>   rA   rE   rH   rf   r   r’   r   r¦   rª   r   Úbackend_versionr¾   rj   r2   r0   r)   r)   -   s,  … ð '5×&;Ñ&;€O�^Ó;ó ð ò<ó ð<ð òó ðð òó ðó%óð (,ð	;àð;ð ð;ð %ð	;ð
 
ó;ó(ð'Ø.ð'Ø8Dð'à	ó'ð*
Ø ð
Ø-0ð
Ø@Dð
à	ó
ó&	Hó
ó2	
ð
Øð
Ø *ð
Ø7Hð
à	ó
ð& €X×Ñ˜fÓ%ò
ó &ñ
r2   r)   r!   )5Ú
__future__r   rx   Ú	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   Únarwhals._expression_parsingr   r   r   Únarwhals._sql.namespacer   Únarwhals._utilsr   r   r   Úcollections.abcr   r    r!   Únarwhals._compliant.windowr"   r#   Únarwhals.typingr$   r%   r&   r'   rs   r)   rj   r2   r0   ú<module>r×      s…   ðÝ "ã Ý Ý ß %ã ß /å 6Ý ,Ý >÷
÷ 
õ 
÷ñ õ
 1ß @Ñ @áß1å'å7Ý'ßYÓYà
×
Ñ
€ôg
Ø� *Ð.@À*ÐLÑMõg
r2   