
    g                       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 er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Z G d ded         Zy)    )annotationsN)reduce)TYPE_CHECKING)Any)Literal)Sequence)
DuckDBExpr)narwhals_to_native_dtype)combine_root_names)parse_into_exprs)reduce_output_names)CompliantNamespace)DuckDBLazyFrame)IntoDuckDBExpr)DType)Versionduckdb.Expressionc                d    t        | j                  j                  |      j                  d         S Nr   )str_native_frameselectcolumns)dfcolumns     O/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_duckdb/namespace.pyget_column_namer      s)    r&&v.66q9::    c                  h    e Z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y)DuckDBNamespacec                    || _         || _        y N)_backend_version_version)selfbackend_versionversions      r   __init__zDuckDBNamespace.__init__    s     /r   c                Z    dd}t        |ddd d d| j                  | j                  i 	      S )Nc                X    ddl m} | j                  D cg c]
  } ||       c}S c c}w )Nr   )ColumnExpression)duckdbr+   r   )r   r+   col_names      r   _allz!DuckDBNamespace.all.<locals>._all%   s'    /?AzzJz8$X.zJJJs   'r   allF	calldepthfunction_name
root_namesoutput_namesreturns_scalarr&   r'   kwargsr   r   returnlist[duckdb.Expression]r	   r#   r$   )r%   r.   s     r   r/   zDuckDBNamespace.all$   s<    	K
   11MM

 
	
r   c                  |dk(  rd}t        |      |dk(  rd}t        |      |d   }|j                  |dk(  r$t        fd|dd  D              sd	}t        |      t	        j
                  d
 d |D              }|j                  |      S )N
horizontalz?horizontal concat not supported for duckdb. Please join insteaddiagonalzNot implemented yetr   verticalc              3  <   K   | ]  }|j                   k(    y wr"   )schema).0xrA   s     r   	<genexpr>z)DuckDBNamespace.concat.<locals>.<genexpr>D   s     (OYV);Ys      z&inputs should all have the same schemac                $    | j                  |      S r"   )union)rC   ys     r   <lambda>z(DuckDBNamespace.concat.<locals>.<lambda>H   s    r   c              3  4   K   | ]  }|j                     y wr"   )r   )rB   items     r   rD   z)DuckDBNamespace.concat.<locals>.<genexpr>H   s     %KUTd&8&8U   )	TypeErrorNotImplementedErrorrA   r/   	functoolsr   _from_native_frame)r%   itemshowmsgfirstresrA   s         @r   concatzDuckDBNamespace.concat6   s     ,SCC. *'C%c**a*S(OU12Y(O%O:CC. #%KU%K
 '',,r   c                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
N	namespacec                    D cg c]  } ||       D ]  }|  }}}t        | |d         }t        t        j                  |      j	                  |      gS c c}}w r   )r   r   operatorand_aliasr   _exprccolsr-   parsed_exprss        r   funcz,DuckDBNamespace.all_horizontal.<locals>.funcO   sX    #/C<%rAAA<DC&r473H8==$/55h?@@ D   Ac              3  4   K   | ]  }|j                     y wr"   _depthrB   rC   s     r   rD   z1DuckDBNamespace.all_horizontal.<locals>.<genexpr>V        51ahhrL   rE   all_horizontalFexprsr0   r8   r   r	   maxr   r   r#   r$   r%   rj   rb   ra   s      @r   ri   zDuckDBNamespace.all_horizontalL   sk    '?$?	A
 5559*),7,\:  11MMU#

 
	
r   c                    t        |d| id	fd}t        |t        d D              dz   dt              t	              d| j
                  | j                  d|i	      S )
NrX   c                    D cg c]  } ||       D ]  }|  }}}t        | |d         }t        t        j                  |      j	                  |      gS c c}}w r   )r   r   rZ   or_r\   r]   s        r   rb   z,DuckDBNamespace.any_horizontal.<locals>.funcc   sX    #/C<%rAAA<DC&r473H8<<.44X>?? Drc   c              3  4   K   | ]  }|j                     y wr"   re   rg   s     r   rD   z1DuckDBNamespace.any_horizontal.<locals>.<genexpr>j   rh   rL   rE   or_horizontalFrj   r0   r8   rk   rm   s      @r   any_horizontalzDuckDBNamespace.any_horizontal`   sk    '?$?	@
 5559)),7,\:  11MMU#

 
	
r   c                    ddl m t        |d| idfd}t        |t	        d D              dz   dt              t              d| j                  | j                  d	|i
	      S )Nr   FunctionExpressionrX   c                    D cg c]  } ||       D ]  }|  }}}t        | |d         } dg| j                  |      gS c c}}w )Nr   greatestr   r\   r   r^   r_   r`   r-   rv   ra   s        r   rb   z,DuckDBNamespace.max_horizontal.<locals>.funcy   sW    #/C<%rAAA<DC&r473H&z9D9??IJJ D   Ac              3  4   K   | ]  }|j                     y wr"   re   rg   s     r   rD   z1DuckDBNamespace.max_horizontal.<locals>.<genexpr>   rh   rL   rE   max_horizontalFrj   r0   r8   	r,   rv   r   r	   rl   r   r   r#   r$   r%   rj   rb   rv   ra   s      @@r   r}   zDuckDBNamespace.max_horizontalt   sn    -'?$?	K
 5559*),7,\:  11MMU#

 
	
r   c                    ddl m t        |d| idfd}t        |t	        d D              dz   dt              t              d| j                  | j                  d	|i
	      S )Nr   ru   rX   c                    D cg c]  } ||       D ]  }|  }}}t        | |d         } dg| j                  |      gS c c}}w )Nr   leastry   rz   s        r   rb   z,DuckDBNamespace.min_horizontal.<locals>.func   sW    #/C<%rAAA<DC&r473H&w66<<XFGG Dr{   c              3  4   K   | ]  }|j                     y wr"   re   rg   s     r   rD   z1DuckDBNamespace.min_horizontal.<locals>.<genexpr>   rh   rL   rE   min_horizontalFrj   r0   r8   r~   r   s      @@r   r   zDuckDBNamespace.min_horizontal   sn    -'?$?	H
 5559*),7,\:  11MMU#

 
	
r   c                V    t        j                  || j                  | j                  dS )N)r&   r'   )r	   from_column_namesr#   r$   )r%   column_namess     r   colzDuckDBNamespace.col   s&    ++4+@+@$--
 	
r   c                z     ddl m d fd}t        |ddd dgd j                   j                  i 	      S )	Nr   )ConstantExpressionc                    <       j                  t        j                              j                  d      gS        j                  d      gS )N)r'   literal)castr
   r$   r\   )_dfr   dtyper%   values    r   rb   z!DuckDBNamespace.lit.<locals>.func   sV     &u-T25$--PQU9% 
 'u-33I>??r   litr   T)r2   r3   r4   r5   r6   r&   r'   r7   r   r   r9   r:   )r,   r   r	   r#   r$   )r%   r   r   rb   r   s   ``` @r   r   zDuckDBNamespace.lit   sH    -	@ 	@ # 11MM

 
	
r   c                \    dd}t        |ddd dgd| j                  | j                  i 	      S )Nc                >    ddl m}  |d      j                  d      gS )Nr   ru   countlen)r,   rv   r\   )r   rv   s     r   rb   z!DuckDBNamespace.len.<locals>.func   s    1&w/55e<==r   r   r   Tr0   r   r;   )r%   rb   s     r   r   zDuckDBNamespace.len   s=    	>
  11MM

 
	
r   N)r&   ztuple[int, ...]r'   r   r9   None)r9   r	   )rQ   zSequence[DuckDBLazyFrame]rR   z-Literal['horizontal', 'vertical', 'diagonal']r9   r   )rj   r   r9   r	   )r   r   r9   r	   )r   r   r   zDType | Noner9   r	   )__name__
__module____qualname__r(   r/   rV   ri   rs   r}   r   r   r   r    r   r   r    r       sP     
$-(- ;	-
 
-,
(
(
,
,


0
r   r    )r   r   r   r   r9   r   )
__future__r   rO   rZ   r   typingr   r   r   r   narwhals._duckdb.exprr	   narwhals._duckdb.utilsr
   narwhals._expression_parsingr   r   r   narwhals.typingr   r,   narwhals._duckdb.dataframer   narwhals._duckdb.typingr   narwhals.dtypesr   narwhals.utilsr   r   r    r   r   r   <module>r      s[    "         , ; ; 9 < .:6%&;n
()<= n
r   