
    h!                    
   S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKrS SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SK J!r!  S SK J"r"  S SK#J$r$  \(       a  S SK%J&r&  S SK'J(r(  S SK'J)r)  S SK#J*r*   " S S\\\\RV                  4   5      r, " S S \S!\RZ                  \4   5      r. " S" S#\S!\RZ                  \4   \5      r/g)$    )annotationsN)reduce)chain)TYPE_CHECKING)Iterable)Sequence)CoalesceOperatorFunctionExpression)BIGINT)VARCHAR)CompliantThen)LazyNamespace)LazyWhenDuckDBLazyFrame
DuckDBExpr)DuckDBSelectorNamespace)
concat_str)lit)narwhals_to_native_dtype)when)combine_alias_output_names)combine_evaluate_output_names)Implementation)DType)ConcatMethod)NonNestedLiteral)Versionc                     \ rS rSr% \R
                  rS\S'   SS jr\	SS j5       r
\	SS j5       r\	SS j5       r      SS jr        SS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jr      SS jrSS jrSrg)DuckDBNamespace%   r   _implementationc                   Xl         X l        g N_backend_version_version)selfbackend_versionversions      L/var/www/html/env/lib/python3.13/site-packages/narwhals/_duckdb/namespace.py__init__DuckDBNamespace.__init__*   s     /    c                .    [         R                  " U 5      $ r&   )r   from_namespacer*   s    r-   	selectorsDuckDBNamespace.selectors.   s    &55d;;r0   c                    [         $ r&   r   r3   s    r-   _exprDuckDBNamespace._expr2       r0   c                    [         $ r&   r   r3   s    r-   
_lazyframeDuckDBNamespace._lazyframe6   s    r0   c                 ^ U Vs/ s H  o3R                   PM     nn[        U5      nUS   nUR                  mUS:X  a*  [        U4S jUSS   5       5      (       d  Sn[	        U5      e[        S U5      nUR                  U5      $ s  snf )Nr   verticalc              3  @   >#    U  H  oR                   T:H  v   M     g 7fr&   )schema).0xr@   s     r-   	<genexpr>)DuckDBNamespace.concat.<locals>.<genexpr>A   s     (OYV);Ys      z&inputs should all have the same schemac                $    U R                  U5      $ r&   )union)rB   ys     r-   <lambda>(DuckDBNamespace.concat.<locals>.<lambda>D   s    !''!*r0   )_native_framelistr@   all	TypeErrorr   _with_native)	r*   itemshowitemnative_itemsfirstmsgresr@   s	           @r-   concatDuckDBNamespace.concat:   s     8==ut**u=Ua*S(OU12Y(O%O%O:CC. ,l;!!#&& >s   Bc                  ^^^ SUUU4S jjnU R                  U[        T6 [        T6 U R                  U R                  S9$ )Nc                  >^  [        [        R                  " U 4S jT 5       5      5      nT	(       d  [        [        R
                  S U 5       5      n[        U5       VVs/ s HM  u  p4U[        U5      S-
  :X  a  UR                  [        5      4OUR                  [        5      [        T
5      4PMO     snn VVs/ s H  nU  H  nUPM     M     nnn[        U) [        U6 5      /$ [        UST
06/$ s  snnf s  snnf )Nc              3  2   >#    U  H  o" T5      v   M     g 7fr&    )rA   exprdfs     r-   rC   ;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>N   s     +GDHHs   c              3  @   #    U  H  oR                  5       v   M     g 7fr&   )isnull)rA   ss     r-   rC   r_   P   s     8RTTs   rE   	separator)rL   r   from_iterabler   operatoror_	enumeratelencastr   r   r   r   )r^   colsnull_mask_resulticolrB   rH   cols_separatedexprsignore_nullsrc   s   `       r-   func(DuckDBNamespace.concat_str.<locals>.funcM   s   +++G+GGHD#)(,,8RT8R#S  '0o	 '6FA D	A- '*,!hhw/Y@A '6		"      	" ..
N0KLMM"D>I>??	"s   "AC6=C<callevaluate_output_namesalias_output_namesr+   r,   r^   r   returnlist[duckdb.Expression]r7   r   r   r(   r)   )r*   rc   rp   ro   rq   s    ``` r-   r   DuckDBNamespace.concat_strG   sJ    	@ 	@$ zz"?"G95A 11MM  
 	
r0   c                z   ^ SU4S jjnU R                  U[        T6 [        T6 U R                  U R                  S9$ )Nc                T   >^  U 4S jT 5       n[        [        R                  U5      /$ )Nc              3  D   >#    U  H  o" T5        H  o"v   M     M     g 7fr&   r\   rA   r7   cr^   s      r-   rC   ?DuckDBNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>i        <5%%)QA)A5    )r   re   and_r^   rj   ro   s   ` r-   rq   ,DuckDBNamespace.all_horizontal.<locals>.funch   s!    <5<D8==$/00r0   rs   rw   rz   r*   ro   rq   s    ` r-   all_horizontalDuckDBNamespace.all_horizontalg   sC    	1 zz"?"G95A 11MM  
 	
r0   c                z   ^ SU4S jjnU R                  U[        T6 [        T6 U R                  U R                  S9$ )Nc                T   >^  U 4S jT 5       n[        [        R                  U5      /$ )Nc              3  D   >#    U  H  o" T5        H  o"v   M     M     g 7fr&   r\   r   s      r-   rC   ?DuckDBNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>v   r   r   )r   re   rf   r   s   ` r-   rq   ,DuckDBNamespace.any_horizontal.<locals>.funcu   s!    <5<D8<<.//r0   rs   rw   rz   r   s    ` r-   any_horizontalDuckDBNamespace.any_horizontalt   C    	0 zz"?"G95A 11MM  
 	
r0   c                z   ^ SU4S jjnU R                  U[        T6 [        T6 U R                  U R                  S9$ )Nc                8   >^  U 4S jT 5       n[        S/UQ76 /$ )Nc              3  D   >#    U  H  o" T5        H  o"v   M     M     g 7fr&   r\   r   s      r-   rC   ?DuckDBNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r   greatestr
   r   s   ` r-   rq   ,DuckDBNamespace.max_horizontal.<locals>.func   s     <5<D&z9D9::r0   rs   rw   rz   r   s    ` r-   max_horizontalDuckDBNamespace.max_horizontal   sC    	; zz"?"G95A 11MM  
 	
r0   c                z   ^ SU4S jjnU R                  U[        T6 [        T6 U R                  U R                  S9$ )Nc                8   >^  U 4S jT 5       n[        S/UQ76 /$ )Nc              3  D   >#    U  H  o" T5        H  o"v   M     M     g 7fr&   r\   r   s      r-   rC   ?DuckDBNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   r   r   leastr
   r   s   ` r-   rq   ,DuckDBNamespace.min_horizontal.<locals>.func   s     <5<D&w6677r0   rs   rw   rz   r   s    ` r-   min_horizontalDuckDBNamespace.min_horizontal   sC    	8 zz"?"G95A 11MM  
 	
r0   c                z   ^ SU4S jjnU R                  U[        T6 [        T6 U R                  U R                  S9$ )Nc                T   >^  U 4S jT 5       n[        [        R                  U5      /$ )Nc              3  l   >#    U  H)  o" T5        H  n[        U[        S 5      5      v   M     M+     g7fr   Nr	   r   )rA   r7   rm   r^   s      r-   rC   ?DuckDBNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   s1     ZuePUVXPY$S#a&11PY1us   14r   re   addr   s   ` r-   rq   ,DuckDBNamespace.sum_horizontal.<locals>.func   s!    ZuZD8<<.//r0   rs   rw   rz   r   s    ` r-   sum_horizontalDuckDBNamespace.sum_horizontal   r   r0   c                n   ^ SU4S jjn[        U[        T6 [        T6 U R                  U R                  S9$ )Nc                   > T VVs/ s H  o" U 5        H  o"PM     M     nnn[        [        R                  S U 5       5      [        [        R                  S U 5       5      -  /$ s  snnf )Nc              3  L   #    U  H  n[        U[        S 5      5      v   M     g7fr   r   rA   rm   s     r-   rC   @DuckDBNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s!     )XSWC*:3A*G*GSWs   "$c              3  f   #    U  H'  oR                  5       R                  [        5      v   M)     g 7fr&   )	isnotnullri   r   r   s     r-   rC   r      s$     +YTXSMMO,@,@,H,HTXs   /1r   )r^   r7   r   rj   ro   s       r-   rq   -DuckDBNamespace.mean_horizontal.<locals>.func   sd    #(<5%%)QA)A5D< 8<<)XSW)XYX\\+YTX+YZ[  =s   A(rs   rw   )r   r   r   r(   r)   r   s    ` r-   mean_horizontalDuckDBNamespace.mean_horizontal   s:    	 "?"G95A 11MM
 	
r0   c                (    [         R                  XS9$ )N)context)
DuckDBWhen	from_expr)r*   	predicates     r-   r   DuckDBNamespace.when   s    ##I#<<r0   c                l   ^ ^^ SUU U4S jjnT R                  US S T R                  T R                  S9$ )Nc                |   > Tb-  [        T5      R                  [        TTR                  S95      /$ [        T5      /$ )N)r,   )r   ri   r   r)   )_dfdtyper*   values    r-   rq   !DuckDBNamespace.lit.<locals>.func   s?     JOO0N 
 J<r0   c                    S/$ )Nliteralr\   r   s    r-   rI   %DuckDBNamespace.lit.<locals>.<lambda>   s    ykr0   )ru   rv   r+   r,   r   r   rx   ry   r7   r(   r)   )r*   r   r   rq   s   ``` r-   r   DuckDBNamespace.lit   s>    	  	  zz"9# 11MM  
 	
r0   c                \    SS jnU R                  US S U R                  U R                  S9$ )Nc                    [        S5      /$ )Ncountr
   r   s    r-   rq   !DuckDBNamespace.len.<locals>.func   s    &w/00r0   c                    S/$ )Nrh   r\   r   s    r-   rI   %DuckDBNamespace.len.<locals>.<lambda>   s    ugr0   rs   r   r   )r*   rq   s     r-   rh   DuckDBNamespace.len   s8    	1 zz"5# 11MM  
 	
r0   r'   N)r+   ztuple[int, ...]r,   r    rx   None)rx   r   )rx   ztype[DuckDBExpr])rx   ztype[DuckDBLazyFrame])rP   zIterable[DuckDBLazyFrame]rQ   r   rx   r   )ro   r   rc   strrp   boolrx   r   )ro   r   rx   r   )r   r   rx   r   )r   r   r   zDType | type[DType] | Nonerx   r   )rx   r   )__name__
__module____qualname____firstlineno__r   DUCKDBr$   __annotations__r.   propertyr4   r7   r;   rW   r   r   r   r   r   r   r   r   r   rh   __static_attributes__r\   r0   r-   r"   r"   %   s     '5&;&;O^;  < <    '.'8D'	'

 
 	

 

@





$=
%
.H
	
(

r0   r"   c                  @   ^  \ rS rSr\SS j5       rSU 4S jjrSrU =r$ )r      c                    [         $ r&   )
DuckDBThenr3   s    r-   _thenDuckDBWhen._then   r9   r0   c                N   > [         U l         [        U l        [        TU ]  U5      $ r&   )r   r   super__call__)r*   r^   	__class__s     r-   r   DuckDBWhen.__call__   s!    	w##r0   )r   r   )rx   ztype[DuckDBThen])r^   r   rx   zSequence[duckdb.Expression])	r   r   r   r   r   r   r   r   __classcell__)r   s   @r-   r   r      s     $ $r0   r   r   c                      \ rS rSrSrg)r      r\   N)r   r   r   r   r   r\   r0   r-   r   r      s    r0   r   )0
__future__r   re   	functoolsr   	itertoolsr   typingr   r   r   duckdbr	   r   duckdb.typingr   r   narwhals._compliantr   r   r   narwhals._duckdb.dataframer   narwhals._duckdb.exprr   narwhals._duckdb.selectorsr   narwhals._duckdb.utilsr   r   r   r   narwhals._expression_parsingr   r   narwhals.utilsr   narwhals.dtypesr   narwhals.typingr   r   r    DuckDBPyRelationr"   
Expressionr   r   r\   r0   r-   <module>r      s    "         # %   ! - - ( 6 , > - & ; ' C F )%,0&v
/:v/F/FFGv
r$+V->->
JK $#V%6%6
BCZr0   